HTTPリクエストの改ざんをBurp Suiteでやってみた
目次
セキュリティについて少し勉強しました
浅い知識なので、メモ程度です。
今日の記事でやることを軽くまとめると、自分のはてなブログの通信を傍受して、改ざんしてみようというものです。
こんな記事を投稿して、それを途中で改ざんして。
こうなります。
htmlのbodyを改ざんしました。
(記事の内容に「ほげほげほげ」と投稿されるはずが、「あなたのリクエストを改ざんしました」となっています)
これが他人のものだと不正アクセス禁止法に抵触します。
ということで本題へ。
リクエストとレスポンス
簡単な言葉のおさらいをすると...
- リクエスト:クライアント(自分のPCなど)からサーバーに送る通信
- レスポンス:サーバーからクライアントに返ってくる通信
今日はリクエストの内容を改ざんしてみます。
攻撃の分類で言うと、HTTPヘッダインジェクションなんかが近いと思います。(今回はヘッダではなくボディを改ざんしています)
使用するツール
Burp SuiteというHTTPプロキシを使用します。
このツールでHTTP通信を閲覧、改ざんをすることができます。
脆弱性診断で広く使われるツールで、他の有名なツールにfiddlerなどがあげられます。
重要なポイントとして、これはHTTP通信なら改ざん可能というところです。
HTTPS通信の改ざんは行えません。(基本的には)
HTTPSはSSLを使用して、通信内容を暗号化しているので、通信内容は見ることはできません。
また、サーバー証明書も持っていないので復号化もできませんし、しても改ざんが検知されます。
逆にHTTPは、通信は平文です。
なので、通信さえ傍受してしまえば、改ざんが可能というわけです。
HTTP通信を使ってるWebサービスないかなぁ
HTTPSは改ざんはできないので、HTTPを使用しているwebサービスを探していました。
すると、すごく身近にHTTP通信を使用しているWebサービスがありました。
はてなブログです笑
そう言えば、ブラウザのURLのところに鍵マークがありません。(むしろビックリマークがついています)
ということは、記事の更新等も平文で行われているわけですね(驚愕)
HTTP通信を使用しているのは、ECサイトみたいな金銭が発生するWebサービスではないので、そこまで厳格なセキュリティは求められないからでしょうか。
一昔前まえはLINEも平文でメッセージの通信を送っていたようなので、案外そんなもんなのかな。(現在はLINEの通信は暗号化していたはずです)
なので、自分のアカウントで新しい記事をアップロードし、そのアップロードしようとしている通信を改竄してみます。
成功すれば、記事の内容が変わってアップロードされることになります。
改ざんする手順
プロキシサーバーをたてます。
自PC(クライアント)>>>>> プロキシサーバー >>>>>> はてなサーバー
こんな感じに自分PCとはてなサーバーの間にひとつプロキシをはさみます。
このプロキシで、自PCから送られたレスポンスを傍受して、改ざんしてから、はてなサーバーに送りつけます。
Proxy SwitchySharp というChromeのアドオンを追加して、プロキシサーバーを立てます。
こうすることによってBurp Suiteは、立てたプロキシサーバーを通る通信をみることができます。
Proxy SwitchySharpの設定はこんな感じ。
プロキシサーバーの設定が終わったら、Burp Suiteを開いて、通信をみます。
HTTP historyにプロキシを通っている通信が表示されます。
Interceptをのタブの Intercept is off をクリックすると、インターセプトが開始されます。
インターセプトとは、一つの通信を傍受して、他の通信をせき止めている状態です。
傍受した通信は、テキストベースなので改竄し放題です。
こんな感じで、HTTP通信を傍受して改竄を行います。
はてなの記事を改ざんしてみる
適当にほげほげ、と入力して、Burp Suiteのインターセプト機能をオンにしてから公開します。
すると、リクエストをBurp Suiteでキャッチできます。
キャッチしたHTTP通信のheadとbodyを見るとこんな感じ。
title=%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92&body=%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92
一瞬、暗号化されているように見えますが、これはただのエンコードです。
ちなみにURLエンコード。
URLでは、日本語などを送信できないのでURLエンコードという方法でエンコードします。
エンコードなので、もちろんデコードが可能です。
Web便利ツール/URLエンコード・デコードフォーム/処理完了 - TAG index
ここでデコードすると...
%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92 #デコード結果 ほげほげ
なので、「あなたのリクエストを改ざんしました」という文章をURLエンコードして、傍受した通信のbody部にはっつけます。
body部の編集が終わったら、Burp Suiteで送ります(フォワード)。
すると...
改ざん完了ということになります。