
CVE 2021-44228 概念実証。Log4Shell は、脆弱なバージョンの Log4J を使用するサーバーに対する攻撃です。
Apache Log4j2 2.0-beta9 から 2.15.0 まで(ただし 2.12.2、2.12.3、2.3.1 は除く)
設定、ログメッセージ、およびパラメータで使用される JNDI 機能は、攻撃者が制御する LDAP およびその他の JNDI 関連エンドポイントから保護しません。メッセージルックアップ置換が有効な場合、ログメッセージまたはログメッセージパラメータを制御できる攻撃者は、LDAP サーバーからロードされた任意のコードを実行できます。log4j 2.15.0 以降、この動作はデフォルトで無効になっています。バージョン 2.16.0(および 2.12.2、2.12.3、2.3.1)以降、この機能は完全に削除されました。この脆弱性は log4j-core に固有のものであり、log4net、log4cxx、その他の Apache Logging Services プロジェクトには影響しないことに注意してください。
その結果、CVSS v3 スコアは 10.0(最大スコア)と評価されています。
幸いなことに、これはゼロデイ攻撃です。開発者はこれをゼロデイで修正しました。
Apache Log4j プロジェクトは、最も広く導入されているオープンソースソフトウェアの1つであり、Java アプリケーションにロギング機能を提供します。
まず、この PoC は次のものを使用します:
http_server には、MyExploit.java と、そのコンパイル済み .class ファイル MyExploit.class の2つのファイルがあります。
💡リマインダー: Java クラスをコンパイルするには javac namefile.java です :)
次のコマンドを使用して、HTTP サーバーをその場で実行できます: python -m http.server [PORT] この場合
marshalsec のリポジトリ 詳細はこちら
christophetd のリポジトリ 詳細はこちら
通常、リクエストヘッダー内のターゲットフィールドは User-agent ですが、この PoC では X-Api-Version が使用されます。
この PoC は、脆弱なサーバー上で コマンド実行 を起動し、tmp フォルダーに 「pwned_by_pierpaolosestito_dev」という名前のファイルを作成します。 MyExploit.java には、攻撃者が リバースコード実行 を実行し、リバースシェル を取得することを可能にする悪意のあるペイロードも含まれています。
💡ヒント: docker exec [container_id] ifconfig を実行すると、それがローカルサブドメインにない ランナー であることに気付くでしょう。RCE を実行するには、RCE コマンドの文字列を含む MyExploit.java 内の IP を変更できます。Docker のランナーはプライベート IP で接続できないため、パブリック IP が必要です。これは ポートフォワーディング で取得できます。