#WackoPicko: Para aprender sobre vulnerabilidades conocidas en aplicaciones Web


Según el cono del aprendizaje de Edgar Dale y Bruce Nylan, el ser humano tiende a recordar y aprender mas fácilmente, el 90% aproximadamente, cuando decimos y hacemos lo que intentamos aprender.

 cono-del-aprendizaje

Desde que aprendí sobre esto, lo he venido poniendo en practica, cada vez que el tiempo y los recursos me lo permitan y los resultados son muy satisfactorios; prácticamente nos volvemos “como una esponja para absorber nuevo conocimiento.”

Con base a lo anterior, voy hablar sobre una de las formas en que podemos aprender un poco sobre análisis de vulnerabilidades en aplicaciones Web, pero desde una forma practica.

Para esto, voy a utilizar WackoPicko, el cual es una aplicación Web tipo LAMP, que fue creada en el 2010 para hacerle una prueba mas realista a las soluciones de software que escanean vulnerabilidades en aplicaciones Web, tales como Acunetix, AppScan, Burp, Grendel-Scan 1, Hailstorm, Milescan, N-Stalker, NTOSpider, Paros, w3af, Webinspect, entre otras…

Acerca de WackoPicko.

WackoPicko es un sitio Web para compartir y comprar fotos. Un usuario registrado de WackoPicko, puede subir fotos, navegar por las fotos de otros usuarios, comentar fotos y puede comprar los derechos para una versión de alta calidad de una fotografía  Debido a esto contiene varios módulos, uno de autenticación para los usuarios que se van a registrar, otro para cargar las fotos o imágenes de los usuarios registrados, otro que permite comentar estas imágenes en forma de hilo como si fuera un foro, otro para comprar una versión de alta calidad de la imagen siguiendo los pasos de un carro de compras como si fuera un sitio de comercio electrónico, otro para realizar búsquedas en el sitio, otro que es un libro de visitas y finalmente el modulo de administración para gestionar la aplicación.

 ¿Que tipo de vulnerabilidades se pueden encontrar?

Se pueden encontrar 15 vulnerabilidades representativas del OWASP, algunas con de acceso publico y otras con acceso restringido o que requieren autenticación para poder explotarlas.

 Algunas de las vulnerabilidades conocidas en WackoPicko:

  1. Reflected XSS.

  2. Stored XSS.

  3. SessionID vulnerability

  4. Stored SQL Injection

  5. Reflected SQL Injection

  6. Directory Traversal

  7. Multi-Step Stored XSS

  8. Forceful Browsing

  9. Command-line Injection

  10. File Inclusion

  11. Parameter Manipulation

  12. Reflected XSS Behind JavaScript

  13. Logic Flaw

  14. Reflected XSS Behind a Flash Form

  15. Weak username/password

NOTA: Cada titulo tiene un link a la pagina donde explican y muestran una prueba de concepto de cada tipo de vulnerabilidad.

Probando las vulnerabilidades…

Para esto, primero se debe montar la aplicación WackoPicko en una maquina que tenga instalado Apache, PHP y MySQL.

Ejemplo de instalación en Linux:

Se descarga la aplicación desde el repositorio de Internet

$ git clone https://github.com/adamdoupe/WackoPicko.git

Se ingresa a la carpeta y se instala la base de datos en el motor MySQL

 cd WackoPicko/
$ mysql -u root -p < current.sql

Luego se mueven los archivos a donde se publican las aplicaciones Web en Linux.

