Local File Inclusion (LFI)

Local File Inclusion zkráceně LFI je druh útoku, který zneužívá bezpečnostní slabinu v podobě volání nějakého lokálního souboru skriptem. Pokud útočník dokáže skriptu podstrčit správný název souboru může to mít fatální následky. Dokáže si například zobrazit citlivé údaje anebo spustit zacyklený náročný skript.

Obranou proti LFI je správně ošetřit všechny vstupy. LFI spadá společně s Remote File Inclusion (RFI) do kategorie File inclusion vulnerability.

Cíle útoku LFI

Podle bezpečnostní chyby může útočník docílit:

  • spuštění skriptu na serveru
  • provést DoS útok
  • ukrást anebo pozměnit data

Příklad útoku

Představme si následující hodně špatně navrženou stránku index.php, která má zobrazit obsah na základě atributu $_GET.

<html>
 <body>
  <h1>Špatně navržená stránka</h1>
  if ( isset( $_GET['stranka'] ) ) 
  {
   include $_GET['stranka'] . '.php';
  }
  <a href="index.php?stranka=uvod">Úvod</a></br>
  <a href="index.php?stranka=kontakt">Kontakt</a></br>
 </body>
</html>

Po kliknutí na odkazy se do index.php vloží obsah souborů stranka.php anebo kontakt.php. Záleží co je v proměnné stranka. Útočník však může zavolat adresu index.php?stranka=cokoliv a vloží tím obsah jakéhokoliv souboru s příponou PHP, přímo do skriptu.

Jestliže soubor nebude existovat objeví se chyba. Útočník tak může zkoušet existenci různých souborů.

Pokud místo include bude například echo, tak se místo vložení (spuštění) skriptu, rovnou obsah zobrazí. V nejhorším případě by mohl existovat například soubor config.php, kde budou přístupové údaje k databázi. Pak by stačilo útočníkovi zadat index.php?stranka=config a zobrazí se mu jeho obsah. Tedy pak není problém najít například PHPmyAdmin  a s přístupovými údaji, které získal už má kompletní data všech uživatelů, které jsou uložené v databázi.

Ochrana před LFI

Základem je mít ošetřené všechny vstupy. Pokud pracujeme jen s písmeny, čísly a pomlčkou, tak v řetězci nemá co děla lomítko, NULL byte apod. Není dobré přemýšlet ani nad možnými budoucími výjimkami anebo že se něco třeba může hodit.

Ošetřit vstupy je vždy základ.

Share Button

Tento článek byl byl přečten 6573 krát

1 komentář u „Local File Inclusion (LFI)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *