web applicationpenetrationtest その1_解答
TRANSCRIPT
1 /42
Web Application Penetration Testその 1 解答長谷川
2 /42
1. Web アプリのペネトレーションテストのスキルアップ
目的
3 /42
ツール、言語◦ ブルートフォース特化系
Hydra ★会社で使うと多分怒られる◦ プロキシ系
Burp Suite ★会社で使うと多分怒られる◦ スクリプト言語系
Python ★使い方次第 問題 & 解き方 & 解答
もくじ
4 /424
問題Pentester Academy の無料の問題からいくつか出題ツール使うか、プログラミングして解いてください。ツール: Hydra 、 Metasploit 、 IronWASP 、 ZAP などなど、、単純な認証突破の問題なので Python とかでも解けます。
5 /42
プロキシ型の WAP ツール。◦ Burp Proxy
ブラウザ -target アプリケーション間の MITM 。◦ Burp Spider
トラフィックの調査、脆弱性の発見等。◦ Burp Web Vulnerability Scanner
脆弱性のチェック。◦ Burp Sequencer
シーケンス番号のランダム性のチェック。などなど 便利なところ
◦ 勝手にチェックしてくれる。大体何でもできる。 イマイチなところ
◦ フリー版は機能制限あり。
Burp Suite
画面
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
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()
8 /42
情報収集: Reconnaissance◦ 情報を収集する。(データフロー、フィンガープリント、ソース)
Wireshark 、 Blind Elephant 、 httprint
マッピング: Mapping◦ ターゲットアプリケーションの検査。
Burp Spider 、 SprAJAX 、 WebScarab
発見: Discovery◦ ターゲットアプリケーションの脆弱性の発見。
エクスプロイト: Exploit◦ 脆弱性を実証する。
問題の解き方
SANS SEC542 より
9 /42
http://pentesteracademylab.appspot.com/lab/webapp/1
上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : jack, admin③ パスワードは 5 文字で xyz のみが使われている。 (例: xxyyz, xyzxy, xyxxx 、、、)
問題 1
10 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ FORM 認証とわかる。◦ クエリストリング key= email, password
解き方
11 /42
マッピング: Mapping 発見: Discovery
◦ Burp Suite 、ブラウザのプロキシ設定。◦ 1 回通信してパケットを取得。
解き方
12 /42
マッピング: Mapping 発見: Discovery
◦ xyz でブルートフォース。
解き方Response の length が他と違って、内容に Failed の無いユーザー名、パスワードの組み合わせが 1 つ見つかる。
13 /42ログイン成功!
14 /42
http://pentesteracademylab.appspot.com/lab/webapp/basicauth
上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で asd のみが使われている。 (例: asddd,aassd, ssdaa 、、、)
問題 2
15 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから POST メソッド+ BASIC 認証とわかる。
解き方
16 /42
マッピング: Mapping 発見: Discovery
◦ crunch でパスワードファイルを生成。◦ Hydra でユーザー名、パスワードを探す。
解き方
17 /42ログイン成功!
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
19 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースからメソッド不明+ BASIC 認証とわかる。◦ クエリストリング key= email, password
解き方
20 /42
マッピング: Mapping 発見: Discovery
◦ Burp Suite 、ブラウザのプロキシ設定。◦ 1 回通信してパケットを取得。
解き方
メソッドが指定されていない場合 ⇒メソッドをいろいろ試す。 HEAD 、 GET 、 POST 、 PUT 、 PATCH 、、、
21 /42
マッピング: Mapping 発見: Discovery
◦ mno でブルートフォース。
解き方Response の length 、Location header が他と違うのが 1 つ見つかる。
22 /42ログイン成功!
23 /42
http://pentesteracademylab.appspot.com//lab/webapp/digest
上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で asd のみが使われている。 (例: asddd,aassd, ssdaa 、、、)
問題 4
24 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ DIGEST 認証とわかる。
解き方
25 /42
マッピング: Mapping 発見: Discovery
◦ crunch でパスワードファイルを生成。◦ Hydra でユーザー名、パスワードを探す。
解き方
26 /42ログイン成功!
27 /42
http://pentesteracademylab.appspot.com//lab/webapp/digest2
上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ パスワードは 5 文字で xyz のみが使われている。 (例: xxxyx,xyzxy, zzzzx 、、、)
問題 5
28 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから GET メソッド+ DIGEST 認証とわかる。
解き方
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.
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
31 /42解き方
結果
32 /42ログイン成功!
33 /42
http://pentesteracademylab.appspot.com/lab/webapp/auth/form/1
上記のページにサインインしてください。ペネトレーションテスト練習サイトなので多少負荷かけても OK です。 ヒント 文字白にしてあるので、見たい人は見てください①Company Domain: PentesterAcademy.com② ユーザー名のヒント : nick, admin③ フォームのパスワードは 5 文字で mno のみが使われている。④BASIC 認証のパスワードは 5 文字で vie のみが使われている。
問題 6
34 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容とソースから POST メソッド+ BASIC 認証とわかる。◦ Basic realm="PainGames 1.0 :)"
解き方
35 /42
マッピング: Mapping 発見: Discovery
◦ プログラム
解き方
結果
36 /42ログイン成功!
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
38 /42
情報収集: Reconnaissance◦ ヒントを使う。◦ パケット内容からGET メソッド+ FORM 認証とわかる。
◦ パケットの内容 username="webadmin" realm="Pentester-Academy" nonce="X95LDujmBAA=9c8ec8a0aeee0ddf7f24a5a75c57d0f90245d0f5" uri="/" algorithm=MD5 response="0fd7c603fdf61e89bfc9c95fb73e343a" qop=auth nc=00000001 cnonce="89b024ea3adb54ec"
解き方
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:/))
40 /42
マッピング: Mapping 発見: Discovery
◦ プログラム
◦ 実行結果
解き方
41 /42ログイン成功!
42 /42
SQL インジェクション ブラインド SQL インジェクション 反射型 XSS ( Reflected XSS ) 格納型 XSS ( Stored XSS ) DOM based XSS
CSRF
次回予告