ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

HTTPリクエストの改ざんをBurp Suiteでやってみた

目次

セキュリティについて少し勉強しました

浅い知識なので、メモ程度です。

今日の記事でやることを軽くまとめると、自分のはてなブログの通信を傍受して、改ざんしてみようというものです。

こんな記事を投稿して、それを途中で改ざんして。

f:id:doz13189:20170602221738p:plain

こうなります。

f:id:doz13189:20170602221838p:plain

htmlのbodyを改ざんしました。

(記事の内容に「ほげほげほげ」と投稿されるはずが、「あなたのリクエストを改ざんしました」となっています)

これが他人のものだと不正アクセス禁止法に抵触します。

ということで本題へ。

リクエストとレスポンス

簡単な言葉のおさらいをすると...

  • リクエスト:クライアント(自分のPCなど)からサーバーに送る通信
  • レスポンス:サーバーからクライアントに返ってくる通信

今日はリクエストの内容を改ざんしてみます。

攻撃の分類で言うと、HTTPヘッダインジェクションなんかが近いと思います。(今回はヘッダではなくボディを改ざんしています)

使用するツール

Burp SuiteというHTTPプロキシを使用します。

portswigger.net

このツールでHTTP通信を閲覧、改ざんをすることができます。

脆弱性診断で広く使われるツールで、他の有名なツールにfiddlerなどがあげられます。


重要なポイントとして、これはHTTP通信なら改ざん可能というところです。

HTTPS通信の改ざんは行えません。(基本的には)

HTTPSSSLを使用して、通信内容を暗号化しているので、通信内容は見ることはできません。

また、サーバー証明書も持っていないので復号化もできませんし、しても改ざんが検知されます。


逆にHTTPは、通信は平文です。

なので、通信さえ傍受してしまえば、改ざんが可能というわけです。

HTTP通信を使ってるWebサービスないかなぁ

HTTPSは改ざんはできないので、HTTPを使用しているwebサービスを探していました。

すると、すごく身近にHTTP通信を使用しているWebサービスがありました。

はてなブログです笑


そう言えば、ブラウザのURLのところに鍵マークがありません。(むしろビックリマークがついています)

ということは、記事の更新等も平文で行われているわけですね(驚愕)

HTTP通信を使用しているのは、ECサイトみたいな金銭が発生するWebサービスではないので、そこまで厳格なセキュリティは求められないからでしょうか。

一昔前まえはLINEも平文でメッセージの通信を送っていたようなので、案外そんなもんなのかな。(現在はLINEの通信は暗号化していたはずです)


なので、自分のアカウントで新しい記事をアップロードし、そのアップロードしようとしている通信を改竄してみます。

成功すれば、記事の内容が変わってアップロードされることになります。

改ざんする手順

プロキシサーバーをたてます。

自PC(クライアント)>>>>> プロキシサーバー >>>>>> はてなサーバ

こんな感じに自分PCとはてなサーバーの間にひとつプロキシをはさみます。

このプロキシで、自PCから送られたレスポンスを傍受して、改ざんしてから、はてなサーバーに送りつけます。


Proxy SwitchySharp というChromeのアドオンを追加して、プロキシサーバーを立てます。

こうすることによってBurp Suiteは、立てたプロキシサーバーを通る通信をみることができます。

Proxy SwitchySharpの設定はこんな感じ。

f:id:doz13189:20170602225625p:plain


プロキシサーバーの設定が終わったら、Burp Suiteを開いて、通信をみます。

f:id:doz13189:20170602225757p:plain

HTTP historyにプロキシを通っている通信が表示されます。

Interceptをのタブの Intercept is off をクリックすると、インターセプトが開始されます。

インターセプトとは、一つの通信を傍受して、他の通信をせき止めている状態です。

傍受した通信は、テキストベースなので改竄し放題です。

こんな感じで、HTTP通信を傍受して改竄を行います。

はてなの記事を改ざんしてみる

f:id:doz13189:20170602221738p:plain

適当にほげほげ、と入力して、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サービスもあります。

Web便利ツール/URLエンコード・デコードフォーム/処理完了 - TAG index

ここでデコードすると...

%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92

#デコード結果
ほげほげ

なので、「あなたのリクエストを改ざんしました」という文章をURLエンコードして、傍受した通信のbody部にはっつけます。

body部の編集が終わったら、Burp Suiteで送ります(フォワード)。

すると...

f:id:doz13189:20170602221838p:plain

改ざん完了ということになります。

まとめ

HTTP通信は平文で送っているので、傍受されている危険性を考えなければいけないです。

なので、フリーWiFi(スタバやマクド等)でHTTP通信を行う際は、傍受されているものとしたほうが良いですね。

傍受されても問題ない程度の通信しかおこなっちゃいかんということですね。

以上終わり。