web applicationpenetrationtest その1_解答

42
1 /42 Web Application Penetration Test そそ1 そそ そそそ

Upload: f-hasegawa

Post on 11-Feb-2017

102 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Web applicationpenetrationtest その1_解答

1 /42

Web Application Penetration Testその 1   解答長谷川

Page 2: Web applicationpenetrationtest その1_解答

2 /42

1. Web アプリのペネトレーションテストのスキルアップ

目的

Page 3: Web applicationpenetrationtest その1_解答

3 /42

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

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

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

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

もくじ

Page 4: Web applicationpenetrationtest その1_解答

4 /424

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

Page 5: Web applicationpenetrationtest その1_解答

5 /42

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

ブラウザ -target アプリケーション間の MITM 。◦ Burp Spider

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

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

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

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

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

Burp Suite

画面

Page 6: Web applicationpenetrationtest その1_解答

6 /42

パスワードクラッカー。◦ 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 その1_解答

7 /42

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 その1_解答

8 /42

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

Wireshark 、 Blind Elephant 、 httprint

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

Burp Spider 、 SprAJAX 、 WebScarab

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

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

問題の解き方

SANS SEC542 より

Page 9: Web applicationpenetrationtest その1_解答

9 /42

http://pentesteracademylab.appspot.com/lab/webapp/1

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : jack, admin③ パスワードは 5 文字で xyz のみが使われている。 (例: xxyyz, xyzxy, xyxxx 、、、)

問題 1

Page 10: Web applicationpenetrationtest その1_解答

10 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ FORM 認証とわかる。◦ クエリストリング key= email, password

解き方

Page 11: Web applicationpenetrationtest その1_解答

11 /42

マッピング: Mapping 発見: Discovery

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

解き方

Page 12: Web applicationpenetrationtest その1_解答

12 /42

マッピング: Mapping 発見: Discovery

◦ xyz でブルートフォース。

解き方Response の length が他と違って、内容に Failed の無いユーザー名、パスワードの組み合わせが 1 つ見つかる。

Page 13: Web applicationpenetrationtest その1_解答

13 /42ログイン成功!

Page 14: Web applicationpenetrationtest その1_解答

14 /42

http://pentesteracademylab.appspot.com/lab/webapp/basicauth

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で asd のみが使われている。 (例: asddd,aassd, ssdaa 、、、)

問題 2

Page 15: Web applicationpenetrationtest その1_解答

15 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから POST メソッド+ BASIC 認証とわかる。

解き方

Page 16: Web applicationpenetrationtest その1_解答

16 /42

マッピング: Mapping 発見: Discovery

◦ crunch でパスワードファイルを生成。◦ Hydra でユーザー名、パスワードを探す。

解き方

Page 17: Web applicationpenetrationtest その1_解答

17 /42ログイン成功!

Page 18: Web applicationpenetrationtest その1_解答

18 /42

http://pentesteracademylab.appspot.com//lab/webapp/auth/1/login

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で mno のみが使われている。 (例: mmmmm, nmonm, oooom 、、、)Location ヘッダーに注目。

問題 3

Page 19: Web applicationpenetrationtest その1_解答

19 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースからメソッド不明+ BASIC 認証とわかる。◦ クエリストリング key= email, password

解き方

Page 20: Web applicationpenetrationtest その1_解答

20 /42

マッピング: Mapping 発見: Discovery

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

解き方

メソッドが指定されていない場合 ⇒メソッドをいろいろ試す。 HEAD 、 GET 、 POST 、 PUT 、 PATCH 、、、

Page 21: Web applicationpenetrationtest その1_解答

21 /42

マッピング: Mapping 発見: Discovery

◦ mno でブルートフォース。

解き方Response の length 、Location header が他と違うのが 1 つ見つかる。

Page 22: Web applicationpenetrationtest その1_解答

22 /42ログイン成功!

Page 23: Web applicationpenetrationtest その1_解答

23 /42

http://pentesteracademylab.appspot.com//lab/webapp/digest

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で asd のみが使われている。 (例: asddd,aassd, ssdaa 、、、)

問題 4

Page 24: Web applicationpenetrationtest その1_解答

24 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ DIGEST 認証とわかる。

解き方

Page 25: Web applicationpenetrationtest その1_解答

25 /42

マッピング: Mapping 発見: Discovery

◦ crunch でパスワードファイルを生成。◦ Hydra でユーザー名、パスワードを探す。

解き方

Page 26: Web applicationpenetrationtest その1_解答

26 /42ログイン成功!

Page 27: Web applicationpenetrationtest その1_解答

27 /42

