Burp Suiteでiphoneからのリクエストを改ざんしてみる


# はじめに
Burp Suiteを使ってiphoneからのリクエストを改ざんする
チュートリアルメモ的なものを残しておきます。

同じwifi環境内につながっているiphoneとpcでの実験になります。

※ あくまで、自分の所持している環境内での実験です。
※ githubにファイルを残しているため、同じ環境で実験ができます、やって見る方は自己責任でお願いしますm(_ _)m

簡単に手順まとめ
- Dockerでflaskのwebアプリケーション立ち上げ
- burp suiteでプロキシ立ち上げ
- iphoneにプロキシ設定
- 改ざんしてみる

の流れでやっていこうと思います。

# 環境

- macOS High Sierra 10.13.6
- Burp Suite Community Edition 2.1.04



# 導入

- burp suite
- docker

を使えるよう準備をお願いします。
説明は割愛します。

# 環境構築

githubに今回の実験用webアプリをあげているので
もってきます。

flaskの適当なwebアプリになります。

github url
https://github.com/yuucu/burp_test

```terminal:terminal
git clone https://github.com/yuucu/burp_test.git
```

# webアプリ立ち上げ

```terminal:terminal
cd burp_test
docker-compose up --build
```

ブラウザで`http://localhost:5000`にアクセスしてもらい、
掲示板アプリ()が見れれば立ち上げ成功です。


<img width="1031" alt="スクリーンショット 2019-12-31 21.03.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/8e7b1868-49a4-8d7e-50fa-78a6af5ecf06.png">


iphoneからのアクセスも確認しておきます。
※ pcとiphoneが同じネットワーク内にいないとアクセスできないです。

pcで他のターミナルを立ち上げ`ifconfig`でプライベートipアドレスを確認してください。

macならここにもプライベートipアドレスがのっています。

<img width="641" alt="スクリーンショット 2019-12-31 21.09.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/d9782913-6199-5c12-21ad-89b236c0d593.png">



iphoneのブラウザで`ipアドレス:5000(ポート番号)`でアクセスしてみると
以下の画面が見えるはずです。

<img width="375" alt="写真 2019-12-31 21 17 15.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/45458c7e-5ccb-3bbf-e20a-5785c4b7caa9.jpeg">

webアプリの立ち上げ確認を行いました。
終了する際はctrl-cでサーバをストップすれば大丈夫です。


# Burp Suiteでプロキシサーバの設定

Burpを立ち上げます。

Proxy -> Optionsをクリック。

<img width="1177" alt="スクリーンショット 2020-01-01 20.18.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/2827c245-321d-d8a0-4a8f-21aaacff33ea.png">


１つ選択して、Editをクリック。

<img width="643" alt="スクリーンショット 2020-01-01 20.20.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/8e7998bb-9ed9-7390-0645-0094e5b8b1d8.png">

All interfacesを選択肢し、Okをクリック。

<img width="691" alt="スクリーンショット 2020-01-01 20.22.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/36c411e1-ca6d-b4de-6517-bc7834e33d43.png">


先程のipアドレス:8080へアクセスで以下の画面が確認できたら
プロキシサーバが起動いています。

<img width="375" alt="写真 2020-01-02 1 49 58.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/d7ffc098-6596-696f-0791-a1668ebd3c88.jpeg">


# iphone プロキシ設定

iphoneの通信にプロキシサーバを介すように設定します。

infoボタンをタップ。

<img width="375" alt="写真 2020-01-02 2 01 16.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/2bd643ed-8e92-b43b-6e2b-eb28963b7954.jpeg">

プロキシを構成。

<img width="375" alt="写真 2020-01-02 2 01 55.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/7881c47c-d4c7-fc94-272a-8c9451267c9a.jpeg">


pcのプライベートipアドレスとポート番号8080を設定。

<img width="375" alt="写真 2020-01-02 2 02 18.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/327aede1-1f2b-441c-9ac9-6e213d50df79.jpeg">


保存で完了です。


# リクエスト改ざんしてみる

Burpで下のボタンが押し込まれていることを確認してください。
このボタンを押し込んでいるとき、通信をとめてburpで中身を確認するモードになっています。

<img width="1177" alt="スクリーンショット 2020-01-02 2.11.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/59300d85-c1bd-1cc5-86fc-175513777ad6.png">


この状態でiphoneから`pcのプライベートipアドレス:5000`へアクセスすると
pcのburpで以下になります。
通して良いので`Forward`をクリックしましょう。

<img width="1179" alt="スクリーンショット 2020-01-02 1.57.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/3d6997b5-ddb2-3f11-4ef2-8f3860667a02.png">




webアプリへアクセスできたら、iphoneから適当にメッセージを送ってみる。


<img width="375" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/6aeb8be7-b180-b7d2-b543-95947a3184bf.png">


burp側で中身を確認してみる。
postされている内容が確認できるので、値を書き換えてみる。

`Params`をクリックして、

<img width="1176" alt="スクリーンショット 2020-01-02 2.16.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/660f9d2f-edda-5169-90d5-3d660affc9d6.png">


`Value`を編集する。

<img width="1174" alt="スクリーンショット 2020-01-02 2.16.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/df61be0e-730f-80ac-69f1-d57af9b36a25.png">


編集が終わったら、`Forward`で通信を送る。

<img width="1176" alt="スクリーンショット 2020-01-02 2.16.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/be0bafae-bf5f-83a1-60b6-38d21836898d.png">



iphoneで送信後の画面を確認してみると、
送ったメッセージではなく、改ざんされたメッセが書き込まれていることが確認できる。


<img width="375" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/4ebe896f-f66e-6710-794e-733cb308942f.png">



# おわりに

駆け足で書いたので、少しわかり辛いところもあるかもしれませんが、ご了承ください。。


今回は、iphoneからの通信を改ざんしてみましたが、もちろんPCの通信もおなじようなことができます。

悪意を持ってやれば、ゲームのスコアを改ざんして送信したり、
他人の情報を改ざんして渡すことができてしまいます。

あくまで、自分の環境内での実験に留めるようお願いします。

※ 実験終了後、iphoneのプロキシ構成はオフにするよう忘れないでください。