IMPORTANTE: Este proyecto actualmente sólo está disponible en español. Estamos trabajando en una traducción al inglés y otros idiomas.
¿Te gustaría aprender a detectar y explotar vulnerabilidades web de forma segura y divertida? ¿Quieres poner a prueba tus habilidades de hacking ético con retos reales y variados? Entonces no te pierdas la segunda versión de la herramienta de contenedores con vulnerabilidades web, creada por un apasionado de la seguridad informática.
En esta nueva versión, encontrarás una interfaz más atractiva y fácil de usar, así como nuevas funcionalidades que te permitirán desplegar y configurar los contenedores a tu gusto. Aunque todavía está en desarrollo, ya puedes descargarla y probar las primeras características. ¡Te sorprenderás!
- Requisitos
- Personalización de la instalación (recomendado)
- Instalación
- Actualización del proyecto
- Errores comunes
- Contribuir
- Cosas para las siguientes actualizaciones
-
docker (comando para instalar docker en Kali Linux:
sudo apt-get install docker.io
) -
docker (comando para instalar docker en Kali Linux:
sudo apt-get install docker-compose
) -
php
-
Git: Asegúrate de tener Git instalado en tu sistema. Puedes verificar si Git está instalado ejecutando el siguiente comando en la terminal:
git --version
Si Git no está instalado, puedes seguir las instrucciones de instalación en este enlace.
En el archivo install.sh
, encontrarás tres arrays que contienen información sobre los contenedores a instalar: containers
, database
, y otros
. Cada elemento de estos arrays tiene el siguiente formato:
- containers
nombre_del_contenedor;$RUTA_DEL_DIRECTORIO;PUERTO_DE_PUBLICACIÓN:PUERTO_DEL_CONTENEDOR;imagen_del_contenedor
- database
nombre_del_contenedor_de_la_base_de_datos;$RUTA_DEL_DIRECTORIO;PUERTO_DE_PUBLICACIÓN:PUERTO_DEL_CONTENEDOR;imagen_del_contenedor
- otros
Descripción del comando;comando_a_ejecutar
Puedes comentar las líneas de los contenedores que no deseas instalar. Por ejemplo:
database=(
# "sqli_db_v2;$PWD/sqli;8005:80;sqli_v2"
# "blindsqli_db_v2;$PWD/blindsqli;8014:80;blindsqli_v2"
# ...
)
Esto te permite instalar solo los contenedores que necesites para evitar problemas de rendimiento en tu sistema. Una vez comentados los contenedores que no quieres que se instalen, ya puedes pasar al paso siguiente. Después de que hayas resuelto y utilizado los contenedores que instalaste, puedes desinstalarlos si así lo deseas. Puedes hacerlo utilizando comandos como docker-compose down o docker rm, según corresponda. Si deseas instalar más contenedores, simplemente vuelve a comentar las líneas de los contenedores no deseados en el archivo install.sh y ejecuta el script nuevamente.
Este proceso te permite instalar y resolver los contenedores de forma selectiva, lo que puede ser útil para gestionar los recursos de tu sistema de manera más eficiente.
IMPORTANTE: Ejecutar el script de instalación con permisos de superusuario.
Para instalar y utilizar la herramienta WebVulnLab, sigue los siguientes pasos:
- Descarga el repositorio de GitHub usando el siguiente comando en tu terminal:
git clone -b dev https://github.com/sil3ntH4ck3r/WebVulnLab.git
Si aún no tienes Git instalado, descárgalo e instálalo desde su página oficial
Para instalarlo en Ubuntu/Debian, puedes utilizar este comando:
sudo apt-get install git
Una vez descargado, el proyecto no requiere conexión a internet, ya que está diseñado para su uso en un entorno local.
- Navega hasta el directorio donde clonaste el repositorio y da permisos de ejecución al script de instalación:
Nota: El archivo install.sh
no es compatible con Arch Linux (se esta trabajando en un nuevo script de instalación).
cd WebVulnLab
chmod +x install.sh
- Ejecuta el script de instalación:
sudo ./install.sh
Este script descargará e instalará todas las dependencias necesarias, creará los contenedores de Docker y configurará la herramienta para que puedas comenzar a utilizarla.
- Una vez finalizada la instalación, podrás acceder a los diferentes contenedores a través de los siguientes enlaces:
Docker | Enlace | Estatus |
---|---|---|
Tablero | http://tablero.local/ | Funcional |
Servidor Principal | http://menu.local/ | Funcional |
LFI | http://lfi.local/ | Funcional |
Padding Oracle Attack | http://paddingoracleattack.local/ | Funcional |
Type Juggling | http://typejuggling.local/ | Funcional |
Remote File Inclusion | http://rfi.local/ | Funcional |
XSS | http://xss.local/ | Funcional |
XXE | http://xxe.local/ | Funcional |
XPath Injection | http://xpathinjection.local/ | Funcional |
LaTeX Injection | http://latexinjection.local/ | Funcional |
ShellShock | http://shellshock.local/ | Funcional |
SQL Injection (Error) | http://sqli.local/ | Funcional |
Blind SQL Injection (Time) | http://blindsqli.local/ | Funcional |
Domain Zone Transfer | http://domainzonetransfer.local/ | Funcional |
CSRF | http://csrf.local/ | Funcional |
SSRF | http://ssrf.local/ | Funcional |
Blind XXE | http://blindxxe.local/ | Funcional |
Blind XSS | http://blindxss.local/ | Funcional |
HTML Injection | http://htmlinjection.local/ | Funcional |
PHP Insecure Deseralization | http://insecuredeseralizationphp.local/ | Funcional |
Insecure Direct Object Reference (iDOR) | http://idor.local/ | Funcional |
Server-Side Template Injection (SSTI) | http://ssti.local/ | Funcional |
Client-Side Template Injection (CSTI) | http://csti.local/ | Funcional |
NoSQL Injections | http://nosqlinjection.local/ | Funcional |
LDAP Injections | http://ldapinjection.local/ | Funcional |
API's Abuse y Mass-Asignament Attack | http://apiabuse.local/ | Funcional |
File Upload Abuse | http://fileuploadabuse.local/ | Funcional |
Prototype Pollution | http://prototypepollution.local/ | Funcional |
Open Redirect | http://openredirect.local/ | Funcional |
WebDAV | http://webdav.local/ | Funcional |
SquidProxies | http://squidproxy.local/ | Funcional |
Intercambio de recursos de origen cruzado (CORS) | http://cors.local/ | Funcional |
SQL Truncation | http://sqltruncation.local/ | Funcional |
Session Puzzling / Session Fixation / Session Variable Overloading | http://sessionpuzzling.local/ | Funcional |
Json Web Token | http://jwt.local/ | Funcional |
Race Condition | http://racecondition.local/ | Funcional |
CSS Injection | http://cssi.local/ | Funcional |
Python Deserelization (DES-Yaml) | http://yamldeseralization.local/ | Funcional |
Python Deserelization (DES-Pickle) | http://pickledeseralization.local/ | Funcional |
GraphQL Introspection, Mutations | http://graphql.local/ | Funcional |
OAuth / Werkzeug Debugger Console Abuse | http://oauth_gallery.local | |
http://oauth_printing.local/ | Funcional | |
SNMP Abuse + IPv6 | http://snmp.local/ | Funcional |
AWS Lambda Abuse | http://aws.local/ | Funcional |
HTTP smuggling | - | Trabajando en ello |
Active Directory | - | Trabajando en ello |
Cabe destacar que aún está en desarrollo, y que no todos los contenedores están funcionando correctamente. Este repositorio se actualiza a menudo.
Puedes utilizar el siguiente script para verificar y aplicar actualizaciones del proyecto desde la consola.
- Abre la terminal y navega hasta el directorio del proyecto:
cd ruta/al/proyecto
- Ejecuta el script update.sh para verificar si hay actualizaciones disponibles:
./update.sh
- Si hay actualizaciones disponibles y deseas instalarlas, sigue las instrucciones proporcionadas por el script. Por ejemplo, puedes ingresar s y presionar Enter para realizar la actualización. Si decides no instalar las actualizaciones, puedes ingresar n y presionar Enter.
NOTA: Asegúrate de leer atentamente las instrucciones y los mensajes que muestra el script antes de tomar cualquier acción. El script verificará si hay nuevas versiones disponibles y te mostrará un mensaje indicando si hay actualizaciones.
- Si la actualización se completa con éxito, el script mostrará un mensaje indicando que la actualización ha sido exitosa. En caso de algún problema durante la actualización, se mostrará un mensaje de error correspondiente.
Si deseas contribuir al desarrollo de WebVulnLab, ¡eres bienvenido! Puedes hacerlo de varias maneras:
- Informando de bugs o problemas que encuentres en la herramienta a través de la sección de "Issues" en el repositorio de GitHub.
- Proponiendo nuevas características o mejoras.
- Ayudando a solucionar problemas o desarrollando nuevas vulnerabilidades.
- Añadir más vulnerabilidades.
Ver en el tablero que máquinas están encendidas y que máquinas están apagadas.Uso de Traefik para poner subdominios, y que no sea por IP- Al final no se ha echo con Traefik, sino que se ha aplicado Virtual Hosting. Ahora los enlaces a los contenedores son más fáciles de recordar.
Mejorar la estética.Añadir la posibilidad de reiniciar los contenedores.- Añadir alguna máquina CTF
- En cada máquina, añadir la opción de aprender, donde podrás descubrir más sobre dicha vulnerabilidad.
- Hacer este mismo proyecto (WebVulnLab), pero para Windows.
- Mejorar la documentación para que sea más fácil de entender y seguir.
- Refactorizar el código para hacerlo más legible y mantenible.