WEB : LFI, RFI & Exploitation
Alex GARRIDO - @Zeecka_
WHOAMI
Alex GARRIDO - Zeecka
Définitions
Local File Inclusion (et Remote File Inclusion) :
Vulnérabilité permettant l’inclusion de fichier local (ou distant). La vulnérabilité peut conduire à l’exécution de code client (XSS) ou serveur (RCE), au DOS, ou encore au vol de données. La vulnérabilité existe sur différents services, et sur n’importe quel langage de programmation.
Exemple - LFI
LFI - Fichiers intéressants
- /etc/passwd
- /etc/shadow
- /etc/hosts
- ~/.bash_history
- ~/.ssh/id_rsa
- /proc/self/cmdline
- Fichiers de logs
- Fichiers de backup
- ...
Voir PayloadAllTheThings ou le blog de Sushant747
Exemple - RFI
PHP : LFI ou RFI ?
Path Traversal
Technique de navigation utilisant les liens symboliques pour accéder à du contenu normalement inaccessible.
Exploitation normale
https://site.fr/?page=../../../etc/passwd
Path Traversal - Filtres
URL Encode
https://site.fr/?page=%2e%2e%2fetc%2fpasswd
Double Encode
https://site.fr/?page=%252e%252e%252fetc%252fpasswd
Path Traversal - Null Bytes
https://site.fr/?page=../../../etc/passwd%00
( < PHP 5.3.4 )
Path Traversal - Path Truncation
https://site.fr/?page=../../../etc/passwd/./././[4096 plus tard]/.
( < PHP 5.3 )
LFI - Wrapper : Filter
(pas de préfixe, PHP >= 5.0)
RFI - Wrapper
(pas de préfixe, PHP >= 5.3, dépendances...)
PHP
BASH
LFI - Wrapper : Archives
(pas de préfixe, PHP >= 5.3, dépendances... )
LFI - Wrapper : Archives - Bypass
LFI - Exploitation /tmp
- PHP accepte l'upload de fichier sur n'importe quel page.
- Le fichier est placé dans /tmp/ puis est supprimé à la fin de l'exécution du script
- Le nom du fichier est sous la forme:
- php[a-zA-Z0-9]{6} (linux)
- php[a-zA-Z0-9]{4}.tmp (windows)
LFI - Exploitation /tmp
selfinclusion.php :
URL :
LFI - Exploitation /tmp
LFI - Exploitation /tmp
"... supprimé à la fin de l'exécution du script"
+
Segmentation Fault (ou infinite loop)
=
Fichier non supprimé (ou tardivement)
Race Condition
LFI - Exploitation /tmp
- Uploader un maximum de fois son webshell vers l'URL de self inclusion.
- Bruteforcer la LFI sur php[a-zA-Z0-9]{6} pour tomber sur un des webshells uploadés :)
Time to script...
Phar : Désérialisation
Phar : Désérialisation
TL;DR: On peut instancier un objet / désérialiser un objet d'une classe déjà présente sur l'application, à condition d'avoir une LFI et un formulaire upload pour envoyer l'archive phar malveillante.
Dans le pire des cas, la vulnérabilité peut mener à une RCE ou du ROP PHP.
Phar : Désérialisation
Phar : Désérialisation
... pas d'Exécution :(
Phar : Désérialisation
Phar : Désérialisation
Phar : Désérialisation
Phar : Désérialisation
Phar : Désérialisation
Phar : Désérialisation
Ressources
Ressources
Ressources
Outils
- Slides : https://slides.com
- Carbon (code) : https://carbon.now.sh
- Schéma : https://www.draw.io
- Os et Shell: Debian + ZSH & PowerLevel9k
- Extension navigateur: HackBar
Lien des slides
Web : LFI, RFI & Exploitation
By Zeecka
Web : LFI, RFI & Exploitation
- 2,998