web applicationpenetrationtest その2
TRANSCRIPT
1 /31
Web Application Penetration Testその 2 問題 + 解答長谷川
2 /31
1. Web アプリのペネトレーションテストのスキルアップペンテスト(侵入テスト)の MOOC サイトの問題をガンガン解いていきます。http://www.pentesteracademy.com/その 1.pptx Challenge 1 ~ Challenge 7 : 認証突破その 2.pptx Challenge 8 ~ Challenge 11 : セッション ID 突破その 3.pptx Challenge 12 ~ Challenge 15 : トラフィック解析その 4.pptx Challenge 16 ~ Challenge 19 : HTML injectionその 5.pptx Challenge 20 ~ Challenge 36 : XSSその 6.pptx 以降 Unvalidated Redirects 、 CSRF
つづく
目的
3 /31
ツール、言語◦ ブルートフォース特化系
Hydra ★会社で使うと多分怒られる◦ プロキシ系
Burp Suite ★会社で使うと多分怒られる◦ スクリプト言語系
Python ★使い方次第 問題 & 解き方 & 解答
もくじ
4 /314
問題Pentester Academy の無料の問題からいくつか出題ツール使うか、プログラミングして解いてください。ツール: Hydra 、 Metasploit 、 IronWASP 、 ZAP などなど、、Python とかでも解けます。
5 /31
プロキシ型の WAP ツール。◦ Burp Proxy
ブラウザ -target アプリケーション間の MITM 。 Request の修正等ができる。◦ Burp Spider
トラフィックの調査、脆弱性の発見等。◦ Burp Web Vulnerability Scanner
脆弱性のチェック。◦ Burp Sequencer
シーケンス番号のランダム性のチェック。などなど 便利なところ
◦ 勝手にチェックしてくれる。大体何でもできる。 イマイチなところ
◦ フリー版は機能制限あり。
Burp Suite
画面
6 /31
パスワードクラッカー。◦ http 、 telnet 、 ftp 、 mysql 、、、等に対応。◦ http://www.thc.org/thc-hydra/
基本的な使い方# hydra –l ユーザー名 – p パスワード server protocol path# hydra –L ユーザー名リスト .txt –P パスワードリスト .txt server protocol pathprotocol の例: ftp ftps http[s]-{head|get} http[s]-{get|post}-form
便利なところ◦ 認証方式とかをある程度勝手に認識してくれる。高速。
イマイチなところ◦ 柔軟性に欠ける。
Hydra
7 /31
Python 3 を使いました。 使ったライブラリ
◦ Requests ⇒ http 通信用◦ Hashlib ⇒ MD5 の計算用◦ base64 ⇒ Base64 の計算用◦ Itertools ⇒ パスワード文字列生成
Python
(使用例)def makePwList(str, n): pwList = [] a = list(itertools.product(str, repeat = n)) for b in a: pwList.append(''.join(b)) return pwList
def mymd5(str): return hashlib.md5(str.encode()).hexdigest()
8 /31
情報収集: Reconnaissance◦ 情報を収集する。(データフロー、フィンガープリント、ソース)
Wireshark 、 Blind Elephant 、 httprint
マッピング: Mapping◦ ターゲットアプリケーションの検査。
Burp Spider 、 SprAJAX 、 WebScarab
発見: Discovery◦ ターゲットアプリケーションの脆弱性の発見。
エクスプロイト: Exploit◦ 脆弱性を実証する。
問題の解き方
SANS SEC542 より
9 /319
問題を解いていくChallenge 8 ~ Challenge 11
10 /31
Challenge 8http://pentesteracademylab.appspot.com//lab/webapp/cookie/1
ヒント ① 簡単です。
問題 1
11 /31
情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。
解き方
12 /31
マッピング: Mapping 発見: Discovery
◦ Burp Suite 、ブラウザのプロキシ設定。◦ 1 回通信してパケットを取得。
解き方
ユーザー ID 「 TUE9PQ== 」で Guest を識別している?末尾の == なのでおそらく base64 文字
13 /31
マッピング: Mapping 発見: Discovery
解き方
TUE9PQ== ↓ base64 デコードMA== ↓ base64 デコード0
1 ↓ base64 エンコードMQ== ↓ base64 エンコードTVE9PQ==
じゃあ 1 で試してみよう
0 = Guest ?
14 /31
マッピング: Mapping 発見: Discovery
解き方ブラウザ( IE ) Burp Suite Web サイト
ヘッダ修正
Web プロキシモードで動作
15 /31成功!
16 /31
Challenge 9http://pentesteracademylab.appspot.com/lab/webapp/sid/1?sid=Bg8WF0U=
ヒント ① 簡単です。 (結構難しかった)② ユーザー名: administrator, vivek, jack
問題 2
17 /31
情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。◦ http://pentesteracademylab.appspot.com/lab/webapp/sid/1?
sid=Bg8WF0U=◦ SID 「 Bg8WF0U=」 これまた base64っぽい
解き方
ただ、上記を base64 デコードしても謎の文字にしかならない「 Bg8WF0U= 」 ↓ base64 デコード「 E 」 # ここで 2 日悩んだ
18 /31
情報収集: Reconnaissance
解き方URL の sid を削ったところ。
関数実行エラーの文字列が表示された。キー「 azsd123443 」と XOR したものに base64 エンコードかけるのが期待値みたい。# こういうことがあるので、エラーログをブラウザに出すのはセキュリティ上よくない。
19 /31
マッピング: Mapping 発見: DiscoveryPython で作成。
解き方こんな感じです。1 文字ずつキーと XOR とって、最後に base64 。
実行結果vivek 以外に jack 、 administrator も。
20 /31成功!
21 /31
Challenge 10http://pentesteracademylab.appspot.com/lab/webapp/sid/2
ヒント ① 簡単です。
問題 3
22 /31
情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。
解き方
23 /31
情報収集: Reconnaissance
解き方Burp Sute で確認。 ⇒ Session ID というのが付与されている。
何回かのやり取りをキャプチャしてみると 1000 ~ 1100 の Session ID が使われている。
24 /31
マッピング: Mapping 発見: DiscoveryBurp suite でブルートフォース攻撃。
解き方
Session ID=1089 で当たりが返ってきた
25 /31成功!
26 /31
Challenge 11http://pentesteracademylab.appspot.com/lab/webapp/sid/3
ヒント ① 簡単です。 ② 数学的な知識は不要です。
問題 4
27 /31
情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。
解き方
28 /31
情報収集: Reconnaissance
解き方Burp Sute で確認。 ⇒ Session ID というのが付与されている。
何回かのやり取りをキャプチャしてみると様々な Session ID が使われている。
29 /31
情報収集: Reconnaissance
解き方s3 だけパターンを見つけられた。s3 は先頭 2桁だけが変化している。以下、 3 回分の Session ID まとめ。# 実際は 100 回分くらいを 3 日くらい見続けた。
s1 s21 回目 242743691184191397063280763411374103598 2797113020019275345256152172149902169942 回目 306552790323432124501728563420822905300 233950617947636814040439257259363746463 回目 85762014545564581630106001907284405461 145296478719836887854774187636431404957
s3 s41 回目 58931866611669874561943317207057605631 1193012787466008291126827557106961705172 回目 65931866611669874561943317207057605631 965617904540043379807944659877128617973 回目 72931866611669874561943317207057605631 218121769334797971259365299634671484220
s51 回目 1021709647434076049237590457464625110912 回目 1598666283108392608216500837929374761783 回目 94682286335788228352994231689453049835
30 /31
マッピング: Mapping 発見: DiscoveryBurp suite でブルートフォース攻撃。
解き方
s3 の先頭 2桁「 69 」で当たりが返ってきた
31 /31成功!