3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

INIAD(東洋大学情報連携学部)Advent Calendar 2019

Day 13

大学のWebアプリが使いづらい?そうだハックしよう

Posted at

大学のWebアプリが使いづらい?

大学内のサークル部室には、操作可能なスイッチがありません。(一応天井にエアコンのリモコンはありますが)
じゃあどうやって制御するのかというと、Webアプリが用意されているわけですがまぁ使いにくい(SPAとかになってないので、普通のページ遷移で時間がかかる)

というわけで、ネイティブで書き出すために仕様を割り出してみたいと思います。
今回はスマートフォンで開いたWebアプリを解析します。(iPhoneを前提に説明します)

HTTPデバッガ

Webアプリ、ということは、通信のやり方で真っ先に思いつくのはJavaScriptを使ったものではないでしょうか。
そこで、デバイスが行っている通信をキャプチャするソフトを用意します(PCのChromeの開発者コンソールでも似たようなことができます)
Wiresharkは有名ですが、昨今の通信はだいたい暗号化されているので読めず。
Charlesを使用します。

Charlesで自己署名証明書を発行し、スマートフォンなどに噛ませることで、途中でCharlesが復号化→再暗号化してくれるため、スマートフォンから見れば暗号化されていますが、HTTPSの通信も読める状態でキャプチャすることができます。
ただし、SSL Pinningが行われている場合は、アプリ側で利用できる証明書が制限されているため、失敗するようです。

Charlesは有料で、だいたい5000円ちょっとくらいですが、後述する理由により、それ以上の価値があると思います。
是非買いましょう。(無料でも使えますが、30分に一度終了させなければいけません)

準備

CharlesをインストールしたPCのIPアドレスを控えておきます。
このとき、ターゲットのスマホとCharlesの入ったPCは同じネットワーク内にいてアクセス可能である必要があります。

設定>Wi-Fi>「i」>プロキシを構成で、オフになっているものを手動にします。
サーバーは、PCのIPアドレス、ポートは標準では8888です。
認証は不要なので、このまま閉じます。

IMG_0728.PNG IMG_0730.PNG

次に、ルート証明書のインストールを行います。
Safariで http://chls.pro/ssl にアクセスすると、構成プロファイルのインストールが始まるので、インストールします。
IMG_0731.PNG
IMG_0732.PNG

iOS10以降、証明書信頼設定を変更しないと証明書が信頼されないままエラーになるので変更します。
設定>一般>情報>証明書信頼設定の中で「ルート証明書を全面的に信頼する」のトグルをオンにします。
IMG_0736.PNG

Charles側で、SSLのキャプチャの設定をします。
スクリーンショット 2019-12-17 12.11.33.png
Proxy>SSL Proxy Settingsを開く

スクリーンショット 2019-12-17 12.12.29.png 「Enable SSL Proxying」にチェックを入れて「Add」をクリック スクリーンショット 2019-12-17 12.13.01.png 全てのホストとポートでキャプチャするので、ワイルドカードを指定して「OK」

この先の通信についてキャプチャが行われます

スクリーンショット 2019-12-17 12.16.41.png

早速、使ってみましょう!

スクリーンショット 2019-12-17 12.20.16.png

いくつか引っかかりましたね!

スクリーンショット 2019-12-17 12.21.45.png

WebSocketで、それらしき通信が行われているのが確認できます。
後は、適当なクライアントで通信すれば、お好みの手段でWebアプリをラッピングすることができます🎉

スクリーンショット 2019-12-17 12.25.01.png

ちなみに、cURL構文でリクエストをコピーすることができ、ターミナルなどにペーストしてあげるとサクッと応答を確認できます。

スクリーンショット 2019-12-17 12.26.15.png

下半分の画面で、通信の詳細を確認できます。

まとめ

ただ単に、他のアプリの通信を解析するだけでなく、アプリ開発者にとって、アプリが正しい通信をしているのかを確認できれば、問題の切り分けになります。
ブレークポイント設定して・・・とか面倒な作業をせずともちょろっとアプリを触っていれば自動でどこで引っかかっているかを収集できるので本当に有料でもそれ以上の価値があると思います。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?