[email protected] - owasp appsec :: rio de la plata 2016

Transcripción

[email protected] - owasp appsec :: rio de la plata 2016
Gastón Toth
[email protected]
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
[email protected]