mv website/* /var/www/ $ cd /var/www/

Se ingresa a la carpeta WackoPicko y se le dan FULL permisos a la carpeta donde se cargaran las fotos de los usuarios.

chmod -R 777 upload/

Finalmente, probar desde el navegador de Internet si la instalación fue satisfactoria ingresando a la URL: http://localhost

localhost-WackoPicko

Otra opción, es que se puede utilizar la maquina virtual del proyecto OWASP Broken Web Applications (BWA) ya que contiene una variedad de aplicaciones vulnerables pre instaladas y entre ellas se encuentra WackoPicko.

Solo requiere descargar la maquina, importarla en VMware Player, iniciarla y verificar que dirección IP tomo para acceder por el navegador Web.

OWASP-BWA

Como pueden ver, hay otras aplicaciones con las que se puede jugar, por lo tanto, para mas información sobre el proyectoBWA pueden visitar: https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

 Probamos accediendo desde otro equipo al servidor Linux con la aplicación WackoPicko.

 AccesoRemotoWackoPicko

Ya en este punto, se podrían probar las vulnerabilidades una por una de forma manual o se le corre una solución de software escaner para ver cuales y cuantas reporta; para este caso utilice la versión de prueba de Acunetix, ya que según un paper, indica que es una de las que mejores resultados obtuvo en las pruebas de caja negra.

 Resumen de las vulnerabilidades encontradas por ACUNETIX clasificadas por severidad:

 ResultadoAcunetix-WackoPicko

Ejemplo del análisis de riesgo de una vulnerabilidad con severidad alta encontrada por Acunetix:

Tipo Vulnerabilidad: Directory-Traversal o Unauthorized File Exposure.

Descripción de la vulnerabilidad: La aplicación Web permite ver sin autorización archivos sensibles o confidenciales del sistema operativo u otros, por medio del salto de directorio pasándole parámetros GET por la URL.

Vector de ataque: Interno o externo. De acceso publico y no requiere autenticación para ser explotada.

Posibilidad de ocurrencia: Casi Seguro. Aunque no existen agentes de amenazas conocidos, existe mucha documentación y herramientas
automáticas o exploits para que un intruso explote las vulnerabilidades conocidas.

Impacto: Superior. Las vulnerabilidades encontradas afectan la confiabilidad,  disponibilidad e integridad de los activos evaluados y de la información.

NOTA: La clasificación de la posibilidad de ocurrencia y el impacto es cualitativa con base a la metodología de riesgo sugerida por la NIST en su publicación especial 800-30.

Riesgo informático: Muy Alto. Afecta la confidencialidad, integridad y disponibilidad de la información y de los activos (AppWeb y Servidor Web).

Prueba de concepto: La prueba consistió en pasar como parámetro GET la ruta /etc/passwd%00” a la variable “page” del archivo llamado “index.php” en la sesión de administración de la aplicación Web con el fin de listar el contenido archivo /etc/passwd del servidor Linux en donde está alojada la aplicación, con esto se podría posteriormente realizar una intrusión al servidor Web.

Pasos para la explotación de la vulnerabilidad:

1. Se ingresa a la página de administración de la aplicación Web.

Admin-WackoPicko

2. Se le pasa como parámetros al final de la URL el valor “/etc/passwd%00” para que liste el archivo passwd, que contiene los usuarios, contraseñas cifradas y privilegios del servidor Web en Linux.

 PoC-WackoPicko

 Conclusiones y recomendaciones:

  • Con WackoPicko, tenemos una forma practica de probar la efectividad de herramientas que escanean vulnerabilidades Web, así como la posibilidad de aprender y realizar pruebas de concepto de cada tipo de vulnerabilidad.
  • El análisis de vulnerabilidades en aplicaciones Web, es un tema complejo, sobretodo en su remediación, sin embargo, si se inicia probando aplicaciones como estas que son muy realistas y siguiendo una metodología adecuada, puede ayudar a entender mejor y reducir el nivel de riesgo en los activos de información (ej. Sitios Web).
  • Existen muchas otras vulnerabilidades conocidas, que los responsables de sitios o aplicaciones Web deberían estar preocupados por conocer y remediar, con el fin de garantizar la confidencialidad, integridad y disponibilidad de la información.
  • Se recomienda analizar y probar otras aplicaciones que contiene el proyecto OWASP Broken Web Applications (BWA) para afianzar los conocimientos en este tema y compartirlos con los demás.

By @JOGAcrack.

Anuncios