Det er ikke svært at køre sqlmap selv.
Denne tutorial vil tage dig fra noob til ninja med dette kraftfulde sql-injektionstestværktøj.
Sqlmap er et pythonbaseret værktøj, hvilket betyder, at det normalt vil køre på ethvert system med python. Vi kan dog godt lide Linux og specielt Ubuntu, det gør det simpelthen nemt at få ting gjort. Python kommer allerede installeret i Ubuntu. Det er det samme værktøj, som vi bruger på vores online sql injection testsite.
For at komme i gang med sqlmap er det et spørgsmål om at downloade værktøjet, udpakke det og køre kommandoen med de nødvendige indstillinger. Da der måske er Windows-brugere blandt jer, vil jeg først starte med at fortælle hvordan man får en Ubuntu-installation op og køre. Det er nemt at komme i gang med et Ubuntu Linux-system, selv om tanken om Linux sender gysende spasmer af frygt. Hvem ved, måske kan du endda lide det.
– Installer SQLmap
– HTTP GET
– Bliver blokeret
– Databasetabeller
– Dump dataene
– Tips
– Verbose output
– Database Credentials
– DB Connection Credentials
Installér SQLmap
Stræk 1: Få et Linux-baseret operativsystem
Hvis du vil køre SQLmap på Windows med Python, skal du sørge for, at du har Python installeret, og springe ned til næste trin. Ellers skal du få sat gang i dit Linux-system. Installer enten en virtuel Linux-maskine (Ubuntu eller Kali anbefales) på Windows (Virtualbox / VMware / Parrallels) eller start dit Linux-skrivebord op.
Hvis du kører Microsoft Windows som dit primære styresystem, er det praktisk og enkelt at køre en installation af Ubuntu Linux (eller Kali Linux) i en virtuel maskine. Du kan derefter lege med sqlmap, nmap, nikto og openvas sammen med hundrede andre kraftfulde open source-sikkerhedsværktøjer.
Stræk 2: SQLmap-installation
Python er præinstalleret i Ubuntu, så det eneste du skal gøre er at klone det nyeste repository fra git og starte din test.
Opfør dig i mappen og kør python-scriptet for at sikre, at alt ser godt ud.
Hvis du ikke ser noget som output ovenfor, skal du sikre dig, at python virker (prøv python -V
) for at kontrollere versionen, og at du er på den rigtige placering. Lad os nu komme videre dette var den nemme del.
For at få en komplet liste over de tilgængelige muligheder skal du køre python sqlmap.py -h
.
Kørsel af SQLmap
Enkle HTTP GET-baserede test
I denne enkle test vil vi bruge en standard HTTP GET
-baseret anmodning mod en URI med en parameter (?id=5). Dette vil teste forskellige SQL-injektionsmetoder mod id
-parameteren.
python sqlmap.py -u 'http://mytestsite.com/page.php?id=5'
I resultaterne kan vi se de forskellige metoder, der anvendes mod parameteren.
Blokeres af Web Application Firewall – WAF
Prøv at bruge en anden brugeragent end standard sqlmap med --randomagent
-parameteren.
Henter databasetabellerne
SQLmap kan bruges til at teste og udnytte SQL-injektion og gøre ting som at udtrække data fra databaser, opdatere tabeller og endda åbne skaller på fjernværter, hvis alle ænder er på linje.
Lad os hente tabellerne fra databasen ved hjælp af den SQL-injektionssårbarhed, som vi bekræftede ovenfor. Som du vil se i outputtet nedenfor, kan vi fortsætte med at teste mod målet uden at skulle teste sårbarheden igen. SQLmap bruger de oplysninger, den kender om webstedet, til yderligere at udnytte måldatabasen.
For at hente data tilføjer vi blot en parameter til den foregående kommando. Ved at tilføje --tables
kan vi forsøge at hente alle tabellerne.
Dump dataene
For at hente data udvider vi blot vores kommando. Tilføjelse af -T users
vil fokusere på tabellen users, hvor vi måske kan få nogle legitimationsoplysninger. Tilføjelse af --dump
vil fortælle SQLmap at hente alle data fra brugernes tabel, først vil kolonnerne blive opregnet, og derefter vil dataene blive dumpet fra kolonnerne.
SQLmap Tips – Go ninja on your SQL Injection Testing
Verbose output
Når man tester for SQL-injektion, er det ofte nødvendigt at grave manuelt i forespørgslerne for at afgøre problemer med testen eller for at bekræfte eller endda yderligere udnytte en opdaget injektion. At kunne øge verbosity af dit SQLmap-output vil hjælpe med denne testning.
Gennem at øge verbosity til 4 kan du få HTTP-forespørgslerne, med 5 kan du også se HTTP-svarets headere, og 6 vil vise det fulde HTTP-svar. Det er klart, at dette kan blive super støjende, men nogle gange har du brug for at se, hvad der sker.
Got Database Credentials?
Dette praktiske tip giver dig mulighed for at oprette forbindelse til databasen direkte og dumpe data såsom brugere, databaser eller tabeller. Det gode ved dette er, at du ikke behøver at huske SQL-syntaksen for databasen eller have en klient installeret. SQLmap gør det tunge arbejde og fungerer som en databaseklient til at dumpe data.
DB-forbindelsesstrenge:
MySQL, Oracle, Microsoft SQL Server, PostgreSQL
DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME
SQLite, Microsoft Access
DBMS://DATABASE_FILEPATH
Popping Shells and More
SQLmap har et latterligt antal muligheder, og er et fantastisk værktøj til at blive ét med en database. Udover at poppe skaller på målværten kan du sende forespørgsler gennem tor, finde injektioner i sidesvar automatisk, spidere websteder og selvfølgelig udføre HTTP POST-baseret testning. Disse eksempler ridser blot overfladen op. Find flere eksempler på den fremragende github-wikiside.
SQL-injektion er fortsat et yndet mål for angribere.
Brug vores SQL-injektionsscanner til at teste for injicerbare parametre på en web-URI.
Næste testniveau med avancerede sikkerhedssårbarhedsscannere.
Troværdige værktøjer. Hosted for nem adgang.