Sunteți pe pagina 1din 32

Análisis de

Vulnerabilidades
Análisis de vulnerabilidades

• Automatizada
• Manual

2
Análisis de vulnerabilidades
Automatizada
• Categorías:
– Scanner a nivel aplicación.
– Scanner a nivel sistema.

3
Herramientas
Scanner a nivel de sistemas

www.gfi.com www.rapid7.com

www-arc.com/sara/
IBM : www.iss.net www.nessus.org

Retina : www.eeye.com www.qualys.com www.saintcorporation.com

4
Herramientas
Scanner a nivel de aplicación

5
Nessus : Arquitectura
O

B
browser
J

U
nessusd A
http server 6 R
Nessus : Instalación
•Instalación única
 Seleccionar “Nessus-XXX_???.YYY” (i386/amd64)
 Registrarse para envió de código de activación
 Disponible para todos los sistemas Unix y MS Windows
 Instalar archivo descargado.
 SCAN-ERROR
 Too many live hosts scanned in a row while on a
HomeFeed - please upgrade to a ProfessionalFeed

Nessus ID : 19506
 Reducing max_hosts to 16 (HomeFeed)

7
Nessus : Instalación

8
Cliente Nessus

9 9
Nessus : Ejecución
• Servidor
/etc/init.d/nessusd start

(Comprobar con netstat -nap | grep nessus )

• Cliente
– https://127.0.0.1:8834/

10
Nessus y nmap

• Nessus TCP scanner.


• Nmap plugin
– Descargar nmap.nasl y nmapxml.nasl
– cp nmap.nasl /opt/nessus/lib/nessus/plugins/
– cp nmapxml.nasl /opt/nessus/lib/nessus/plugins
– Re-iniciar nessusd
• Asegurarse con killall -9 nessusd y ps agux
11
CtF 4 : Explotando después
de Nessus
• El instructor proveerá las direcciones IP de hosts a
evaluar con Nessus.
• Estos hosts tienen vulnerabilidades diversas.
• El reto es seleccionar una vulnerabilidad sobre una
base de datos que permita obtener la siguiente
información del host:
– Todo lo registrado en el caché DNS
• Buscar una herramienta que permita explotar dicha
vulnerabilidad (puede ser para Linux o MS Windows)
– Puntaje : 10 puntos G.
12
Análisis de
Vulnerabilidades Web
Herramientas
Scanner a nivel de aplicación
• Ratproxy
• N-Stalker
• WebInspect
• Nikto
• AppDetective
• Zap
• Acunetix

14
Introducción a las
Vulnerabilidades Web
Explicación en clase utilizando Damn
Vulnerable Web Application

http://www.dvwa.co.uk/
15
SQL Injection
Recuerdos...

SELECT * FROM Tabla;

(Esta consulta devuelve un recordset con todos los registros de la tabla


“Tabla”)

UPDATE Tabla SET password = 'AngelPassword' WHERE user = 'admin'

(Esta sentencia actualizará el campo password para el usuario “admin”,


con el valor indicado)

17
Qué es SQL Injection?

 Se denomina SQL Injection, a la


posibilidad de insertar sentencias SQL
arbitrarias, dentro de una consulta
previamente establecida, con el objeto
de manipular de una u otra forma, los
procesos lícitos de una aplicación
determinada.

18
Conceptualmente
 Una sentencia SQL típica, suele tener el siguiente aspecto:

SELECT * FROM users

 Restringiendo el Resultado

SELECT * FROM users WHERE username = 'Angel' AND userpass = 'Skate'

19
Un Login...
 Query String

sql = "SELECT * FROM users WHERE


username = '" + username + "' AND userpass
= '" + password + "'"
 También llamada Single Quote o Tick, la comilla simple es un
