S2-048(CVE-2017-9791)を検証してみる

Struts2の脆弱性がアナウンスされていたので検証してみました。またRCEみたいです。
https://cwiki.apache.org/confluence/display/WW/S2-048

既にというかcwikiの該当のページが公開される前からチラホラと噂が流れてて公開とほぼ同じかそれより先のタイミングで攻撃コードも出回りはじめていたのでなんだかなーという気持ち。

ちなみにStruts 2.3.32で検証しました。

偉い人が怖いので一部関係無い箇所も黒く塗りつぶしていますがidコマンドの実行結果が帰ってきていることが分かるかと思います。

上記のリンク先にも記載されていますが、今回の脆弱性はS2-045のときのようにStruts2を使用していれば存在しないページにも効くわけではなく、Struts 1 pluginを利用している場合のみ脆弱性が存在しているようです。

簡単にまとめると脆弱性が存在するのはStruts 2.3.xを使っていて且つStruts 1 pluginを利用している場合のみということになりそうです。

なお現段階(7月8日 AM 6:00)では修正バージョンは正式にはリリースされていませんが、Struts2.3.33がGitHubには公開されていますしコミットログを見ると2週間ほど前に修正されてるようなのでアップデートしても問題ないか検証はできるかもしれません。
https://github.com/apache/struts/tree/STRUTS_2_3_33

アプリケーションの実装の問題なのでおそらくパッチは出ないか出たとしても修正されるのは付属しているサンプルアプリケーションになると思います。

<追記>
自分はTocat7の上でStruts2.3.32を動かして検証しましたが、検証した際にTomcatのログを確認したところ以下のようなエラーが吐き出されていました。
アプリケーションの実装や使用するミドルウェア、実行されるOGNL式によってエラーの内容は変わると思いますが、同じような環境で自分が試したのと同じ攻撃コードが実行された場合は同じようなエラーログが吐かれると思うので注意が必要です。

/usr/local/tomcat7/logs/localhost.2017-07-08.log

  • このエントリーをはてなブックマークに追加