
Ein Ruby-Skript, das nach verwundbaren und ausnutzbaren Webanwendungen von Drittanbietern in einem Netzwerk sucht.
Yasuo ist ein Ruby-Skript, das nach angreifbaren Drittanbieter-Webanwendungen sucht.
Während einer Netzwerksicherheitsbewertung (intern, extern, Redteam-Einsätze usw.) stoßen wir oft auf angreifbare Drittanbieter-Webanwendungen oder Web-Frontends, die es uns ermöglichen, den entfernten Server durch Ausnutzung öffentlich bekannter Sicherheitslücken zu kompromittieren. Zu den gängigen und beliebten Anwendungen gehören Apache Tomcat Administrative Interface, JBoss jmx-console, Hudson Jenkins und so weiter.
Wenn man Exploit-db durchsucht, gibt es über 10.000 remote ausnutzbare Sicherheitslücken, die in unzähligen Webanwendungen/Frontends existieren und es einem Angreifer ermöglichen könnten, den Backend-Server vollständig zu kompromittieren. Diese Sicherheitslücken reichen von RCE über bösartige Datei-Uploads bis hin zu SQL-Injection, RFI/LFI usw.
Yasuo wurde entwickelt, um das Netzwerk schnell nach solchen angreifbaren Anwendungen zu durchsuchen und damit angreifbare Ziele auf dem Silbertablett zu servieren.
Sie müssen die folgenden Gems installieren:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo bietet die folgenden Befehlszeilenoptionen:
-r :: Wenn Yasuo einen Portscan durchführen soll, verwenden Sie diesen Schalter, um eine IP-Adresse oder einen IP-Bereich anzugeben
-l :: Wenn Yasuo einen Portscan durchführen soll, verwenden Sie diesen Schalter, um eine Eingabedatei mit zeilenweise getrennten IP-Adressen anzugeben, ähnlich der -iL-Option von nmap
-s :: Geben Sie eine benutzerdefinierte Signaturdatei an. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [Standard - signatures.yaml]
-f :: Wenn Yasuo keinen Portscan durchführen soll und Sie bereits eine nmap-Ausgabe im XML-Format haben, verwenden Sie diesen Schalter, um die nmap-Ausgabe einzulesen
-u :: Nimmt eine durch Zeilenumbrüche getrennte Datei mit URLs entgegen, die von einem vorherigen Yasuo-Lauf gespeichert wurde. Siehe unten für weitere Details.
-n :: Teilt Yasuo mit, beim Portscan keinen Ping auf den Host durchzuführen. Standard-nmap-Option.
-p :: Verwenden Sie diesen Schalter, um Portnummer(n)/-bereich anzugeben
-A :: Verwenden Sie diesen Schalter, um alle 65535 Ports zu scannen. Standard-nmap-Option.
-b [all/form/basic] :: Wenn die entdeckte Anwendung eine Authentifizierung implementiert, verwenden Sie diesen Schalter, um die Authentifizierung zu brute-forcen. "all" brute-forct sowohl Formular- als auch HTTP-Basic-Auth. "form" brute-forct nur formularbasierte Authentifizierung. "basic" brute-forct nur HTTP-Basic-Authentifizierung.
-t :: Maximale Anzahl von Threads angeben
-h :: Nun, raten Sie mal
Wenn Yasuo läuft, führt es mehrere Schritte aus, bevor es mit der Auflistung angreifbarer Anwendungen beginnt. Wenn Sie eine IP-Adresse oder einen IP-Bereich angeben, führt es einen Portscan gegen die angegebenen Ziele durch. Wenn Sie Yasuo eine nmap-XML-Ausgabedatei geben, wird diese Datei analysiert und Hosts mit offenen Web-Ports aufgelistet. Anschließend sendet es eine Anfrage für eine gefälschte (nicht existierende) Datei und ein Verzeichnis an jeden aufgelisteten Host:Port. Um Fehlalarme zu reduzieren, verwirft es alle IP:Port, die auf die gefälschten Datei- und Verzeichnisanfragen mit HTTP 200 Ok antworten. Am Ende dieses gesamten Prozesses erhalten wir eine Liste von, sagen wir, "guten URLs". Diese guten URLs werden dann verwendet, um angreifbare Anwendungen aufzulisten.
Wenn Sie Yasuo aus irgendeinem Grund erneut gegen dieselbe Gruppe von Zielen ausführen müssen, werden die früheren Versionen von Yasuo diesen gesamten Prozess erneut durchlaufen. Das ist überhaupt nicht effizient. Ich weiß, ich bin meist dumm und lerne langsam, aber ich entwickle mich ständig weiter. Wie auch immer, ein guter Grund, Yasuo erneut gegen dieselben Ziele auszuführen, könnte die Verwendung einer anderen (oder benutzerdefinierten) Signaturdatei sein.
Diese neueste Version von Yasuo speichert automatisch eine Datei, savedURLstateXXXXX.out, im selben Ordner, von dem aus sie ausgeführt wird. Diese Datei enthält alle "guten URLs". Wenn Sie vorhaben, Yasuo erneut auf denselben Zielen auszuführen, geben Sie einfach diese Datei an Yasuo ohne die Optionen -f oder -r weiter.
Beispiel: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo wird diese Datei analysieren und mit der Auflistung angreifbarer Anwendungen anhand der aufgelisteten "guten URLs" beginnen. Ta-Da.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
Der obige Befehl führt einen Portscan gegen 127.0.0.1 auf den Ports 80, 8080, 443 und 8443 durch und brute-forct die Anmeldung für alle Anwendungen, die eine formularbasierte Authentifizierung implementieren.
./yasuo -l /project/hosts -p 80,8080,443,8443
Der obige Befehl führt einen Portscan gegen die Hosts in der Datei /project/hosts auf den Ports 80, 8080, 443 und 8443 durch und führt keine Brute-Force-Aktionen gegen die entdeckten Anwendungen aus.
./yasuo -f my_nmap_output.xml -b all
Der obige Befehl analysiert die nmap-Ausgabedatei "my_nmap_output.xml" und brute-forct die Anmeldung für alle Anwendungen, die formularbasierte und HTTP-Basic-Authentifizierung implementieren.
