Gastón Toth gaston.toth@owasp.org Lic. en Computación CEH Pentester Desarrollador @OWASP_Patagonia
Dónde queda OWASP Patagonia?
Webapp pentesting...desde un enfoque no muy técnico
Penetration testing es el arte de analizar una aplicación en ejecución sin conocer su funcionamiento interno para encontrar vulnerabilidades de seguridad OWASP Testing Guide
Por qué hacer un pentest? Conocer el estado de seguridad en un momento determinado Buscar falencias en las configuraciones Cumplir con los requerimientos para las certificaciones Evitar posibles ataques que puedan llevar a pérdidas de dinero y/o a generar una mala imagen a la organización
Puntos importantes en un pentest: - Obtener la mayor cantidad de información posible - Determinar la tecnología utilizada - Comprender el entorno - Entender la lógica de la aplicación - Observar el funcionamiento normal de la aplicación - Modificar cada punto de entrada y ver como se comporta - Detectar y explotar vulnerabilidades - Buscarle la vuelta - Y buscarle la vuelta
Obtención de información
Google hacking Utilizar operadores para filtrar búsquedas site:owasp.org site:owasp.org intitle:index.of "BEGIN RSA PRIVATE KEY" filetype:key site:owasp.org -site:www.owasp.org
Google hacking inurl:admin/login.php ext:sql intext:username intext:password filetype:pdf filetype:doc filetype:xls intitle:router New Generation & inurl:/home.asp inurl:/control/userimage.html
Qué se puede encontrar? Usuarios y contraseñas Formularios de acceso Mensajes de error Dispositivos hardware online Archivos con información sensible https://www.exploit-db.com/google-hacking-database/
Por ejemplo: filetype:bash_history
Copias de archivos Archivos del tipo: Index.php.old Config.php.bak Conexion.cgi~ Permiten la lectura del archivo en texto plano, haciendo posible la comprensión de la lógica de la aplicación.
Otros lugares donde buscar: bing.com archive.org pastebin.com stackoverflow.com shodan.io y muchos mas...
En un foro de programación: ayuda para hacer un programa que envíe un correo cierto día copio el código para que me puedan decir que está mal
Identificación de tecnología En necesario saber la tecnología de los servidores que estamos analizando. Las pruebas para un servidor Apache no serán las mismas que para uno con IIS. Igualmente para las bases de datos, sistemas operativos, etc.
Identificación de tecnología de servidor web Banner - Cabecera Server
Identificación de tecnología de servidor web Mensajes de error
Identificación de tecnología de servidor web Análisis de comportamiento - Orden de las cabeceras - Malformed requests
Y cuando nada de eso funciona...
Una vez que se obtiene el tipo de tecnología y la versión utilizada, se pueden buscar las vulnerabilidades conocidas en: http://osvdb.org/ http://www.securityfocus.com/bid http://cve.mitre.org/ y otros
Enumeración de aplicaciones Es el proceso de identificación de aplicaciones web instaladas en una infraestructura determinada. Es muy importante identificar las distintas aplicaciones que corren en un servidor ya que pueden encontrarse casos de programas de mucha seguridad que comparten el servidor con otros que son vulnerables, en cuyo caso la seguridad puede verse comprometida en su totalidad.
Enumeración de aplicaciones Webservers en diferentes puertos Ejemplo: - Puerto 80: Aplicación de e-commerce - Puerto 8080: Portal administrativo
Enumeración de aplicaciones Aplicaciones en diversas URL Ejemplo: - www.target.com/ Drupal - www.target.com/test Joomla - www.target.com/blog Wordpress Se puede lograr mediante crawling o fuerza bruta
Archivo robots.txt Nunca debe pensarse como mecanismo de protección!
OWASP Dirbuster Herramienta para buscar archivos y directorios por fuerza bruta
Enumeración de aplicaciones Servidores virtuales Permiten tener una cantidad variable de dominios y sitios web en una misma máquina. Los sitios web alojados comparten los recursos disponibles. El campo Host de la cabecera HTTP permite identificar al host virtual al que estamos haciendo referencia.
Enumeración de aplicaciones www.sitioseguro.com www.superseguro.com IP: xx.xx.xx.xx www.desprotegido.com Un solo host desprotegido puede comprometer toda la seguridad.
Conocer el entorno eth0 Ip pub 1 eth1 192.168.1.2 eth0: password protected eth1: trust internal servers eth0 Ip pub 2 eth1 192.168.1.3 Sitio de pruebas
Ips vecinas y relaciones de confianza eth1 192.168.1.2 eth0: password protected eth1: trust internal servers eth0 Ip pub 2 eth1 192.168.1.3 Sitio de pruebas Confianza eth0 Ip pub 1
Hasta acá no ha sido muy difícil y ya tenemos MUCHA INFORMACIÓN sobre el objetivo
Luego, debemos buscar los fallos en cada uno de los sistemas encontrados en las etapas previas.
Búsqueda de fallos Automático: Es muy rápido y puede detectar varias fallas de las aplicaciones y servidores en pocos minutos. Manual: Es más lento pero se pueden hacer pruebas que ninguna herramienta automática podría hacer.
Análisis automático ZAP w3af Acunetix Burp Vega Wapiti Nikto Arachni
Modificación de puntos de entrada Métodos (GET, POST, PUT,...) Parámetros Headers Cookies URLs Se busca ingresar valores que generen un comportamiento no planificado en la aplicación y que no cuenten con la validación necesaria
Que se puede hacer modificando estos puntos de entrada? Inyección SQL // Ver: SQL Injection Deep Dive Cross Site Scripting // Ver XSS - from alert to pwnage Inyección LDAP Inyección XML Inyección ORM Inyección HTML etc
Dato interesante: Existen otras alternativas, como un código de barras o formularios escritos en papel, que serán escaneados y parseados por un OCR y el código que lo lee puede ser vulnerable a inyecciones.
Lógica de la aplicación Este tipo de vulnerabilidad no puede ser detectado por ninguna herramienta y depende únicamente de los conocimientos y creatividad del consultor.
Lógica de la aplicación Generalmente aquí se encuentran los fallos con mayor impacto. - Fraude - Degradamiento de imagen - Robo
Consejos para aprender pentesting Instalar y configurar servidores Desarrollar en distintas tecnologías Instalar y probar diversos CMS Asistir a eventos de OWASP ;) Participar de CTFs Bug bounties
Dónde encontrar más información sobre webapp pentesting? https://www.owasp.org/index.php/owasp_testing_project
Preguntas?
MUCHAS GRACIAS @OWASP_Patagonia gaston.toth@owasp.org