漏洞预警 链接,从中可以知道漏洞的一些细节
- 功能点:查看任务日历功能
- 漏洞参数:stop_time 参数和 start_time 参数
- 漏洞触发点:/index.php/work/task/dateList(可能,不确定)
漏洞搭建
使用 phpstudy 进行环境搭建,进入 www 目录下,下载源代码
phpstudy 需要设置 php 版本号 大于 5.6.0,此处使用 php 5.6.9git clone https://gitee.com/rocklee2015/72crm.git
然后访问 http://127.0.0.1/72crm/index.php/admin/install/index.html 即可进入安装界面,正常安装即可设置管理员密码的时候要求输入强密码
漏洞复现
使用管理员登录后台,查看版本号,当前版本为 V9.3.2.191220
点击项目管理-任务日历
使用 burp 抓取数据包,可以看到请求路径为/72crm/index.php/work/task/dateList
,跟 漏洞预警 中一样
判断是不是存在 sql 注入,添加单引号发送数据包,程序报错了,那么大概率是找对地方了
将请求数据包保存文件为 sql.txt 直接使用 sqlmap 跑
python sqlmap.py -r sql.txt -v 3 --random-agent -p start_time --dbms=mysql --batch
python sqlmap.py -r sql.txt -v 3 --random-agent -p stop_time --dbms=mysql --batch
代码分析
由于 72crm 是基于 thinkphp 5 开发的,那么可以找到对应的代码,位于application\work\controller\Task.php#dateList()
首先,得到数据包中的参数,也就是 start_time
和 stop_time
,然后调用application\work\model\Task.php#getDateList()
进行查询