
Un script en Ruby que escanea aplicaciones web de terceros vulnerables y explotables en una red.
Yasuo es un script de Ruby que escanea aplicaciones web de terceros vulnerables.
Mientras trabajamos en una evaluación de seguridad de red (interna, externa, trabajos de redteam, etc.), a menudo nos encontramos con aplicaciones web de terceros vulnerables o front-ends web que nos permiten comprometer el servidor remoto explotando vulnerabilidades públicamente conocidas. Algunas de las aplicaciones comunes y favoritas son la interfaz administrativa de Apache Tomcat, jmx-console de JBoss, Hudson Jenkins, entre otras.
Si buscas en Exploit-db, hay más de 10,000 vulnerabilidades explotables de forma remota que existen en toneladas de aplicaciones/front-ends web y que podrían permitir a un atacante comprometer completamente el servidor backend. Estas vulnerabilidades van desde RCE hasta subida maliciosa de archivos, inyección SQL, RFI/LFI, etc.
Yasuo está construido para escanear rápidamente la red en busca de dichas aplicaciones vulnerables, sirviendo así objetivos pwnables en bandeja de plata.
Necesitarías instalar las siguientes gemas:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo proporciona las siguientes opciones de línea de comandos:
-r :: Si quieres que Yasuo realice un escaneo de puertos, usa este interruptor para proporcionar una dirección IP o rango de IP
-l :: Si quieres que Yasuo realice un escaneo de puertos, usa este interruptor para proporcionar un archivo de entrada con direcciones IP separadas por nueva línea, similar a la opción -iL de nmap
-s :: Proporciona un archivo de firmas personalizado. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [Predeterminado - signatures.yaml]
-f :: Si no quieres que Yasuo realice un escaneo de puertos y ya tienes una salida de nmap en formato xml, usa este interruptor para alimentar la salida de nmap
-u :: Toma un archivo separado por nuevas líneas de URL guardadas de una ejecución anterior de Yasuo. Ver más abajo para más detalles.
-n :: Le dice a Yasuo que no haga ping al host mientras realiza el escaneo de puertos. Opción estándar de nmap.
-p :: Usa este interruptor para proporcionar número(s) de puerto/rango
-A :: Usa este interruptor para escanear los 65535 puertos. Opción estándar de nmap.
-b [all/form/basic] :: Si la aplicación descubierta implementa autenticación, usa este interruptor para forzar la autenticación. "all" forzará tanto la autenticación de formulario como la básica HTTP. "form" solo forzará la autenticación basada en formularios. "basic" solo forzará la autenticación básica HTTP.
-t :: Especifica el número máximo de hilos
-h :: Bueno, adivina
Cuando Yasuo se ejecuta, realiza varios pasos antes de comenzar a enumerar aplicaciones vulnerables. Si proporcionas una dirección IP o rango, realizará un escaneo de puertos contra los objetivos proporcionados. Si le proporcionas a Yasuo un archivo de salida nmap en xml, analizará ese archivo y enumerará los hosts con puertos web abiertos. Luego envía una solicitud de un archivo y directorio falso (inexistente) a cada host:puerto enumerado. Para reducir falsos positivos, descarta todos los ip:puerto que respondan con HTTP 200 Ok a las solicitudes de archivo y directorio falsos. Al final de todo este proceso, obtenemos una lista de, digamos, "urls buenas". Estas urls buenas se utilizan luego para enumerar aplicaciones vulnerables.
Si por alguna razón tienes que volver a ejecutar Yasuo contra el mismo conjunto de objetivos, las versiones anteriores de Yasuo pasarían por todo este proceso nuevamente. Eso no es eficiente en absoluto. Lo sé, soy mayormente torpe y aprendo lento, pero estoy en constante evolución. De todos modos, una buena razón para volver a ejecutar Yasuo contra los mismos objetivos podría ser usar un archivo de firmas diferente (o personalizado).
Esta última versión de Yasuo guardará automáticamente un archivo, savedURLstateXXXXX.out, en la misma carpeta desde la que se ejecuta. Este archivo contendrá todas las "urls buenas". Si planeas volver a ejecutar Yasuo en los mismos objetivos, solo alimenta este archivo a Yasuo sin las opciones -f o -r.
Ejemplo: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo analizará este archivo y comenzará a enumerar aplicaciones vulnerables contra las "urls buenas" listadas. Ta-Da.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
El comando anterior realizará un escaneo de puertos contra 127.0.0.1 en los puertos 80, 8080, 443 y 8443 y forzará el inicio de sesión para todas las aplicaciones que implementen autenticación basada en formularios.
./yasuo -l /project/hosts -p 80,8080,443,8443
El comando anterior realizará un escaneo de puertos contra los hosts en el archivo /project/hosts en los puertos 80, 8080, 443 y 8443 y no realizará ninguna acción de fuerza bruta contra las aplicaciones descubiertas.
./yasuo -f my_nmap_output.xml -b all
El comando anterior analizará el archivo de salida de nmap "my_nmap_output.xml" y forzará el inicio de sesión para todas las aplicaciones que implementen autenticación basada en formularios y autenticación básica HTTP.
