web applicationpenetrationtest その3

36
1 /36 Web Application Penetration Test そそ3 そそ+そそ そそそ

Upload: f-hasegawa

Post on 20-Mar-2017

37 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Web applicationpenetrationtest その3

1 /36

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

Page 2: Web applicationpenetrationtest その3

2 /36

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 その3

3 /36

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

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

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

Python   ★使い方次第◦ ユーティリティ系

tcpxtract    ★使い方次第 fcrackzip ★ 使い方次第         

問題 & 解き方 & 解答

もくじ

Page 4: Web applicationpenetrationtest その3

4 /364

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

Page 5: Web applicationpenetrationtest その3

5 /36

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

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

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

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

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

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

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

Burp Suite

画面

Web ブラウザ Burp Proxy Web サーバー修正

Page 6: Web applicationpenetrationtest その3

6 /36

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

7 /36

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 その3

8 /36

ネットワークトラフィックからファイルを抽出するのに使う。( URL ) http://tcpxtract.sourceforge.net/ 使い方

pass.pcap からファイルを抽出する場合root:/media/sf_share# tcpxtract -f pass.pcap

tcpxtract

pcap からのファイル抽出によく使う。

Page 9: Web applicationpenetrationtest その3

9 /36

zip パスワードのクラッキングツール。( URL )http://oldhome.schmorp.de/marc/fcrackzip.htmlhttps://github.com/hyc/fcrackzip 使い方

fcrackzip

Page 10: Web applicationpenetrationtest その3

10 /36

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

Wireshark 、 Blind Elephant 、 httprint

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

Burp Spider 、 SprAJAX 、 WebScarab

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

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

問題の解き方

SANS SEC542 より

Page 11: Web applicationpenetrationtest その3

11 /3611

問題を解いていくChallenge 12  ~ Challenge 15

Page 12: Web applicationpenetrationtest その3

12 /36

Challenge 12: Decrypting SSL http://videos.pentesteracademy.com.s3.amazonaws.com/videos/wap-challenges/https.zip

ヒント ① 上記の zip ファイルの中身は「証明書」、「秘密鍵」、「 pcapファイル」です。「証明書」、「秘密鍵」を使って pcap ファイルの中の SSL 通信を復号します。Wireshark を使う場合は、「証明書」、「秘密鍵」を適切なフォーマットに変換してやらないと復号できない。② 適切なフォーマットは「証明書」、「秘密鍵」のデータ構造からわかる。

問題 1

Page 13: Web applicationpenetrationtest その3

13 /36

情報収集: Reconnaissance各ファイルの中身を確認

解き方

apache.crt(証明書) BEGIN で始まってEND で終わっていたら⇒PEM 形式( RFC1421 )

OpenSSL でデコードした結果。root:/media/sf_share# openssl x509 -inform PEM -text -noout -in apache.crt↓ 次スライド参照。  問題なくデコードできたので、 X.509 形式の公開鍵証明書とわかる。

Page 14: Web applicationpenetrationtest その3

14 /36

Certificate: Data: Version: 3 (0x2) Serial Number: 14915957526376006622 (0xcf0020579474c3de) Signature Algorithm: sha1WithRSAEncryption Issuer: C=IN, ST=West Bengal, L=Kolkata, O=SecurityTube, OU=Pentester Academy, CN=localhost/emailAddress=root@localhost Validity Not Before: Oct 3 06:59:18 2013 GMT Not After : Oct 3 06:59:18 2014 GMT Subject: C=IN, ST=West Bengal, L=Kolkata, O=SecurityTube, OU=Pentester Academy, CN=localhost/emailAddress=root@localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:b6:b5:06:27:df:88:99:e2:0b:bb:90:a0:b9:94:   ~省略~Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 41:9B:0B:1D:66:95:65:35:0F:C7:DA:14:BA:A8:3A:2A:D1:09:C9:75 X509v3 Authority Key Identifier: keyid:41:9B:0B:1D:66:95:65:35:0F:C7:DA:14:BA:A8:3A:2A:D1:09:C9:75 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 84:6d:47:ae:44:5a:85:8d:08:f6:4f:96:75:4a:02:21:c7:13:   ~省略~

