皆さんこんにちは。
今日はBurpSuiteの特徴的な機能である、
Intruderという機能を使ってアカウントIDの値を変えて送信してみます。
HTTP historyから対象とする通信を選択する
前回の続きになりますが、BurpSuiteでキャプチャした通信を表示する、
HTTP historyというタブからターゲットとする通信内容を選択します。
右クリックすると「Send to Intruder」という表示が出てきます。
こちらをクリックしてみてください。
Intruderに情報が転送されています。タブを開いてみてください。
2番めのタブにIDを変えて色々試してみたいコードが表示されています。
次に右側に表示されている「Clear $」をクリックします。
先程薄い水色で選択されていた変数部分が通常の値に変わりました。
Intruderでペイロードデータを改ざんしてみよう
今回の目的はAccount IDの部分を1から100まで順番に試してみて、
SuperAdminUserを特定したいと考えています。
人力で1から100まで順番に数字を変えて試しても良いのですが、
BurpSuiteの機能を駆使してできるだけかんたんに試してみたいと思います。
IntruderのPositionタブを開いたらid=1となっている部分だけ再度数字のみ選択し、
右側に表示されている「Add」をクリックしましょう。
すると、また数字の部分が薄い水色で選択されるようになります。
次にPayloadタブを開いてみます。以下のような画面が表示されます。
今回は1~100までの数字を順番に入れてみるという検証なので、
Payload Opitionに使用する数字を追加します。
Bash等のシェルで1から100までの数字を表示させます。
for i in `seq 1 100`; do echo $i; done
こちらをコピーして先程のBurpSuiteのPayload OpitionsにPasteしてください。
以下のように数字が入ったらOKです。
次に上部に表示されている「Start Attack」をクリックします。
以下のような画面が表示されることがありますが問題ありません。
このように順番にIDを変えてサーバーにアタックしてくれます。
StatusはHTTPレスポンスの成功を表す数字です。
Lengthは返答の長さを表す数字です。
今回はID=1だった34322 admin admin@megacorp.comでは、
Upload機能を利用することができなかったため、
SuperAdminユーザーのIDを特定することを目的としています。
もし、SuperAdminユーザーであれば当然ですが、
通常のユーザーとはまた別の回答が帰ってくるはずですから、
今回はこのLengthに注目してID=1のときのレスポンスとは異なる長さが帰ってくるIDが怪しいと推測します。
並び替えてみると3826という一番長いLengthを持つIDがあります。
このIDのときのレスポンスを見るためにブラウザで開いてみましょう。
見てみたいRequestを選択、右クリックで「Request in brouser」、
{In current session」をクリックします。
表示されるURLをコピーしてブラウザに貼り付けます。
するとID=30のときのユーザーがアクセスした際に表示されるページが表示されます。
http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=30
ここでAccess IDが判明したのですが、
まだこのSuperAdminユーザーでログインできたわけではありません。
InterceptをONにしてAccess IDを改ざんする
先程もご紹介したようにBurpSuiteにはプロキシとしての機能があります。
これを使うとブラウザからのリクエストを修正した上で、サーバーに送ることができます。
早速、先程OFFにしたBurpSuiteのIntercept機能をオンにします。
その上で再度、Uploadページを更新してみます。
Uploadsページへのリンクはメニューバーに用意されていますが、
なぜかうまく動作しなかったためHTMLの要素からURLをコピペしました。
<li class="nav-item">
<a class="nav-link" href="/cdn-cgi/login/admin.php?content=uploads">Uploads</a></li>
すると、BurpSuiteのProxyタブ下のInterceptタブに送信されるはずの、
リクエストが表示されているはずです。
ここですでにURL上のIDは30になっていますが、
Access IDについては最初にログインした通常ユーザーになっています。
そのためこのCookie userのIDをSuperUserのものに置き換えてみます。
Cookie: user=86575; role=admin
置き換えたらForwardを押します。
するとブラウザでUploadページが表示されます。
このようにしてSuperUserのセッションIDを入手したことで、
Upload機能を使うことができるようになりました。
次はリバースシェルを用いて攻撃先サーバーの権限を取得します!