初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は前回紹介した総受けサイト「XVWA」に対してOSコマンドインジェクションを仕掛けてみたときのことをまとめてみようと思う。
今回はXVWAちゃんに攻撃を仕掛けるのでKaliを使用しなくてもOSコマンドインジェクションはできちゃいます。
さて、XVWAちゃんは一体どんな反応を見せるのか...乞うご期待...
※前回の記事は以下になります。
※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。
目次
- OSコマンドインジェクションとは?
- ツール紹介
- BurpSuite
- FoxyProxy
- 環境構築
- OSコマンドインジェクション実践
- まとめ
OSコマンドインジェクションとは?
IPAさんの記事を参考にすると以下のように説明されている。
ウェブアプリケーションによっては、外部からの攻撃により、ウェブサーバのOSコマンドを不正に実行されてしまう問題を持つものがあります。このような問題を「OSコマンド・インジェクションの脆弱性」と呼び、問題を悪用した攻撃手法を、「OSコマンド・インジェクション攻撃」と呼びます。
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_2.html
要するに公開サーバに対してコマンド実行させる攻撃ってことだ!
わりかしコマンド打てちゃえば何でもできちゃうので、恐ろしい攻撃である。
ツール紹介
今回OSコマンドインジェクションをするために使用するツールを紹介する。
BurpSuite
このツールはWebサイトの脆弱性検査で使用するツールの1であるローカルプロキシになるツールです。
こいつをXVWAとブラウザの間に挟んで様々なHTTPリクエストをXVWWAちゃんに叩き込む。
※私はお金がないので「Burp Suite Community Edition」という無料版を使用します。
FoxyProxy
FireFoxブラウザの拡張機能で、簡単にプロキシ設定を行えるツールである。
※今回使用するブラウザはFireFoxです。
環境構築
BurpSuite初期設定
まずBurpSuiteをダウンロードしていく。以下のURLからダウンロードします。自身にあった環境のものを選択してください。
※私はWindowsです。
Kaliの場合はコマンドでsudo apt install burpsuite
要れることが可能です。
インストールが完了したらBurpSuiteを立ち上げて、以下の手順で設定をしてください。
①「Temporary project」→「Use Burp defaults」の順に選択。
②「Proxy」タブをクリック→「Options」タブをクリック。
③上記図でいう「127.0.0.1:8080」を選択→「Edit」をクリック。
④「Bind to port」のポート番号を自身の好きなポートへ設定。
※8080でもいいですが、ここら辺のポートはよく使うので別ポートでもいいのかなと。
※私は「8081」にしました。
⑤「Proxy」タブをクリック→「Intercept」タブをクリック
⑥上記青いボタンの「Intercept is on」をクリックし、「Intercept is off」へ変更
※「Intercept is on」の設定だとローカルプロキシで通信を止めてしまう。
FoxyProxy初期設定
続いてFoxroxyをダウンロードしていく。
以下の手順でダウンロードし、設定をしてください。
①FireFoxのブラウザメニューから「アドオンとテーマ」を選択します。
②上記検索欄「アドオンを探す」から「FoxyProxy」を検索する。
③「FoxyProxy Standard」をクリックし、「+ Firefoxへ追加」をクリック。
④ダウンロード後、右上に表示されるFoxyProxy Standardのアイコンをクリック
⑤「Options」を選択。
⑥「Add」を選択。
⑦下記に表示される「Title」に名前を記載し、右側の星マークに各種設定値を入力。「Save」する。
※私の環境では「localhost」と「8081」を設定。
※設定後は以下のように「Title」で設定した名前を冠ったアイコンが表示されます。
⑧「http://127.0.0.1:<設定したPort番号>」へアクセス。
※私の場合はPort番号は「8081」です。
⑨上記ページの「CA Certificate」をクリック、証明書をダウンロード。
続いて、ダウンロードした証明書を読み込んでいきます。
⑩FireFoxのブラウザメニューから「設定」を選択します。
⑪「プライバシーとセキュリティ」えおクリックし、下部の「証明書」項目の「証明書の表示」をクリック
⑫「インポート」をクリックし、ダウンロードした証明書を選択。
これでサーバ証明書がダウンロードできたのでWarningが出ないはず。
OSコマンドインジェクション実践
さて、お待ちかねのOSコマンドインジェクションの時間だ。
XVWAへアクセスしていくのだが、今回は前項で設定したFireFoxからBurpSuiteを通してアクセスしていく。
まずXVWAサイトの「Attack」欄の「OS Command Injection」をクリックしてみよう。以下のページが表示されるはずだ。
上記ページの入力ホームにIPを打ち込むとそのIPへPingを打っているような表示がされるとおもうので、やってみよう!
※以下図はローカル環境に別のホストを立ててそこへPingしている様子である。
このことから以下のようなコマンドを打っている可能性が考えられる。
ping -c 3 <IPアドレス>
今回は以下のように「echo」コマンドを渡してインジェクションをしてみようと思う。
ping -c 3 <IPアドレス>; echo FUCKYOU
ここで登場するのがBurpSuiteさんだ。
「Proxy」タブの「HTTP history」タブを見てみよう。
このようにGETメソッドを飛ばした履歴があるはずだ。その履歴を右クリックし、「Send to Repeator」をクリックしよう。
続いてオレンジ色に光っている(はず)「Repeator」タブをクリックしてみたら、以下のようにRequestが見えるはずだ。
Requestの「target」クエリに注目しよう。ここに初めに試したIPが記載されているはずだ。
要するにこの「target」クエリにIPを入れてPingを実行するsystem関数あたりに渡していると考えられる。
じゃあこの「target」クエリに「echo」コマンドを渡してあげようじゃないか!
※このBurpSuiteのRequestに直接書き込めるので書いてみよう。
「target」クエリを書き換えて「Send」ボタンを押してみよう。
上記のようにクエリを書き換えて渡してあげると赤枠部分のように「FUCKYOU」が「echo」されているのがわかる。
ちなみにブラウザで見るとこんな感じである。
このように意図しないコマンドを打ち込めていることがわかる。
OSコマンドインジェクションの成功である。
怖い。。。
参考としてこのページのソースを見ると、クエリの値をそのままshell_exec関数に渡していることがわかる。
まとめ
第五回の投稿はいかがだったでしょうか?
XVWAちゃんにBurpSuiteを使った簡単なOSコマンドインジェクションの方法を紹介しました。
今回もセキュリティエンジニアの皆さんの助けになればなと思います。