web applicationpenetrationtest その2

31
1 /31 Web Application Penetration Test そそ2 そそ+そそ そそそ

Upload: f-hasegawa

Post on 20-Mar-2017

95 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Web applicationpenetrationtest その2

1 /31

Web Application Penetration Testその 2   問題 + 解答長谷川

Page 2: Web applicationpenetrationtest その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

    つづく

目的

Page 3: Web applicationpenetrationtest その2

3 /31

ツール、言語◦ ブルートフォース特化系

Hydra    ★会社で使うと多分怒られる◦ プロキシ系

Burp Suite  ★会社で使うと多分怒られる◦ スクリプト言語系

Python   ★使い方次第 問題 & 解き方 & 解答

もくじ

Page 4: Web applicationpenetrationtest その2

4 /314

問題Pentester Academy の無料の問題からいくつか出題ツール使うか、プログラミングして解いてください。ツール: Hydra 、 Metasploit 、 IronWASP 、 ZAP などなど、、Python とかでも解けます。

Page 5: Web applicationpenetrationtest その2

5 /31

プロキシ型の WAP ツール。◦ Burp Proxy

ブラウザ -target アプリケーション間の MITM 。 Request の修正等ができる。◦ Burp Spider

トラフィックの調査、脆弱性の発見等。◦ Burp Web Vulnerability Scanner

脆弱性のチェック。◦ Burp Sequencer

シーケンス番号のランダム性のチェック。などなど 便利なところ

◦ 勝手にチェックしてくれる。大体何でもできる。 イマイチなところ

◦ フリー版は機能制限あり。

Burp Suite

画面

Page 6: Web applicationpenetrationtest その2

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

Page 7: Web applicationpenetrationtest その2

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()

Page 8: Web applicationpenetrationtest その2

8 /31

情報収集: Reconnaissance◦ 情報を収集する。(データフロー、フィンガープリント、ソース)

Wireshark 、 Blind Elephant 、 httprint

マッピング: Mapping◦ ターゲットアプリケーションの検査。

Burp Spider 、 SprAJAX 、 WebScarab

発見: Discovery◦ ターゲットアプリケーションの脆弱性の発見。

エクスプロイト: Exploit◦ 脆弱性を実証する。

問題の解き方

SANS SEC542 より

Page 9: Web applicationpenetrationtest その2

9 /319

問題を解いていくChallenge 8  ~ Challenge 11

Page 10: Web applicationpenetrationtest その2

10 /31

Challenge 8http://pentesteracademylab.appspot.com//lab/webapp/cookie/1

ヒント ① 簡単です。

問題 1

Page 11: Web applicationpenetrationtest その2

11 /31

情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。

解き方

Page 12: Web applicationpenetrationtest その2

12 /31

マッピング: Mapping 発見: Discovery

◦ Burp Suite 、ブラウザのプロキシ設定。◦ 1 回通信してパケットを取得。

解き方

ユーザー ID 「 TUE9PQ== 」で Guest を識別している?末尾の == なのでおそらく base64 文字

Page 13: Web applicationpenetrationtest その2

13 /31

マッピング: Mapping 発見: Discovery

解き方

TUE9PQ== ↓ base64 デコードMA== ↓ base64 デコード0

1 ↓ base64 エンコードMQ== ↓ base64 エンコードTVE9PQ==

じゃあ 1 で試してみよう

0 = Guest ?

Page 14: Web applicationpenetrationtest その2

14 /31

マッピング: Mapping 発見: Discovery

解き方ブラウザ( IE ) Burp Suite Web サイト

ヘッダ修正

Web プロキシモードで動作

Page 15: Web applicationpenetrationtest その2

15 /31成功!

Page 16: Web applicationpenetrationtest その2

16 /31

Challenge 9http://pentesteracademylab.appspot.com/lab/webapp/sid/1?sid=Bg8WF0U=

ヒント ① 簡単です。 (結構難しかった)② ユーザー名: administrator, vivek, jack

問題 2

Page 17: Web applicationpenetrationtest その2

17 /31

情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。◦ http://pentesteracademylab.appspot.com/lab/webapp/sid/1?

sid=Bg8WF0U=◦ SID  「 Bg8WF0U=」 これまた base64っぽい

解き方

ただ、上記を base64 デコードしても謎の文字にしかならない「 Bg8WF0U= 」  ↓ base64 デコード「 E 」 # ここで 2 日悩んだ

Page 18: Web applicationpenetrationtest その2

18 /31

情報収集: Reconnaissance

解き方URL の sid を削ったところ。

関数実行エラーの文字列が表示された。キー「 azsd123443 」と XOR したものに base64 エンコードかけるのが期待値みたい。# こういうことがあるので、エラーログをブラウザに出すのはセキュリティ上よくない。

Page 19: Web applicationpenetrationtest その2

19 /31

マッピング: Mapping 発見: DiscoveryPython で作成。

解き方こんな感じです。1 文字ずつキーと XOR とって、最後に base64 。

実行結果vivek 以外に jack 、 administrator も。

Page 20: Web applicationpenetrationtest その2

20 /31成功!

Page 21: Web applicationpenetrationtest その2

21 /31

Challenge 10http://pentesteracademylab.appspot.com/lab/webapp/sid/2

ヒント ① 簡単です。 

問題 3

Page 22: Web applicationpenetrationtest その2

22 /31

情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。

解き方

Page 23: Web applicationpenetrationtest その2

23 /31

情報収集: Reconnaissance

解き方Burp Sute で確認。 ⇒ Session ID というのが付与されている。

何回かのやり取りをキャプチャしてみると 1000 ~ 1100 の Session ID が使われている。

Page 24: Web applicationpenetrationtest その2

24 /31

マッピング: Mapping 発見: DiscoveryBurp suite でブルートフォース攻撃。

解き方

Session ID=1089 で当たりが返ってきた

Page 25: Web applicationpenetrationtest その2

25 /31成功!

Page 26: Web applicationpenetrationtest その2

26 /31

Challenge 11http://pentesteracademylab.appspot.com/lab/webapp/sid/3

ヒント ① 簡単です。 ② 数学的な知識は不要です。

問題 4

Page 27: Web applicationpenetrationtest その2

27 /31

情報収集: Reconnaissance◦ 何をすればよくわからないが、 Guest と認識されているようなので、何でユーザーを識別しているか探す。

解き方

Page 28: Web applicationpenetrationtest その2

28 /31

情報収集: Reconnaissance

解き方Burp Sute で確認。 ⇒ Session ID というのが付与されている。

何回かのやり取りをキャプチャしてみると様々な Session ID が使われている。

Page 29: Web applicationpenetrationtest その2

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

Page 30: Web applicationpenetrationtest その2

30 /31

マッピング: Mapping 発見: DiscoveryBurp suite でブルートフォース攻撃。

解き方

s3 の先頭 2桁「 69 」で当たりが返ってきた

Page 31: Web applicationpenetrationtest その2

31 /31成功!