漏洞预警 链接,从中可以知道漏洞的一些细节

  1. 功能点:查看任务日历功能
  2. 漏洞参数:stop_time 参数和 start_time 参数
  3. 漏洞触发点:/index.php/work/task/dateList(可能,不确定)

    漏洞搭建

    使用 phpstudy 进行环境搭建,进入 www 目录下,下载源代码
    1. git clone https://gitee.com/rocklee2015/72crm.git
    phpstudy 需要设置 php 版本号 大于 5.6.0,此处使用 php 5.6.9
    image.png
    然后访问 http://127.0.0.1/72crm/index.php/admin/install/index.html 即可进入安装界面,正常安装即可

    设置管理员密码的时候要求输入强密码

image.png

漏洞复现

使用管理员登录后台,查看版本号,当前版本为 V9.3.2.191220
image.png
点击项目管理-任务日历
image.png
使用 burp 抓取数据包,可以看到请求路径为/72crm/index.php/work/task/dateList,跟 漏洞预警 中一样
image.png
判断是不是存在 sql 注入,添加单引号发送数据包,程序报错了,那么大概率是找对地方了
image.png
将请求数据包保存文件为 sql.txt 直接使用 sqlmap 跑

  1. python sqlmap.py -r sql.txt -v 3 --random-agent -p start_time --dbms=mysql --batch
  2. python sqlmap.py -r sql.txt -v 3 --random-agent -p stop_time --dbms=mysql --batch

image.png
image.png
ok,漏洞验证完成

代码分析

由于 72crm 是基于 thinkphp 5 开发的,那么可以找到对应的代码,位于application\work\controller\Task.php#dateList()
image.png
首先,得到数据包中的参数,也就是 start_timestop_time,然后调用application\work\model\Task.php#getDateList()进行查询
image.png