S2-057の検証をやってみた

セキュリティ

2018/08/22に「Apache Software Foundation」からS2-057(Apache Struts 2 の脆弱性)の情報が公開されました。

今回は巷で話題のこの脆弱性の検証をやります。
※なお8/25現在OSコマンドの実行までは検証できていません。

S20-057の詳細

IPAからの情報は以下です。

Apache Software Foundation が提供する Apache Struts は、Java のウェブアプリケーションを作成するためのソフトウェアフレームワークです。
Apache Struts 2 には、以下の条件の両方を満たす場合に、リモートで任意のコードが実行される脆弱性(CVE-2018-11776)が存在します。・alwaysSelectFullNamespace を true に設定している場合
・Struts設定ファイルに、オプションのnamespace属性を指定しないか、ワイルドカードネームスペースを指定する “action”タグまたは “url”タグが含まれている場合
本脆弱性が悪用された場合、遠隔の第三者によって、サーバ上で任意のコードを実行される可能性があります。
参考:https://www.ipa.go.jp/security/ciadr/vul/20180823-struts.html

少し前に「S2-045」の検証環境を構築したばかりですので、その環境がそのまま使用することができそうです。

S2-057の準備

まずは「struts-actionchaining.xml」を書き換える必要があります。

場所は以下にあります。

/struts2-showcase/WEB-INF/classes/struts-actionchaining.xml
/struts2-showcase/WEB-INF/src/java/struts-actionchaining.xml

ファイル内容については以下のように書き換えます。

<struts>
    <package name="actionchaining" extends="struts-default" >
        <action name="actionChain1" class="org.apache.struts2.showcase.actionchaining.ActionChain1">
            <result type="redirectAction">
                <param name = "actionName">register2</param>
            </result>
        </action>
    </package>
</struts>

上記で準備は完了です。

まずは以下のようなURLを入力し足し算の結果が返ってくるか確認してみましょう。

http://192.168.70.135:8080/struts2-showcase/${(123+123)}/actionChain1.action

すると以下のとおり、足し算の結果である「246」が返ってきていることがわかります。

さて次に「S2-045」と同じようにOGNLによるコマンド実行をと行きたいんですが、8/25現在コマンドの実行まで確認できていません。

ツイッターでもやはりOGNLでのコマンドの実行まで出来ている人はいない感じがしますね。

中国のサイトを引き続き観測していきますので、情報があれば共有していただけると助かります。
※中国のサイトを見ていると「calc」が実行されている様子のキャプチャがあるんですが、あれは何なんでしょうね・・・

最後に

S2-057という新しいstruts2の脆弱性が公開されました。

使用している方はすぐにアップデートを行いましょう。いつちゃんと動作するPoCが出てくるかわかりません。

上記に記載のとおり、最新版の「2.3.35」、「2.5.17」にしてください。

最新の情報が判明次第追記します。

不明点や要望やこういったこともやって欲しいとの要望があれば、お問い合わせページやコメント、ツイッターからでも結構ですので、気軽にご連絡ください。

コメント