http://pentesteracademylab.appspot.com//lab/webapp/digest2

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で xyz のみが使われている。 (例: xxxyx,xyzxy, zzzzx 、、、)

問題 5

Page 28: Web applicationpenetrationtest その1_解答

28 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ DIGEST 認証とわかる。

解き方

Page 29: Web applicationpenetrationtest その1_解答

29 /42

マッピング: Mapping 発見: Discovery

◦ パケット情報をもとに Response パケットを生成する。 realm = "Pentester Academy" opeque = "" uri = "/lab/webapp/digest2/1" qop(qop-option) = 無し

解き方

quality of protection が無い場合の設定パラメーター( RFC 2617 )cnoncenonce-count This MUST NOT be specified if the server did not send a qop directive in the WWW-Authenticate header field.

Page 30: Web applicationpenetrationtest その1_解答

30 /42解き方Request の計算方法( RFC 2617 3.2.2 )MD5(    MD5( ユーザー名 ":" realm ":" パスワード ) ":"    nonce ":"    MD5(HTTP のメソッド ":" コンテンツの URI))ヘッダの生成方法"Authorization" Digest username= ユーザー名 , realm=realm, nonce=nonce, uri=url, response=response

パケット内容を当てはめた結果MD5(    MD5( ユーザー名 :Pentester Academy: パスワード ) :   サーバーから取得した nonce:    MD5(GET:/lab/webapp/digest2/1))ヘッダの生成方法"Authorization" Digest username= ユーザー名 , realm= Pentester Academy, nonce= サーバーから取得した nonce, uri=/lab/webapp/digest2/1, response= 上記で計算した response

Page 31: Web applicationpenetrationtest その1_解答

31 /42解き方

結果

Page 32: Web applicationpenetrationtest その1_解答

32 /42ログイン成功!

Page 33: Web applicationpenetrationtest その1_解答

33 /42

http://pentesteracademylab.appspot.com/lab/webapp/auth/form/1

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ フォームのパスワードは 5 文字で mno のみが使われている。④BASIC 認証のパスワードは 5 文字で vie のみが使われている。

問題 6

Page 34: Web applicationpenetrationtest その1_解答

34 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから POST メソッド+ BASIC 認証とわかる。◦ Basic realm="PainGames 1.0 :)"

解き方

Page 35: Web applicationpenetrationtest その1_解答

35 /42

マッピング: Mapping 発見: Discovery

◦ プログラム

解き方

結果

Page 36: Web applicationpenetrationtest その1_解答

36 /42ログイン成功!

Page 37: Web applicationpenetrationtest その1_解答

37 /42

http://pentesteracademylab.appspot.com//lab/webapp/digest3

上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください① ユーザー名のヒント: nick, jack, vivek, admin, webadmin, sqladmin, jill, natasha② パスワードは 6 文字で 123xyz のみが使われている。③ 盗聴した pcap ファイルの情報を使ってよい。

問題 7

http-digest.pcap

Page 38: Web applicationpenetrationtest その1_解答

38 /42

情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容からGET メソッド+ FORM 認証とわかる。

◦ パケットの内容 username="webadmin" realm="Pentester-Academy" nonce="X95LDujmBAA=9c8ec8a0aeee0ddf7f24a5a75c57d0f90245d0f5" uri="/" algorithm=MD5 response="0fd7c603fdf61e89bfc9c95fb73e343a" qop=auth nc=00000001 cnonce="89b024ea3adb54ec"

解き方

Page 39: Web applicationpenetrationtest その1_解答

39 /42

マッピング: Mapping 発見: Discovery

◦ DIGEST 認証のパケットから、パスワードを算出する。

解き方

Request 計算方法( RFC 2617 3.2.2 )MD5(    MD5( ユーザー名 ":" realm ":" パスワード ) ":"    nonce ":"    nc ":" cnonce ":" qop ":" MD5(HTTP のメソッド ":" コンテンツの URI))

パケットの内容をあてはめた結果MD5(    MD5(webadmin:Pentester-Academy: パスワード ) :   X95LDujmBAA=9c8ec8a0aeee0ddf7f24a5a75c57d0f90245d0f5:    00000001:89b024ea3adb54ec:auth:MD5(GET:/))

Page 40: Web applicationpenetrationtest その1_解答

40 /42

マッピング: Mapping 発見: Discovery

◦ プログラム

◦ 実行結果

解き方

Page 41: Web applicationpenetrationtest その1_解答

41 /42ログイン成功!

Page 42: Web applicationpenetrationtest その1_解答

42 /42

SQL インジェクション ブラインド SQL インジェクション 反射型 XSS ( Reflected XSS ) 格納型 XSS ( Stored XSS ) DOM based XSS

CSRF

次回予告