解き方 情報収集: Reconnaissance

Page 15: Web applicationpenetrationtest その3

15 /36

情報収集: Reconnaissance各ファイルの中身を確認

解き方apache.key(秘密鍵)

BEGIN で始まってEND で終わっていたら⇒PEM 形式( RFC1421 )

OpenSSL でデコードした結果。root:/media/sf_share# openssl rsa -inform PEM -text -noout -in apache.key↓ 次スライド参照。  問題なくデコードできたので、 PEM 形式の秘密鍵とわかる。

Page 16: Web applicationpenetrationtest その3

16 /36

Private-Key: (2048 bit)modulus: 00:b6:b5:06:27:df:88:99:e2:0b:bb:90:a0:b9:94:~省略~publicExponent: 65537 (0x10001)privateExponent: 57:8e:1c:6b:13:35:f4:f8:5c:43:00:25:e5:88:da:~省略~prime1: 00:f2:2a:c7:ec:b6:9c:77:26:08:03:dc:b6:91:11:~省略~prime2: 00:c1:24:c1:e4:63:1a:52:59:4b:ae:3c:a5:40:dc:~省略~exponent1: 37:98:c6:c9:7b:ab:34:57:90:e3:82:1a:8f:f7:b5:~省略~exponent2: 3b:88:00:db:4c:50:88:a1:4d:5a:5f:06:f0:7e:e0:~省略~coefficient: 00:81:75:47:0a:15:0c:a7:30:ee:a2:fb:54:68:90:~省略~

解き方 情報収集: Reconnaissance

(参考)変数名と RSA 暗号パラメーターの対応prime1 : pprime2 : qmodulus : p*qpublicExponent : eprivateExponent :coefficient : q^(-1) mod p

Page 17: Web applicationpenetrationtest その3

17 /36

情報収集: Reconnaissance各ファイルの中身を確認

解き方https-sid.pcap(パケット)

「証明書」と「秘密鍵」で復号する。

Page 18: Web applicationpenetrationtest その3

18 /36

マッピング: Mapping 発見: Discovery

◦ PEM 形式の「証明書」、「秘密鍵」を結合して Wireshark に入力する。◦ PEM 形式ファイルの結合は連結するだけで OK ( RFC1421 4.4 章参照)。

[Edit]⇒[Preferences]⇒[Protocols]⇒[SSL]⇒[RSA keys list]⇒[NEW]

解き方

Page 19: Web applicationpenetrationtest その3

19 /36成功? パケットが復号できた。 SID もわかったが、ここから先がわからなかった。 他の問題と違って正解ページが無いのか、、

Page 20: Web applicationpenetrationtest その3

20 /36

Challenge 13: HTTP Forensicshttp://pentesteracademylab.appspot.com/lab/webapp/forensics/1 ヒント ①HTTP の pcap ファイルに含まれるファイルのパスワードを解読する。http://videos.pentesteracademy.com.s3.amazonaws.com/videos/wap-challenges/pass.pcap② パスワード: 6 文字、 1 、 2 、 3 、 a 、 b 、 c のみを使用する。

( Wikipedia より抜粋) Computer Forensics (フォレンジクス、フォレンジック)コンピュータに関する科学捜査。電子データを収集・分析して、証拠とするための技術のことである。

問題 2

Page 21: Web applicationpenetrationtest その3

21 /36

情報収集: Reconnaissancepcap ファイルの中のファイルを抽出。zip ファイルに注目。

解き方

Page 22: Web applicationpenetrationtest その3

22 /36

マッピング: Mapping 発見: DiscoveryPASS付き zip ファイルなのでクラッキングツールで解凍。crunch 等でパスワード辞書を作成し( pass.txt )、

解き方

~省略~

abc132 で解凍すると「 pass 」というファイルができる。内容は「 18hj34dhg34 」。

fcrackzip でパスワードクラック。

Page 23: Web applicationpenetrationtest その3

23 /36成功!

Page 24: Web applicationpenetrationtest その3

24 /36

Challenge 14: HTTP Traffic File Carvinghttp://pentesteracademylab.appspot.com/lab/webapp/forensics/2 ヒント ① パスワードが格納されているファイルを復元する。②下記の HTTP トレースファイルを使用してパスワードを復元する。http://videos.pentesteracademy.com.s3.amazonaws.com/videos/wap-challenges/http-forensics2.pcap

