狠狠撸

狠狠撸Share a Scribd company logo
1 /36
長谷川
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
つづく
3 /36
? ツール、言語
? ブルートフォース特化系
? Hydra ★会社で使うと多分怒られる
? プロキシ系
? Burp Suite ★会社で使うと多分怒られる
? スクリプト言語系
? Python ★使い方次第
? ユーティリティ系
? tcpxtract ★使い方次第
? fcrackzip ★使い方次第
? 問題 & 解き方 & 解答
4 /364
Pentester Academyの無料の問題からいくつか出題
ツール使うか、プログラミングして解いてください。
ツール:Hydra、Metasploit、IronWASP、ZAPなどなど、、
Pythonとかでも解けます。
5 /36
? プロキシ型のWAPツール。
? Burp Proxy
? ブラウザ-target アプリケーション間のMITM。Requestの修正等ができる。
? Burp Spider
? トラフィックの調査、脆弱性の発見等。
? Burp Web Vulnerability Scanner
? 脆弱性のチェック。
? Burp Sequencer
? シーケンス番号のランダム性のチェック。
などなど
? 便利なところ
? 勝手にチェックしてくれる。大体何でもできる。
? イマイチなところ
? フリー版は機能制限あり。
画面
Webブラウザ Burp Proxy Webサーバー
修正
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 path
protocolの例: ftp ftps http[s]-{head|get} http[s]-{get|post}-form
? 便利なところ
? 認証方式とかをある程度勝手に認識してくれる。高速。
? イマイチなところ
? 柔軟性に欠ける。
7 /36
? Python 3を使いました。
? 使ったライブラリ
? Requests ? http通信用
? Hashlib ? MD5の計算用
? base64 ? Base64の計算用
? Itertools ? パスワード文字列生成
(使用例)
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 /36
? ネットワークトラフィックからファイルを抽出するのに使う。
(URL)
? http://tcpxtract.sourceforge.net/
? 使い方
? pass.pcapからファイルを抽出する場合
root:/media/sf_share# tcpxtract -f pass.pcap
pcapからのファイル抽出によく使う。
9 /36
? zipパスワードのクラッキングツール。
(URL)
http://oldhome.schmorp.de/marc/fcrackzip.html
https://github.com/hyc/fcrackzip
? 使い方
10 /36
? 情報収集:Reconnaissance
? 情報を収集する。(データフロー、フィンガープリント、ソース)
? Wireshark、Blind Elephant、httprint
? マッピング:Mapping
? ターゲットアプリケーションの検査。
? Burp Spider、SprAJAX、WebScarab
? 発見:Discovery
? ターゲットアプリケーションの脆弱性の発見。
? エクスプロイト:Exploit
? 脆弱性を実証する。
SANS SEC542より
11 /3611
Challenge 12 ~ Challenge 15
12 /36
Challenge 12: Decrypting SSL
http://videos.pentesteracademy.com.s3.amazonaws.com/videos/wap-
challenges/https.zip
? ヒント
①上記のzipファイルの中身は「証明書」、「秘密鍵」、「pcapファイル」です。
「証明書」、「秘密鍵」を使ってpcapファイルの中のSSL通信を復号します。
Wiresharkを使う場合は、「証明書」、「秘密鍵」を適切なフォーマットに変換
してやらないと復号できない。
②適切なフォーマットは「証明書」、「秘密鍵」のデータ構造からわかる。
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形式の公開鍵証明書とわかる。
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
15 /36
? 情報収集:Reconnaissance
各ファイルの中身を確認
apache.key
(秘密鍵)
BEGINで始まって
ENDで終わっていたら
?PEM形式(RFC1421)
OpenSSLでデコードした結果。
root:/media/sf_share# openssl rsa -inform PEM -text -noout -in apache.key
↓次スライド参照。
問題なくデコードできたので、PEM形式の秘密鍵とわかる。
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 :p
prime2 :q
modulus :p*q
publicExponent : e
privateExponent :
coefficient :q^(-1) mod p
17 /36
? 情報収集:Reconnaissance
各ファイルの中身を確認
https-sid.pcap
(パケット)
「証明書」と「秘密鍵」
で復号する。
18 /36
? マッピング:Mapping
? 発見:Discovery
? PEM形式の「証明書」、「秘密鍵」を結合してWiresharkに入力する。
? PEM形式ファイルの結合は連結するだけでOK(RFC1421 4.4章参照)。
? [Edit]?[Preferences]?[Protocols]?[SSL]?[RSA keys list]?[NEW]
19 /36
? パケットが復号できた。
? SIDもわかったが、ここから先がわからなかった。
? 他の問題と違って正解ページが無いのか、、
20 /36
Challenge 13: HTTP Forensics
http://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(フォレンジクス、フォレンジック)
コンピュータに関する科学捜査。電子データを収集?分析して、証拠とするため
の技術のことである。
21 /36
? 情報収集:Reconnaissance
pcapファイルの中のファイルを抽出。
zipファイルに注目。
22 /36
? マッピング:Mapping
? 発見:Discovery
PASS付きzipファイルなのでクラッキングツールで解凍。
crunch等でパスワード辞書を作成し(pass.txt)、
~省略~
abc132で解凍すると「pass」というファイルができる。内容は「18hj34dhg34」。
fcrackzipでパスワードクラック。
23 /36
24 /36
Challenge 14: HTTP Traffic File Carving
http://pentesteracademylab.appspot.com/lab/webapp/forensics/2
? ヒント
①パスワードが格納されているファイルを復元する。
②下記のHTTPトレースファイルを使用してパスワードを復元する。
http://videos.pentesteracademy.com.s3.amazonaws.com/videos/
wap-challenges/http-forensics2.pcap
? File Carving
ファイル、データの復元、抽出。
25 /36
? 情報収集:Reconnaissance
pcapファイルの中のファイルを抽出。
~省略~
zipファイルを解凍してみる。
解凍失敗。
00000078.zipも同様。
26 /36
? 情報収集:Reconnaissance
違うアプローチ。
パケットを詳しく見ると、アップローダーにファイルをアップロードしていることがわかる。
最初のPOSTでファイルの実体、
次のPOSTでファイル名を指定しているみたい。
(アップローダーが閉鎖したようなので予想)
No.15のPOST
No.17のPOST
27 /36
? 情報収集:Reconnaissance
POSTとファイル名の対応表まとめ。
ファイル名とデータ実体から、splitコマンドで分割したファイルと予想できる。
パケット番号 ファイル名 データ実体パケット番号
17 xac 15
65 xab 63
118 xad 116
184 xaa 182
28 /36
? マッピング:Mapping
? 発見:Discovery
Wiresharkでxac~xadのoctet-streamを抽出。
xac~xadを連結し、解凍する。解凍後のファイルの内容「12wsdqwe32109」。
29 /36
30 /36
Challenge 15: HTTP Traffic File Carving II
http://pentesteracademylab.appspot.com/lab/webapp/forensics/3
? ヒント
①パスワードが格納されているファイルを復元する。
②下記のHTTPトレースファイルを使用してパスワードを復元する。
http://videos.pentesteracademy.com.s3.amazonaws.com/videos/
wap-challenges/http-forensics3.pcap
? File Carving
ファイル、データの復元、抽出。
31 /36
? 情報収集:Reconnaissance
Challenge 14とアップローダーを使っているので同様の問題と予想。
POSTとファイル名の対応表まとめ。
パケット番号 ファイル名 データ実体パケット番号
8 c 6
49 x 47
73 b 71
108 w 106
どんなファイルか分析する。
32 /36
? 情報収集:Reconnaissance
wはJPEG形式。
先頭ファイルがwなので、後はb/c/xを全組み合わせで連結して試してもよいが、スマートで
はない。
JPEGの仕様を確認し、ファイルの結合順番を求める。
ITU-T T.81(JPEGの仕様)
Information technology - Digital compression and coding of continuous-tone
still images - Requirements and guidelines
https://www.w3.org/Graphics/JPEG/itu-t81.pdf
33 /36
? 情報収集:Reconnaissance
末尾探し。末尾はEOI(End of image)があるのでわかる。
bの末尾でEOIを発見。 w ? c or x ?b
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 DQT
Define quantization table
量子化テーブル定義
0xFFC0 SOF0 Baseline DCT
(Discrete Cosine Transform)
0xFFDA SOS
Start of scan
スキャンの開始
ここから先はマーカーがEOIしか無いので識別できない。
大変だったのでwcxb、wxcbの全2パターンを試した。
35 /36
? マッピング:Mapping
? 発見:Discovery
wcxb.jpg wcxb.jpg
(わからないこともない)
36 /36

More Related Content

Web applicationpenetrationtest その3