
Um script Ruby que procura por aplicações web de terceiros vulneráveis e exploráveis numa rede.
Yasuo é um script Ruby que procura por aplicações web de terceiros vulneráveis.
Durante uma avaliação de segurança de rede (interna, externa, redteam, etc.), frequentemente encontramos aplicações web de terceiros vulneráveis ou front-ends web que nos permitem comprometer o servidor remoto explorando vulnerabilidades publicamente conhecidas. Algumas das aplicações comuns e favoritas são a interface administrativa do Apache Tomcat, o jmx-console do JBoss, Hudson Jenkins e assim por diante.
Se você pesquisar no Exploit-db, existem mais de 10.000 vulnerabilidades exploráveis remotamente que existem em toneladas de aplicações/front-ends web e poderiam permitir que um atacante comprometa completamente o servidor back-end. Essas vulnerabilidades variam de RCE a upload malicioso de arquivos, SQL injection, RFI/LFI, etc.
Yasuo foi construído para escanear rapidamente a rede em busca de tais aplicações vulneráveis, servindo alvos pwnáveis em uma bandeja de prata.
Você precisará instalar as seguintes gems:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo oferece as seguintes opções de linha de comando:
-r :: Se você quiser que o Yasuo realize uma varredura de portas, use esta opção para fornecer um endereço IP ou faixa de IP
-l :: Se você quiser que o Yasuo realize uma varredura de portas, use esta opção para fornecer um arquivo de entrada com endereços IP separados por nova linha, semelhante à opção -iL do nmap
-s :: Forneça um arquivo de assinatura personalizado. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [Padrão - signatures.yaml]
-f :: Se você não quiser que o Yasuo realize varredura de portas e já tiver uma saída do nmap em formato xml, use esta opção para fornecer a saída do nmap
-u :: Recebe um arquivo separado por nova linha de URLs salvos de uma execução anterior do Yasuo. Veja abaixo para mais detalhes.
-n :: Diz ao Yasuo para não fazer ping no host durante a varredura de portas. Opção padrão do nmap.
-p :: Use esta opção para fornecer número(s) de porta/faixa
-A :: Use esta opção para escanear todas as 65535 portas. Opção padrão do nmap.
-b [all/form/basic] :: Se a aplicação descoberta implementar autenticação, use esta opção para fazer brute-force na autenticação. "all" fará brute-force tanto em formulário quanto em autenticação básica HTTP. "form" fará brute-force apenas em autenticação baseada em formulário. "basic" fará brute-force apenas em autenticação básica HTTP.
-t :: Especifique o número máximo de threads
-h :: Bem, tente adivinhar
Quando o Yasuo é executado, ele realiza várias etapas antes de começar a enumerar aplicações vulneráveis. Se você fornecer um endereço IP ou faixa, ele realizará uma varredura de portas contra os alvos fornecidos. Se você fornecer ao Yasuo um arquivo de saída xml do nmap, ele analisará esse arquivo e enumerará hosts com portas web abertas. Em seguida, ele envia uma solicitação para um arquivo falso (inexistente) e um diretório para cada host:ip enumerado. Para reduzir falsos positivos, ele descarta todos os ip:port que respondem com HTTP 200 Ok para as solicitações de arquivo e diretório falsos. No final de todo esse processo, obtemos uma lista de, digamos, "boas urls". Essas boas urls são então usadas para enumerar aplicações vulneráveis.
Se por algum motivo você precisar executar o Yasuo novamente contra o mesmo conjunto de alvos, as versões anteriores do Yasuo passariam por todo esse processo novamente. Isso não é nada eficiente. Eu sei, sou geralmente burro e um aprendiz lento, mas estou constantemente evoluindo. De qualquer forma, um bom motivo para executar o Yasuo novamente contra os mesmos alvos poderia ser usar um arquivo de assinaturas diferente (ou personalizado).
Esta versão mais recente do Yasuo salvará automaticamente um arquivo, savedURLstateXXXXX.out, na mesma pasta de onde é executado. Este arquivo conterá todas as "boas urls". Se você planeja executar o Yasuo novamente nos mesmos alvos, basta fornecer este arquivo ao Yasuo sem as opções -f ou -r.
Exemplo: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
O Yasuo analisará este arquivo e começará a enumerar aplicações vulneráveis contra as "boas urls" listadas. Ta-Da.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
O comando acima realizará varredura de portas contra 127.0.0.1 nas portas 80, 8080, 443 e 8443 e fará brute-force de login para todas as aplicações que implementam autenticação baseada em formulário.
./yasuo -l /project/hosts -p 80,8080,443,8443
O comando acima realizará varredura de portas contra os hosts no arquivo /project/hosts nas portas 80, 8080, 443 e 8443 e não realizará nenhuma ação de brute-force contra as aplicações descobertas.
./yasuo -f my_nmap_output.xml -b all
O comando acima analisará o arquivo de saída do nmap "my_nmap_output.xml" e fará brute-force de login para todas as aplicações que implementam autenticação baseada em formulário e autenticação básica HTTP.