File Carvingファイル、データの復元、抽出。

問題 3

Page 25: Web applicationpenetrationtest その3

25 /36

情報収集: Reconnaissancepcap ファイルの中のファイルを抽出。

解き方

~省略~

zip ファイルを解凍してみる。

解凍失敗。00000078.zip も同様。

Page 26: Web applicationpenetrationtest その3

26 /36

情報収集: Reconnaissance違うアプローチ。パケットを詳しく見ると、アップローダーにファイルをアップロードしていることがわかる。

解き方

最初の POST でファイルの実体、次の POST でファイル名を指定しているみたい。(アップローダーが閉鎖したようなので予想)No.15 の POST

No.17 の POST

Page 27: Web applicationpenetrationtest その3

27 /36

情報収集: ReconnaissancePOST とファイル名の対応表まとめ。

ファイル名とデータ実体から、 split コマンドで分割したファイルと予想できる。

解き方パケット番号 ファイル名 データ実体パケット番号

17 xac 1565 xab 63118 xad 116184 xaa 182

Page 28: Web applicationpenetrationtest その3

28 /36

マッピング: Mapping 発見: DiscoveryWireshark で xac ~ xad の octet-stream を抽出。

解き方

xac ~ xad を連結し、解凍する。解凍後のファイルの内容「 12wsdqwe32109 」。

Page 29: Web applicationpenetrationtest その3

29 /36成功!

Page 30: Web applicationpenetrationtest その3

30 /36

Challenge 15: HTTP Traffic File Carving IIhttp://pentesteracademylab.appspot.com/lab/webapp/forensics/3 ヒント ① パスワードが格納されているファイルを復元する。②下記の HTTP トレースファイルを使用してパスワードを復元する。http://videos.pentesteracademy.com.s3.amazonaws.com/videos/wap-challenges/http-forensics3.pcap

File Carvingファイル、データの復元、抽出。

問題 4

Page 31: Web applicationpenetrationtest その3

31 /36

情報収集: ReconnaissanceChallenge 14 とアップローダーを使っているので同様の問題と予想。

POST とファイル名の対応表まとめ。

解き方

パケット番号 ファイル名 データ実体パケット番号8 c 649 x 4773 b 71108 w 106

どんなファイルか分析する。

Page 32: Web applicationpenetrationtest その3

32 /36

情報収集: Reconnaissancew は JPEG 形式。

先頭ファイルが w なので、後は b/c/x を全組み合わせで連結して試してもよいが、スマートではない。JPEG の仕様を確認し、ファイルの結合順番を求める。ITU-T T.81 ( JPEG の仕様)Information technology - Digital compression and coding of continuous-tone still images - Requirements and guidelineshttps://www.w3.org/Graphics/JPEG/itu-t81.pdf

解き方

Page 33: Web applicationpenetrationtest その3

33 /36

情報収集: Reconnaissance末尾探し。末尾は EOI ( End of image )があるのでわかる。

解き方

b の末尾で EOI を発見。 w ⇒ c or x ⇒b

Page 34: Web applicationpenetrationtest その3

34 /36

情報収集: Reconnaissance各ファイルのセグメント解析。必須フィールドは下記。SOI ( Start of image ) ⇒ DQT ( Define quantization table ) ⇒ DHT ( Define Huffman tables )⇒ SOS ( Start of scan )⇒ EOI ( End of image ) w

解き方

コード シンボル 説明0xFFD8 SOI

Start of image画像の開始

0xFFDB DQTDefine quantization table

量子化テーブル定義0xFFC0 SOF0 Baseline DCT( Discrete Cosine

Transform )0xFFDA SOS

Start of scanスキャンの開始ここから先はマーカーが EOI しか無いので識別できない。大変だったので wcxb 、 wxcb の全 2 パターンを試した。

Page 35: Web applicationpenetrationtest その3

35 /36

マッピング: Mapping 発見: Discovery

解き方

wcxb.jpg wcxb.jpg(わからないこともない)

Page 36: Web applicationpenetrationtest その3

36 /36成功!