Apache Struts2のprefixパラメータ処理の不備により任意のJavaコードが実行される脆弱性(CVE-2013-2251)に関する検証レポート
2013/07/23
NTTデータ先端技術株式会社
辻 伸弘
小松 徹也
【概要】
Apache Struts 2に、任意のJavaコードが実行される脆弱性が存在します。
この脆弱性は、DefaultActionMapper におけるprefixパラメータ処理時において、値をOGNL式(※)として評価するため、任意のJavaコードを実行可能です。
この脆弱性を悪用して、攻撃者はターゲットホスト上にて、APサーバの動作権限で任意のJavaコードの実行が可能です。
今回、このApache Struts 2のprefixパラメータ処理の不備により任意のJavaコードが実行される脆弱性(CVE-2013-2251)の再現性について検証を行いました。
※Object Graph Navigation Language
Javaオブジェクトのプロパティへアクセス時に利用する式言語
Apache Struts2のprefixパラメータ処理の不備により任意のJavaコードが実行される脆弱性(CVE-2013-2251)に関する検証レポート
【影響を受けるとされているシステム】
影響を受ける可能性が報告されているのは、次の通りです。
- Apache Struts 2.0.0から2.3.15
【対策案】
この脆弱性が修正された最新版Apache Struts2にアップデートしていただく事を推奨いたします。この脆弱性は、2.3.15.1以降にて対策済みです。
Apache Struts Releases
http://struts.apache.org/downloads.html
弊社の検査において、一般ユーザ権限でサーバを動作させていないシステムも見受けられます。この脆弱性は、APサーバの動作権限を奪取されることから、管理者権限ユーザでAPサーバを動作させている場合、システムへの影響範囲が広がります。そのため、運用上必要かつ適切な権限にて動作させることを推奨します。
【参考サイト】
CVE-2013-2251
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-2251
Apache Struts DefaultActionMapper Redirection and OGNL Security Bypass Vulnerabilities
http://secunia.com/advisories/54118
【検証イメージ】
【検証ターゲットシステム】
- Debian 6.0.7 上のApache Tomcat 7.0.42、Apache Struts 2.3.15を利用したWebアプリケーション
【検証概要】
ターゲットシステムに、細工したHTTPリクエストを送信し、Strutsを利用したアプリケーションを介して、APサーバの動作権限で任意のJavaコードを実行させます。
今回の検証に用いたコードは、ターゲットシステムから特定のサーバより、プログラムのダウンロードを行なった上で、そのプログラムを用いて、特定サーバのポートへコネクションを確立させるように誘導し、システムの制御を奪取するものです。
これにより、リモートからターゲットシステムが操作可能となります。
* 誘導先のシステムは Windows 7 です。
【検証結果】
下図は、攻撃後の誘導先のシステム画面です。
下図の赤線で囲まれている部分の示すように、誘導先のコンピュータ(Windows 7)のターミナル上にターゲットシステム(Debian 6.0.7)のプロンプトが表示されています。
黄線で囲まれている部分の示すように、ターゲットシステムにおいて、コマンドを実行した結果が表示されています。これにより、ターゲットシステムの制御の奪取に成功したと言えます。
PDF版のダウンロードはこちらから PDF版
※ 各規格名、会社名、団体名は、各社の商標または登録商標です。Tweet