SearchSploit - Base de Datos de Exploits
SearchSploit - Base de Datos de Exploits
Section titled “SearchSploit - Base de Datos de Exploits”Introducción
Section titled “Introducción”SearchSploit es una herramienta de línea de comandos que permite buscar y examinar exploits en la base de datos local de Exploit Database (Exploit-DB). Es una herramienta esencial para pentesters que necesitan encontrar rápidamente exploits conocidos para vulnerabilidades específicas.
¿Qué es Exploit Database?
Section titled “¿Qué es Exploit Database?”Exploit Database es una base de datos pública de exploits y vulnerabilidades mantenida por Offensive Security. Contiene:
- Más de 50,000 exploits: Código de explotación verificado
- Shellcodes: Código de payload para diferentes arquitecturas
- Papers: Documentación técnica sobre vulnerabilidades
- Webapps: Exploits específicos para aplicaciones web
- Actualizaciones diarias: Nueva información de seguridad
Importancia en Pentesting
Section titled “Importancia en Pentesting”SearchSploit es crucial porque:
- Búsqueda offline: No requiere conexión a internet
- Búsqueda rápida: Indexación local eficiente
- Código fuente: Acceso directo al código de exploits
- Verificación: Exploits probados y verificados
- Integración: Compatible con Metasploit y otras herramientas
Instalación
Section titled “Instalación”Kali Linux (Preinstalado)
Section titled “Kali Linux (Preinstalado)”# SearchSploit viene preinstalado en Kali Linuxsearchsploit --version
# Actualizar base de datossearchsploit -uUbuntu/Debian
Section titled “Ubuntu/Debian”# Instalar git si no está disponiblesudo apt updatesudo apt install git
# Clonar repositorio de Exploit Databasegit clone https://github.com/offensive-security/exploitdb.git /opt/exploitdb
# Crear enlace simbólicosudo ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit
# Configurar ruta de la base de datosecho 'export PATH="/opt/exploitdb:$PATH"' >> ~/.bashrcsource ~/.bashrcInstalación Manual
Section titled “Instalación Manual”# Descargar desde GitHubwget https://github.com/offensive-security/exploitdb/archive/main.zipunzip main.zipmv exploitdb-main /opt/exploitdb
# Hacer ejecutablechmod +x /opt/exploitdb/searchsploit
# Agregar al PATHexport PATH="/opt/exploitdb:$PATH"Docker
Section titled “Docker”# Usar imagen Docker oficialdocker pull offensive/exploitdb
# Ejecutar con Dockerdocker run --rm -it offensive/exploitdb searchsploit apacheUso Básico
Section titled “Uso Básico”Sintaxis Fundamental
Section titled “Sintaxis Fundamental”# Sintaxis generalsearchsploit [opciones] <términos de búsqueda>
# Búsqueda básicasearchsploit apache
# Búsqueda con múltiples términossearchsploit apache 2.4
# Búsqueda exactasearchsploit "apache 2.4.7"Parámetros Principales
Section titled “Parámetros Principales”| Parámetro | Descripción | Ejemplo |
|---|---|---|
-t, --title | Buscar solo en títulos | searchsploit -t apache |
-e, --exact | Búsqueda exacta | searchsploit -e "apache 2.4" |
-s, --strict | Búsqueda estricta | searchsploit -s apache |
-w, --www | Mostrar URLs de Exploit-DB | searchsploit -w apache |
-c, --case | Sensible a mayúsculas | searchsploit -c Apache |
-x, --examine | Examinar exploit específico | searchsploit -x 12345 |
-m, --mirror | Copiar exploit localmente | searchsploit -m 12345 |
-p, --path | Mostrar ruta completa | searchsploit -p apache |
Ejemplos Prácticos
Section titled “Ejemplos Prácticos”Búsquedas Básicas
Section titled “Búsquedas Básicas”# Buscar exploits de Apachesearchsploit apache
# Ejemplo de salida:# ----------------------------------------- ---------------------------------# Exploit Title | Path# ----------------------------------------- ---------------------------------# Apache 2.4.7 - Remote Code Execution | linux/remote/12345.py# Apache mod_ssl 2.8.x - Buffer Overflow | linux/local/67890.c# ----------------------------------------- ---------------------------------
# Buscar por versión específicasearchsploit apache 2.4.7
# Buscar en títulos únicamentesearchsploit -t "remote code execution"Búsquedas Avanzadas
Section titled “Búsquedas Avanzadas”# Búsqueda exacta con comillassearchsploit -e "Windows 10"
# Búsqueda estricta (sin coincidencias parciales)searchsploit -s mysql
# Búsqueda sensible a mayúsculassearchsploit -c MySQL
# Combinar parámetrossearchsploit -t -e "Apache 2.4"Examinar y Copiar Exploits
Section titled “Examinar y Copiar Exploits”# Examinar un exploit específicosearchsploit -x linux/remote/12345.py
# Copiar exploit al directorio actualsearchsploit -m 12345
# Copiar múltiples exploitssearchsploit -m 12345 67890 11111
# Mostrar ruta completa del exploitsearchsploit -p apache | head -5Obtener URLs Web
Section titled “Obtener URLs Web”# Mostrar URLs de Exploit-DBsearchsploit -w apache
# Ejemplo de salida:# Apache 2.4.7 - RCE | https://www.exploit-db.com/exploits/12345
# Combinar con otras opcionessearchsploit -w -t "buffer overflow"Scripts de Automatización
Section titled “Scripts de Automatización”Buscador Automatizado de Exploits
Section titled “Buscador Automatizado de Exploits”#!/bin/bash# exploit_finder.sh - Buscador automatizado de exploits
search_exploits() { local service=$1 local version=$2 local output_dir="exploit_search_$(date +%Y%m%d_%H%M%S)"
mkdir -p $output_dir
echo "[+] Buscando exploits para: $service $version" echo "[+] Resultados en: $output_dir"
# Búsqueda básica echo "=== BÚSQUEDA BÁSICA ===" > $output_dir/basic_search.txt searchsploit "$service $version" >> $output_dir/basic_search.txt
# Búsqueda exacta echo "=== BÚSQUEDA EXACTA ===" > $output_dir/exact_search.txt searchsploit -e "$service $version" >> $output_dir/exact_search.txt
# Búsqueda solo en títulos echo "=== BÚSQUEDA EN TÍTULOS ===" > $output_dir/title_search.txt searchsploit -t "$service" >> $output_dir/title_search.txt
# Obtener URLs echo "=== URLS DE EXPLOIT-DB ===" > $output_dir/urls.txt searchsploit -w "$service $version" >> $output_dir/urls.txt
# Análisis de resultados analyze_results $output_dir "$service $version"}
analyze_results() { local output_dir=$1 local search_term=$2
echo "[+] Analizando resultados..."
# Contar exploits encontrados local total_basic=$(grep -c "linux\|windows\|multiple" $output_dir/basic_search.txt 2>/dev/null || echo "0") local total_exact=$(grep -c "linux\|windows\|multiple" $output_dir/exact_search.txt 2>/dev/null || echo "0")
# Generar resumen cat > $output_dir/RESUMEN.txt << EOF=== RESUMEN DE BÚSQUEDA DE EXPLOITS ===Término de búsqueda: $search_termFecha: $(date)
ESTADÍSTICAS:- Exploits encontrados (búsqueda básica): $total_basic- Exploits encontrados (búsqueda exacta): $total_exact
CATEGORÍAS DETECTADAS:EOF
# Categorizar por plataforma echo "Linux:" >> $output_dir/RESUMEN.txt grep "linux/" $output_dir/basic_search.txt | wc -l >> $output_dir/RESUMEN.txt
echo "Windows:" >> $output_dir/RESUMEN.txt grep "windows/" $output_dir/basic_search.txt | wc -l >> $output_dir/RESUMEN.txt
echo "Multiple:" >> $output_dir/RESUMEN.txt grep "multiple/" $output_dir/basic_search.txt | wc -l >> $output_dir/RESUMEN.txt
# Top 10 exploits más relevantes echo -e "\nTOP 10 EXPLOITS MÁS RELEVANTES:" >> $output_dir/RESUMEN.txt head -10 $output_dir/exact_search.txt | grep -E "(linux|windows|multiple)" >> $output_dir/RESUMEN.txt
echo "[+] Resumen generado: $output_dir/RESUMEN.txt"}
# Uso del scriptif [ $# -lt 1 ]; then echo "Uso: $0 <servicio> [versión]" echo "Ejemplo: $0 apache 2.4.7" exit 1fi
search_exploits "$1" "$2"Descargador Masivo de Exploits
Section titled “Descargador Masivo de Exploits”#!/bin/bashdownload_exploits_by_service() { local service=$1 local download_dir="exploits_${service}_$(date +%Y%m%d)"
mkdir -p $download_dir cd $download_dir
echo "[+] Descargando exploits para: $service"
# Buscar y extraer IDs de exploits searchsploit $service | grep -oE '[0-9]+\.(py|c|txt|pl|rb|sh)' | while read exploit_file; do exploit_id=$(echo $exploit_file | grep -oE '[0-9]+')
echo "[+] Descargando exploit ID: $exploit_id" searchsploit -m $exploit_id
# Renombrar con información descriptiva if [ -f "$exploit_file" ]; then exploit_title=$(searchsploit $service | grep $exploit_id | awk -F'|' '{print $1}' | xargs) safe_title=$(echo "$exploit_title" | tr ' /' '_' | tr -cd '[:alnum:]_.-') mv "$exploit_file" "${exploit_id}_${safe_title}.${exploit_file##*.}" fi
sleep 1 # Evitar sobrecarga done
cd .. echo "[+] Exploits descargados en: $download_dir" ls -la $download_dir}
# Función para descargar exploits por plataformadownload_by_platform() { local platform=$1 local output_dir="exploits_${platform}_$(date +%Y%m%d)"
mkdir -p $output_dir
echo "[+] Descargando exploits para plataforma: $platform"
# Buscar exploits por plataforma find /opt/exploitdb/exploits/$platform -name "*.py" -o -name "*.c" -o -name "*.txt" | head -50 | while read exploit_path; do exploit_name=$(basename "$exploit_path") cp "$exploit_path" "$output_dir/" echo "[+] Copiado: $exploit_name" done
echo "[+] Exploits de $platform descargados en: $output_dir"}
# Usocase $1 in "service") download_exploits_by_service $2 ;; "platform") download_by_platform $2 ;; *) echo "Uso: $0 <service|platform> <nombre>" echo "Ejemplos:" echo " $0 service apache" echo " $0 platform linux" ;;esacAnalizador de Exploits
Section titled “Analizador de Exploits”#!/bin/bashanalyze_exploit() { local exploit_id=$1 local analysis_dir="analysis_${exploit_id}_$(date +%Y%m%d_%H%M%S)"
mkdir -p $analysis_dir
echo "[+] Analizando exploit ID: $exploit_id"
# Copiar exploit localmente searchsploit -m $exploit_id
# Encontrar el archivo descargado exploit_file=$(ls | grep "^$exploit_id\.")
if [ -z "$exploit_file" ]; then echo "[-] No se pudo encontrar el exploit $exploit_id" return 1 fi
echo "[+] Archivo encontrado: $exploit_file"
# Análisis básico del archivo echo "=== INFORMACIÓN BÁSICA ===" > $analysis_dir/basic_info.txt echo "Archivo: $exploit_file" >> $analysis_dir/basic_info.txt echo "Tamaño: $(wc -c < $exploit_file) bytes" >> $analysis_dir/basic_info.txt echo "Líneas: $(wc -l < $exploit_file)" >> $analysis_dir/basic_info.txt echo "Tipo: $(file $exploit_file)" >> $analysis_dir/basic_info.txt echo "" >> $analysis_dir/basic_info.txt
# Extraer información del exploit echo "=== METADATOS DEL EXPLOIT ===" >> $analysis_dir/basic_info.txt head -20 $exploit_file | grep -E "(Title|Date|Author|CVE|Vulnerable)" >> $analysis_dir/basic_info.txt
# Análisis de código según el tipo case $exploit_file in *.py) analyze_python_exploit $exploit_file $analysis_dir ;; *.c) analyze_c_exploit $exploit_file $analysis_dir ;; *.pl) analyze_perl_exploit $exploit_file $analysis_dir ;; *.rb) analyze_ruby_exploit $exploit_file $analysis_dir ;; esac
# Buscar strings interesantes echo "=== STRINGS INTERESANTES ===" > $analysis_dir/strings.txt strings $exploit_file | grep -E "(http|ftp|/bin/|cmd|shell|exploit|payload)" >> $analysis_dir/strings.txt
# Buscar direcciones IP y URLs echo "=== DIRECCIONES Y URLS ===" > $analysis_dir/network_info.txt grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' $exploit_file >> $analysis_dir/network_info.txt grep -oE 'https?://[^\s]+' $exploit_file >> $analysis_dir/network_info.txt
echo "[+] Análisis completado en: $analysis_dir"}
analyze_python_exploit() { local file=$1 local dir=$2
echo "=== ANÁLISIS PYTHON ===" > $dir/python_analysis.txt
# Importaciones echo "Importaciones:" >> $dir/python_analysis.txt grep "^import\|^from.*import" $file >> $dir/python_analysis.txt
# Funciones definidas echo -e "\nFunciones definidas:" >> $dir/python_analysis.txt grep "^def " $file >> $dir/python_analysis.txt
# Variables de configuración echo -e "\nVariables de configuración:" >> $dir/python_analysis.txt grep -E "^[A-Z_]+ = " $file >> $dir/python_analysis.txt
# Verificar sintaxis python3 -m py_compile $file 2>&1 | head -10 >> $dir/python_analysis.txt}
analyze_c_exploit() { local file=$1 local dir=$2
echo "=== ANÁLISIS C ===" > $dir/c_analysis.txt
# Includes echo "Includes:" >> $dir/c_analysis.txt grep "^#include" $file >> $dir/c_analysis.txt
# Funciones principales echo -e "\nFunciones:" >> $dir/c_analysis.txt grep -E "^[a-zA-Z_][a-zA-Z0-9_]*\s*\(" $file | head -10 >> $dir/c_analysis.txt
# Llamadas a sistema echo -e "\nLlamadas a sistema:" >> $dir/c_analysis.txt grep -E "(system|exec|fork|socket)" $file >> $dir/c_analysis.txt
# Intentar compilar (si gcc está disponible) if command -v gcc >/dev/null 2>&1; then echo -e "\nIntento de compilación:" >> $dir/c_analysis.txt gcc -o /tmp/test_compile $file 2>&1 | head -10 >> $dir/c_analysis.txt rm -f /tmp/test_compile fi}
# Usoif [ $# -ne 1 ]; then echo "Uso: $0 <exploit_id>" echo "Ejemplo: $0 12345" exit 1fi
analyze_exploit $1Integración con Otras Herramientas
Section titled “Integración con Otras Herramientas”Con Metasploit
Section titled “Con Metasploit”# Buscar exploits que tienen módulos en Metasploitsearchsploit apache | grep -i metasploit
# Buscar por CVE y luego en Metasploitsearchsploit CVE-2021-44228msfconsole -q -x "search CVE-2021-44228; exit"Con Nmap
Section titled “Con Nmap”#!/bin/bash# Función para procesar resultados de Nmapprocess_nmap_results() { local nmap_file=$1
echo "[+] Procesando resultados de Nmap: $nmap_file"
# Extraer servicios y versiones grep -E "^[0-9]+/(tcp|udp)" $nmap_file | while read line; do port=$(echo $line | awk '{print $1}') service=$(echo $line | awk '{print $3}') version=$(echo $line | cut -d' ' -f4- | sed 's/^version //')
echo "[+] Puerto $port - $service $version"
# Buscar exploits para este servicio if [ ! -z "$version" ]; then echo " Buscando exploits para: $service $version" searchsploit "$service $version" | head -5 else echo " Buscando exploits para: $service" searchsploit "$service" | head -3 fi echo "----------------------------------------" done}
# Uso con archivo de Nmapif [ $# -eq 1 ]; then process_nmap_results $1else echo "Uso: $0 <archivo_nmap.txt>"fiCon Nuclei
Section titled “Con Nuclei”# Buscar templates de Nuclei relacionados con exploits encontradossearch_nuclei_templates() { local service=$1
echo "[+] Buscando exploits y templates de Nuclei para: $service"
# Buscar exploits echo "=== EXPLOITS DISPONIBLES ===" searchsploit $service | head -10
# Buscar templates de Nuclei echo -e "\n=== TEMPLATES DE NUCLEI ===" find ~/nuclei-templates -name "*.yaml" -exec grep -l "$service" {} \; | head -10}Casos de Uso Específicos
Section titled “Casos de Uso Específicos”Análisis de CVE
Section titled “Análisis de CVE”#!/bin/bashanalyze_cve() { local cve_id=$1 local output_dir="cve_analysis_${cve_id//CVE-/}_$(date +%Y%m%d)"
mkdir -p $output_dir
echo "[+] Analizando CVE: $cve_id"
# Buscar exploits para el CVE echo "=== EXPLOITS PARA $cve_id ===" > $output_dir/exploits.txt searchsploit $cve_id >> $output_dir/exploits.txt
# Buscar información adicional echo "=== INFORMACIÓN ADICIONAL ===" > $output_dir/additional_info.txt searchsploit -w $cve_id >> $output_dir/additional_info.txt
# Buscar en diferentes formatos del CVE cve_year=$(echo $cve_id | cut -d'-' -f2) cve_number=$(echo $cve_id | cut -d'-' -f3)
echo "=== BÚSQUEDAS ALTERNATIVAS ===" >> $output_dir/additional_info.txt searchsploit "$cve_year-$cve_number" >> $output_dir/additional_info.txt searchsploit "CVE $cve_year $cve_number" >> $output_dir/additional_info.txt
# Descargar exploits relevantes searchsploit -m $cve_id 2>/dev/null mv *.py *.c *.txt *.pl $output_dir/ 2>/dev/null
echo "[+] Análisis de CVE completado en: $output_dir"}
# Usoif [ $# -ne 1 ]; then echo "Uso: $0 <CVE-ID>" echo "Ejemplo: $0 CVE-2021-44228" exit 1fi
analyze_cve $1Búsqueda por Plataforma
Section titled “Búsqueda por Plataforma”#!/bin/bashsearch_by_platform() { local platform=$1 local keyword=$2 local output_file="platform_search_${platform}_$(date +%Y%m%d).txt"
echo "[+] Buscando exploits para plataforma: $platform" echo "[+] Palabra clave: $keyword"
case $platform in "linux") searchsploit $keyword | grep "linux/" > $output_file ;; "windows") searchsploit $keyword | grep "windows/" > $output_file ;; "web") searchsploit $keyword | grep -E "(php|asp|jsp|web)" > $output_file ;; "mobile") searchsploit $keyword | grep -E "(android|ios|mobile)" > $output_file ;; *) echo "Plataformas soportadas: linux, windows, web, mobile" return 1 ;; esac
echo "[+] Resultados guardados en: $output_file" echo "[+] Total de exploits encontrados: $(wc -l < $output_file)"
# Mostrar top 10 echo "[+] Top 10 exploits:" head -10 $output_file}
# Usosearch_by_platform $1 $2Mantenimiento y Actualización
Section titled “Mantenimiento y Actualización”Actualizar Base de Datos
Section titled “Actualizar Base de Datos”# Actualización automáticasearchsploit -u
# Actualización manualcd /opt/exploitdbgit pull origin main
# Verificar última actualizaciónsearchsploit --help | grep "Last DB Update"Script de Mantenimiento
Section titled “Script de Mantenimiento”#!/bin/bashmaintain_exploitdb() { echo "[+] Iniciando mantenimiento de Exploit Database..."
# Verificar instalación if ! command -v searchsploit >/dev/null 2>&1; then echo "[-] SearchSploit no está instalado" return 1 fi
# Mostrar información actual echo "[+] Versión actual:" searchsploit --version
# Actualizar base de datos echo "[+] Actualizando base de datos..." searchsploit -u
# Verificar integridad echo "[+] Verificando integridad..." if [ -d "/opt/exploitdb" ]; then echo "Directorio principal: OK" echo "Exploits disponibles: $(find /opt/exploitdb/exploits -name "*.py" -o -name "*.c" -o -name "*.txt" | wc -l)" fi
# Limpiar archivos temporales echo "[+] Limpiando archivos temporales..." find . -name "*.tmp" -delete 2>/dev/null find . -name "core" -delete 2>/dev/null
echo "[+] Mantenimiento completado"}
maintain_exploitdbTroubleshooting
Section titled “Troubleshooting”Problemas Comunes
Section titled “Problemas Comunes”# Problema: SearchSploit no encuentra exploits# Solución: Actualizar base de datossearchsploit -u
# Problema: Ruta incorrecta# Solución: Verificar configuraciónwhich searchsploitecho $PATH
# Problema: Permisos# Solución: Verificar permisos del directoriols -la /opt/exploitdb/sudo chown -R $USER:$USER /opt/exploitdb/
# Problema: Base de datos corrupta# Solución: Re-clonar repositoriorm -rf /opt/exploitdbgit clone https://github.com/offensive-security/exploitdb.git /opt/exploitdbVerificación de Instalación
Section titled “Verificación de Instalación”#!/bin/bashverify_installation() { echo "[+] Verificando instalación de SearchSploit..."
# Verificar comando if command -v searchsploit >/dev/null 2>&1; then echo "[+] SearchSploit está instalado" searchsploit --version else echo "[-] SearchSploit no está instalado" return 1 fi
# Verificar base de datos if [ -d "/opt/exploitdb" ]; then echo "[+] Base de datos encontrada en /opt/exploitdb" echo " Exploits: $(find /opt/exploitdb/exploits -type f | wc -l)" echo " Shellcodes: $(find /opt/exploitdb/shellcodes -type f 2>/dev/null | wc -l)" else echo "[-] Base de datos no encontrada" fi
# Test básico echo "[+] Realizando test básico..." test_result=$(searchsploit apache 2>&1 | head -1) if [[ $test_result == *"Exploit Title"* ]]; then echo "[+] Test básico: OK" else echo "[-] Test básico: FALLO" fi}
verify_installationRecursos Adicionales
Section titled “Recursos Adicionales”Herramientas Complementarias
Section titled “Herramientas Complementarias”- Metasploit: Framework de explotación
- Nuclei: Scanner de vulnerabilidades
- Nmap: Descubrimiento de servicios
- Burp Suite: Pruebas de aplicaciones web
Bases de Datos Relacionadas
Section titled “Bases de Datos Relacionadas”- CVE Details: Información detallada de CVEs
- NVD: Base de datos nacional de vulnerabilidades
- Packet Storm: Exploits y herramientas de seguridad
- 0day.today: Exploits de día cero
Enlaces Útiles
Section titled “Enlaces Útiles”Disclaimer Legal
Section titled “Disclaimer Legal”⚠️ IMPORTANTE: Esta documentación es únicamente para fines educativos y de investigación en ciberseguridad. El uso de SearchSploit y los exploits debe realizarse exclusivamente en:
- Sistemas propios
- Entornos de laboratorio
- Pruebas de penetración autorizadas
El uso no autorizado puede constituir un delito. Los autores no se hacen responsables del mal uso de esta información.