很久没有给各位更新文章,也感谢这段时间团队里其他成员的努力,圆满完成了年前的发展目标,后续我们还会将给各位带来更多优秀技术内容。
今天的内容是一个代码审计的内容,由于提交以后厂商已经三天了也没有给我回复也没有处理所以这里我就暂且公布审计过程及利用方式,具体的CMS我这里就先不公开了。
漏洞文件:/admin/deal.php
这是一个文件删除函数,可以看到开发人员限制了删除目录,只能删除
$dir[0] = 'data/backup/';
$dir[1] = 'images/';
$dir[2] = 'source/';
这三个目录下的内容,到这里是完全没有问题的,但是问题出在了后面,验证目录的方式。
这里用的是按字符长度来匹配目标目录。
也就是说提交的所有字符串中,只匹配前面是不是
data/backup/
images/
source/
如果是则就可以删除,所以这里如果提交类似于
source/../index.php
Images/../../../xxx.php
就可以删除任意目录下的文件。
找到了漏洞现在就要找调用函数的入口了。
既然这样咱们就从Admin.php文件入手。
可以看到main()函数,然后进行追踪
只要$global[‘url’]不为空就包含'admin/'.$global['channel'].'.php'
暂且先不管别的先看一下$global[‘url’]是什么
在这里找到了真相。
通过获取query_string来对$global[‘url’]进行赋值,然后以”.”作为分隔符将处理过得值传给$global[‘channel’],知道这一点后我们就知道了如何调用了。
浏览器访问
http://localhost:81/test/shenji/6/admin.php?deal.html
成功访问到了漏洞文件
使用burp进行抓包捕获
领取专属 10元无门槛券
私享最新 技术干货