Webové servery hostí soubory (webové stránky, obrázky, videa, formuláře atd.), které tvoří vaši webovou aplikaci, a tyto soubory obsluhují, když někdo navštíví váš web. Některé servery jsou pokročilejší a také řídí, jak velký přístup mají návštěvníci webu. Mohou omezit běžné návštěvníky v přístupu k účtům jiných uživatelů nebo k administrativním panelům. Ačkoli jsou webové servery v tom, co dělají, efektivní – a dělají to poměrně bezpečně – útočníci mohou zneužít chyby, které vznikají z lidské chyby nebo chybné logiky ve způsobu, jakým server obsluhuje soubory, které hostí.
Co je útok LFI?
K útoku LFI (Local File Intrusion) dochází, když útočníci zneužijí zranitelnosti ve způsobu, jakým webový server ukládá, obsluhuje, ověřuje nebo řídí přístup ke svým souborům. Tato chyba zabezpečení je běžná pro webové stránky založené na PHP.
Na rozdíl od mnoha forem kybernetických útoků, kde se útočníci spoléhají na malware k poškození aplikace, útočníci v LFI většinou spoléhají na chytré triky a krátké řádky kódu. To zřídka vyžaduje sofistikované nástroje nebo složité skripty; k útokům obvykle dochází ve webovém prohlížeči. Nejběžnějším trikem, který útočníci používají, je úprava řetězce adresy URL kódem, cestami k souborům nebo názvy souborů.
Jak se dějí LFI útoky?
Útoky LFI obvykle probíhají ve čtyřech fázích.
Nejprve útočník identifikuje web PHP, na kterém je spuštěna zranitelná webová aplikace, obvykle spuštěním základního kódu v adrese URL prohlížeče, aby zjistil, zda webová aplikace (tj. web) příkaz zvládá. Představte si to jako stisknutí kombinace kláves na herním ovladači k odemknutí velikonočního vajíčka – řekněme například stisknutí klávesy dolů pro vstup do tunelů v Super Mario. Ale příkazy, které útočníci používají při útocích LFI, jsou konzistentnější než kontrola každého tunelu v Super Mario.
Webová aplikace nebo server, který byl nesprávně nakonfigurován nebo selže při ověřování vstupů, spustí škodlivý kód. Odtud může hacker získat přístup a oprávnění, které potřebuje ke čtení zranitelných souborů nebo nahrávání škodlivých souborů na server.
Většina útoků LFI vede k tomu, že se útočník dostane k citlivým informacím. Možnost nahrání malwaru je zřídkakdy úspěšná, protože neexistuje žádná záruka, že webová aplikace uloží soubor na stejný server, kde existuje zranitelnost LFI. To je často případ, kdy je webová aplikace v prostředí s více servery.
Pokud tedy zranitelnost LFI existuje na serveru, který hostí obrázky, ale ne na serveru, který ukládá zaměstnance přihlašovací údaje nebo uživatelská hesla, útočník by měl přístup pouze k souborům obrázků na tomto zranitelném serveru. Bez ohledu na kybernetické události jako útok na LastPass ukazují, že hackeři dokážou způsobit zmatek se zdánlivě nejnepatrnější úrovní přístupu.
Jak zabránit útokům LFI
Útoky LFI jsou podle Otevřete projekt zabezpečení webových aplikací (OWASP). Je pochopitelné, že hackeři by tento útok upřednostňovali, protože jako W3Techs téměř 8 z 10 webových stránek provozuje PHP jako programovací jazyk na straně serveru – tak říkajíc velké množství obětí. Útoku LFI je možné zabránit přijetím osvědčených postupů zabezpečení webu.
Seznam povolených souborů veřejného serveru
Webové aplikace často používají cesty k souborům jako vstupy URL. Hackeři mohou tento systém souborů zneužít změnou části adresy URL, která slouží jako cesta k souboru. Například útočník se může změnit https://dummywebsite.com/?module=contact.php na https://dummywebsite.com/?module=/etc/passwd. Zranitelný server se špatným filtrováním a chybnou logikou zobrazí obsah souboru uloženého v cestě /etc/passwd.
Hackeři samozřejmě používají variace běžných názvů souborů a kombinace znaků dotazu, aby zvýšili šance na úspěšný útok. Cílem je přimět webovou aplikaci, aby spustila skript nebo zobrazila soubory na webovém serveru.
Tuto chybu zabezpečení můžete zablokovat vytvořením seznamu povolených veřejných dokumentů na vašem serveru a pokynem webové aplikaci, aby ignorovala dotazy na každý další dokument nebo cestu k souboru. Pokud se tedy útočník pokusí zmanipulovat adresu URL, aby si vyžádal nebo spustil kódy požadující privátní, zobrazí se mu chybová stránka.
Často testujte zranitelnosti
Můžeš použít nástroje pro skenování webu najít a opravit zranitelná místa, která by vás mohla vystavit útokům LFI. Skenery webových aplikací jsou automatické nástroje, které procházejí vaši aplikaci jako útočník a upozorňují vás na potenciální zranitelnosti. Existuje několik webových skenerů s otevřeným zdrojovým kódem, jako jsou OpenVAS a Wireshark, ale většina skenerů zranitelnosti je proprietární software a vyžaduje použití placených plánů.
Ale samozřejmě nezískáváte webový skener pouze pro útoky LFI. Tyto nástroje také hledají širší bezpečnostní zranitelnosti, jako je vzdálené zahrnutí souboru, skriptování mezi weby, vkládání SQL a špatné konfigurace serveru. Takže stojí za to.
Omezit oprávnění návštěvníka webu
Hackeři často úspěšně provádějí útoky LFI, protože webové aplikace nedokážou rozdělit uživatelská oprávnění a umožňují návštěvníkům přístup k souborům, které by měly být viditelné pouze pro administrátory. Toto opatření funguje jako whitelisting: nakonfigurujte svou webovou aplikaci a server tak, aby obsluhovaly veřejné soubory a ignorovaly neoprávněné požadavky, když návštěvník interaguje s webovou aplikací. To je zvláště důležité pro dotazy na cesty k souborům obsahujícím citlivé soubory.
Za tímto účelem možná budete muset zabránit přímé úpravě cest k souborům. Webová aplikace by měla poskytovat pouze dokumenty z pevně zakódovaného seznamu cest. Dále nakonfigurujte webovou aplikaci tak, aby zpracovávala požadavky s dynamickým zřetězením cest (adresy URL by měly obsahovat alfanumerické znaky) namísto funkcí base64 nebo bin2hex.
Pokud uvažujete o zařazení názvů souborů na černou listinu, nedělejte to. Hackeři mají obvykle rostoucí seznam názvů souborů, které mohou použít k provedení útoku LFI. Kromě toho je to prakticky nemožné (a kolosální ztráta času) na černou listinu seznamu neustále přibývajících zdrojů útoku.
Použijte prostředí s více servery
Prostředí s více servery vám umožňuje izolovat důležité, citlivé dokumenty z veřejných souborů, čímž se snižuje riziko v případě narušení. Dedikované servery jsou méně zranitelné vůči útokům LFI, protože i když spolupracují, jejich konfigurace se liší.
Kromě tohoto zabezpečení je více serverů také spolehlivé (s nižším rizikem prostojů), rychlé a efektivní. Je pravda, že použití prostředí s více servery není nákladově efektivní, pokud je váš web malý. V takovém případě zvažte rozdělení přístupu vaší webové aplikace k datům mezi databázi pro soukromá data a server pro veřejné soubory.
Měli byste se obávat útoků LFI?
Možnost útoku LFI existuje, zvláště pokud váš web běží na PHP, ale můžete omezit své vystavení konfigurací webových aplikací a serverů podle osvědčených postupů webového zabezpečení.
Kromě toho byste měli zvážit provádění běžných bezpečnostních kontrol, abyste našli zranitelnosti. Věci se neustále lámou, zvláště když se architektura webu stává složitou. Nástroje, které budete potřebovat, abyste se chránili, jsou automatizované a mnohé nevyžadují komplikované nastavení nebo pokročilé technické know-how.