質問編集履歴
8
試してみたことを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -143,4 +143,10 @@
|
|
143
143
|
passwd_q = ''.join(passwd_q)
|
144
144
|
attempt_brute_force = BruteForcer(passwd_q)
|
145
145
|
attempt_brute_force.html_brute_forcer_thread_starter()
|
146
|
-
```
|
146
|
+
```
|
147
|
+
|
148
|
+
### 試してみたこと
|
149
|
+
```
|
150
|
+
print(brute_force_page)
|
151
|
+
```
|
152
|
+
でパスワードを入れてリクエストしか結果を確認しようとしても、そのデータが出力されません。
|
7
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,6 +46,8 @@
|
|
46
46
|
```
|
47
47
|
で返ってくるWebページの結果をちゃんと解析できてないのかな、と思うのですが、どこを修正すればいいのか今一つ見当がつきません...。
|
48
48
|
|
49
|
+
パスワードが間違っていたならば、返ってくるWebページにはちゃんと<form>要素は含まれ、それを検知してまだログインできていないと認識できるはずなのですが。
|
50
|
+
|
49
51
|
### 該当のソースコード
|
50
52
|
|
51
53
|
```python
|
6
タイトルの修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
パスワード保護されたWordPressページに総当たり攻撃をかける
|
1
|
+
パスワード保護されたWordPressページに総当たり攻撃をかけてみる実験を行っているのですが
|
body
CHANGED
File without changes
|
5
何が問題なのかをちゃんと説明してみました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
### 前提・実現したいこと
|
2
|
+
|
1
3
|
実験として、パスワード保護されたWordPressページに総当たり攻撃をかけるPythonプログラムを書いています。
|
2
4
|
|
3
5
|
(例えば、仮に英数字3文字のパスワードを用いたら、どれほど簡単に突破されてしまうか、といった実験です。)
|
4
6
|
|
7
|
+
第三者サーバーではなく、Localで適当にやってみて実験しております。
|
8
|
+
|
5
9
|
手順としては、
|
6
10
|
1) パスワードを入れる前のWordPressページを解析する
|
7
11
|
2) パスワードを総当たりで順に入力していく
|
@@ -22,9 +26,29 @@
|
|
22
26
|
```
|
23
27
|
という感じのformがあり、それに総当たり攻撃を仕掛けてみようということです。
|
24
28
|
|
25
|
-
|
29
|
+
### 発生している問題・エラーメッセージ
|
26
30
|
|
31
|
+
パスワードがxyzになっているWordPressページで実験してみるとして、デバッグ用にパスワードの候補をabcのみにして実行してみたところ、
|
32
|
+
```
|
33
|
+
[*] Started HTML Form Brute-Forcer Script
|
34
|
+
[*] Attempting abc
|
35
|
+
[*] Attempting abc
|
36
|
+
[*] Brute-Force Attempt is Successful!
|
37
|
+
[*] Password: abc
|
38
|
+
[*] Done
|
39
|
+
```
|
40
|
+
と、明らかに違うのに正しいパスワードとして出力されます。
|
41
|
+
|
42
|
+
もしかしたら、
|
27
43
|
```python
|
44
|
+
brute_force_request = urllib.request.Request(post_url, headers=headers)
|
45
|
+
brute_force_response = urllib.request.urlopen(brute_force_request, data=post_data)
|
46
|
+
```
|
47
|
+
で返ってくるWebページの結果をちゃんと解析できてないのかな、と思うのですが、どこを修正すればいいのか今一つ見当がつきません...。
|
48
|
+
|
49
|
+
### 該当のソースコード
|
50
|
+
|
51
|
+
```python
|
28
52
|
from html.parser import HTMLParser
|
29
53
|
import urllib.request
|
30
54
|
import urllib.parse
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,9 +13,9 @@
|
|
13
13
|
```HTML
|
14
14
|
<div class="row">
|
15
15
|
<div class="eight columns centered entry-main">
|
16
|
-
<form action="http://www.
|
16
|
+
<form action="http://www.example.net/wp-login.php?action=postpass" class="post-password-form" method="post">
|
17
17
|
<p>このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。</p>
|
18
|
-
<p><label for="pwbox-
|
18
|
+
<p><label for="pwbox-1234">パスワード <input name="post_password" id="pwbox-1234" type="password" size="20" /></label> <input type="submit" name="Submit" value="送信" /></p>
|
19
19
|
</p></form>
|
20
20
|
</div>
|
21
21
|
</div>
|
@@ -38,7 +38,7 @@
|
|
38
38
|
threads = 5
|
39
39
|
resume_word = None
|
40
40
|
headers = {}
|
41
|
-
target_url = "http://www.example.net/archives/
|
41
|
+
target_url = "http://www.example.net/archives/1234" #パスワード保護がかかっているWordPressページを対象に検証を行う
|
42
42
|
post_url = "http://www.example.net/wp-login.php?action=postpass" #このphpファイルを経由して処理が行われるらしい
|
43
43
|
password_field = "post_password" #パースしたHTML内にpost_passwordという項目があれば、まだページに入れていないと判断
|
44
44
|
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -112,7 +112,7 @@
|
|
112
112
|
|
113
113
|
print("[*] Started HTML Form Brute-Forcer Script")
|
114
114
|
http.cookiejar.FileCookieJar("cookies").clear()
|
115
|
-
combos=
|
115
|
+
combos=itertools.product("abcdefghijklmnopqrstuvwxyz1234567890", repeat=3)
|
116
116
|
for passwd_q in combos:
|
117
117
|
passwd_q = ''.join(passwd_q)
|
118
118
|
attempt_brute_force = BruteForcer(passwd_q)
|
2
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
```
|
23
23
|
という感じのformがあり、それに総当たり攻撃を仕掛けてみようということです。
|
24
24
|
|
25
|
-
それで書いてみたのが以下のコードなのですが、どうやらどのパスワードでも"Brute-Force Attempt is Successful!"という出力にな
|
25
|
+
それで書いてみたのが以下のコードなのですが、どうやらどのパスワードでも"Brute-Force Attempt is Successful!"という出力になり、正しいパスワードが取得できません。
|
26
26
|
|
27
27
|
```python
|
28
28
|
from html.parser import HTMLParser
|
1
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
resume_word = None
|
40
40
|
headers = {}
|
41
41
|
target_url = "http://www.example.net/archives/example" #パスワード保護がかかっているWordPressページを対象に検証を行う
|
42
|
-
post_url = "http://www.
|
42
|
+
post_url = "http://www.example.net/wp-login.php?action=postpass" #このphpファイルを経由して処理が行われるらしい
|
43
43
|
password_field = "post_password" #パースしたHTML内にpost_passwordという項目があれば、まだページに入れていないと判断
|
44
44
|
|
45
45
|
class BruteForcer():
|