metacaracter, y como tal en el contexto de un string, tiene una función
bien definida.
 Dentro de una estructura SQL, se utiliza la comilla simple ( ' ) para
delimitar variables dentro de una consulta.

20
Comilla Simple o Apóstrofe
Username: Angel

Password: 338XD

sql = "SELECT * FROM users WHERE username = '" + username + "' AND
userpass = '" + password + "'"

 El Interprete / Base de Datos recibiría:

SELECT * FROM Users WHERE username = 'Angel' AND userpass = '338XD'

21
Comilla Simple o Apóstrofe

Username: An’gel

Password: 338XD

sql = "SELECT * FROM users WHERE


username = '" + username + "' AND userpass
= '" + password + "'"
 Provocando el error…

SELECT * FROM users WHERE username =


'An'gel' AND userpass ='338XD'
22
Error de Sintáxis : Sqli ! (casi
siempre...)

Microsoft OLE DB Provider for SQL Server


(0x80040E14)
Line 1: Incorrect syntax near 'gel'.
/process_login.asp, línea 25

23
Login Bypass con Sqli
Objetivos:

- Ingresar a zonas restringidas del website objetivo.

- Impersonar un usuario estándar.

- Identificar un posible Administrador e Impersonarlo.

 Como intentar by-pasear la autenticación?

 Interpretando / adivinando la forma en que la aplicación esta manejando

requerimientos de autenticación.
 Inyectando lógica SQL, en los campos de usuario y contraseña del
formulario.
 Algunas opciones:
' or 1=1 -- Admin' -- ' or ''='' --
24
Login Bypass con Sqli
 Por que la inyección de este código debería funcionar?

' or 1=1 --
SELECT * FROM users WHERE username = '' or 1=1 -- ' AND userpass =''

Admin' --

SELECT * FROM users WHERE username = 'admin' -- AND userpass =''

' OR ''='' --

SELECT * FROM users WHERE username = '' OR ''='' -- AND userpass =''

25
Demo
 “Autenticandose”

26
Un ejemplo más dañino
• No solamente visualizar :
– blah‘; DROP TABLE prodinfo; --
• Resulta en :
– SELECT prodinfo FROM prodtable WHERE prodname = ‘blah’; DROP TABLE
prodinfo; --’
– E (--) marca el final de la setencia
• Toda la tabla borrada
– Se requiere haber obtenido el nombre de la tabla
– Casi siempre, se obtiene de los mensajes de error

27
SQL Injection : Ciega o Blind
 Se han analizado inyecciones normales (basadas en
mensajes de error, visibles, “in-band”) que muestran
los resultados facilmente en las respuestas HTML de
la aplicación.
 Sin embargo, existen otras denominadas
“ciegas” porque los errores de la base de
datos y resultados de los inyecciones no son
mostrados en las respuestas de la aplicación.
 Sí : variable=1 and 1=1 -- muestra una
página diferente a variable=1 and 1=0 --,
entonces, existe la vulnerabilidad.
28 28
SQL Injection : Ciega o Blind

29
SQL Injection : Ciega o Blind

30
CtF 5 : SQLi to the max!
• ACME tiene un web lleno de contenido y una base de datos que espera ser
vulnerada

• Basado en el conocimiento de inyecciones de SQL, se requiere evaluar la


posibilidad de tener éxito en un ataque de SQLi

• De comprobarse que existe una SQLi, se requiere listar los passwords de la


tabla de usuarios de ACME

• Usar el SQLi-Recetario.txt como referencia

• Más detalles en clase...

• Puntaje : 10 Puntos G.
31
CtF 6 : Tampering y webshell
• Realizar un descubrimiento de directorios web, hallar la aplicación de

reportes de planillas y basado en el conocimiento de inyecciones de SQL,


acceder a dicha aplicación.

• Una vez logueado en la aplicación de reporte de planillas, debe realizar la

manipulación de los parámetros para lograr acceso a la sección de


planillas de gerencia, en esta sección logrará tener acceso a la
funcionalidad para subir planillas.

• Use la opción de subir planillas para lograr subir una webshell que permita la

ejecución de comandos dentro del servidor web.


32
• Puntaje : 10 Puntos G.

S-ar putea să vă placă și