Уеб сървърите хостват файловете (уеб страници, снимки, видеоклипове, формуляри и т.н.), които изграждат вашето уеб приложение и обслужват тези файлове, когато някой посети вашия уебсайт. Някои сървъри са по-усъвършенствани и също контролират колко достъп имат уеб посетителите. Те могат да ограничат редовните посетители от достъп до акаунти или административни табла за управление на други потребители. Въпреки че уеб сървърите са ефективни в това, което правят - и го правят доста сигурно - нападателите могат да използват грешки, които възникват от човешка грешка или погрешна логика в начина, по който сървърът обслужва файловете, които хоства.
Какво е LFI атака?
Атака с проникване на локални файлове (LFI) се случва, когато нападателите се възползват от уязвимости в начина, по който уеб сървърът съхранява, обслужва, валидира или контролира достъпа до своите файлове. Тази уязвимост е често срещана за уебсайтове, базирани на PHP.
За разлика от много форми на кибератаки, при които нападателите разчитат на злонамерен софтуер, за да повредят приложение, нападателите в LFI разчитат предимно на хитри трикове и кратки редове код. Това рядко изисква сложни инструменти или сложни скриптове; атаките обикновено се случват в уеб браузъра. Най-честият трик, използван от нападателите, е модифицирането на URL низа с код, файлови пътища или имена на файлове.
Как се случват LFI атаките?
LFI атаките обикновено се случват на четири етапа.
Първо, атакуващият идентифицира PHP уебсайт, работещ с уязвимо уеб приложение, обикновено чрез стартиране на основен код в URL адреса на браузъра, за да види дали уеб приложението (т.е. сайтът) обработва командата. Мислете за това като за натискане на клавишни комбинации на вашия контролер за игра, за да отключите великденско яйце – да речем, например, натискане на клавиша надолу, за да влезете в тунели в Super Mario. Но командите, които нападателите изпълняват при LFI атаки, са по-последователни от проверката на всеки тунел в Super Mario.
Уеб приложение или сървър, който е неправилно конфигуриран или не успява да потвърди входовете, ще изпълни злонамерения код. От тук хакерът може да получи достъпа и привилегиите, от които се нуждае, за да чете уязвими файлове или да качва злонамерени файлове на сървъра.
Повечето LFI атаки водят до достъп на атакуващия до чувствителна информация. Възможността за качване на злонамерен софтуер рядко е успешна, защото няма гаранция, че уеб приложението ще запази файла на същия сървър, където съществува LFI уязвимостта. Това често се случва, ако уеб приложението е в мултисървърна среда.
Така че, ако уязвимостта на LFI съществува на сървъра, който хоства изображения, но не и на сървъра, който съхранява служителите идентификационни данни или потребителски пароли, нападателят ще има достъп само до файлове с изображения на този уязвим сървър. Независимо от това, кибер събития като атаката срещу LastPass показват, че хакерите могат да сеят хаос с привидно най-незначителното ниво на достъп.
Как да предотвратим LFI атаки
LFI атаките са доста често срещани, според Отворете проекта за защита на уеб приложения (OWASP). Разбираемо, хакерите биха предпочели тази атака, тъй като, както W3Techs доклади, почти осем от 10 уебсайта работят с PHP като език за програмиране от страна на сървъра - изобилие от жертви, така да се каже. Възможно е да се предотврати LFI атака чрез приемане на най-добрите практики за уеб сигурност.
Файловете на публичния сървър в белия списък
Уеб приложенията често използват пътеки към файлове като URL входове. Хакерите могат да експлоатират тази файлова система, като променят частта от URL адреса, която се удвоява като файлов път. Например, нападателят може да се промени https://dummywebsite.com/?module=contact.php да се https://dummywebsite.com/?module=/etc/passwd. Уязвим сървър с лошо филтриране и грешна логика ще покаже съдържанието на файла, съхранен в пътя /etc/passwd.
Разбира се, хакерите използват вариации на общи имена на файлове и комбинации от знаци за заявки, за да увеличат шансовете за успешна атака. Целта е да подведете уеб приложението да изпълни скрипт или да покаже файловете на уеб сървър.
Можете да блокирате тази уязвимост, като създадете бял списък с публични документи на вашия сървър и инструктирате уеб приложението да пренебрегва заявките за всеки друг път на документ или файл. Така че, ако нападател се опита да манипулира URL адреса, за да поиска или изпълни кодове, изискващи лично, вместо това ще получи страница за грешка.
Тествайте често за уязвимости
Можеш да използваш инструменти за уеб сканиране за намиране и коригиране на уязвимости, които могат да ви изложат на LFI атаки. Скенерите за уеб приложения са автоматизирани инструменти, които обхождат приложението ви като атакуващ и ви предупреждават за потенциални уязвимости. Има няколко уеб скенера с отворен код като OpenVAS и Wireshark, но повечето скенери за уязвимости са патентован софтуер и изискват платени планове за използване.
Но, разбира се, не получавате уеб скенер само за LFI атаки. Тези инструменти също търсят по-широки уязвимости в сигурността като отдалечено включване на файлове, междусайтови скриптове, SQL инжектиране и лоши сървърни конфигурации. Така че, те си заслужават.
Ограничете привилегиите на посетителите на сайта
Хакерите често изпълняват LFI атаки успешно, защото уеб приложенията не успяват да разделят потребителските привилегии и по този начин позволяват на посетителите да имат достъп до файлове, които трябва да са видими само за администраторите. Тази мярка работи като бели списъци: конфигурирайте вашето уеб приложение и сървър, така че да обслужват публични файлове и да пренебрегват неоторизирани заявки, когато посетител взаимодейства с уеб приложението. Това е особено важно за заявки към файлови пътища, съдържащи чувствителни файлове.
За тази цел може да се наложи да предотвратите директното модифициране на пътищата на файловете. Уеб приложението трябва да обслужва само документи от списък с твърдо кодирани пътища. Освен това, конфигурирайте уеб приложението да обработва заявки с динамична конкатенация на пътя (URL адресите трябва да съдържат буквено-цифрови знаци) вместо функции base64 или bin2hex.
Ако мислите да поставите имената на файловете в черен списък, не го правете. Хакерите обикновено имат нарастващ списък с имена на файлове, които могат да използват, за да изпълнят LFI атака. Освен това е практически невъзможно (и колосална загуба на време) да поставите в черен списък списък с постоянно нарастващи източници на атака.
Използвайте мултисървърна среда
Средата с множество сървъри ви позволява да изолирате важни, чувствителни документи от публични файлове, като по този начин намалявате риска в случай на пробив. Специализираните сървъри са по-малко уязвими от LFI атаки, тъй като въпреки че работят заедно, техните конфигурации се различават.
Освен тази сигурност, множеството сървъри също са надеждни (с по-ниски рискове от престой), бързи и ефективни. Вярно е, че използването на мултисървърна среда не е рентабилно, ако вашият уебсайт е малък. В такъв случай помислете за разделяне на достъпа на вашето уеб приложение до данни между база данни за лични данни и сървър за публични файлове.
Трябва ли да се тревожите за LFI атаки?
Възможността за LFI атака е налице, особено ако вашият сайт работи на PHP, но можете да намалите излагането си, като конфигурирате уеб приложения и сървъри според най-добрите практики за уеб сигурност.
Освен това трябва да обмислите извършването на рутинни проверки на сигурността, за да откриете уязвимости. Нещата се чупят през цялото време, особено когато архитектурата на сайта става сложна. Инструментите, от които ще се нуждаете, за да се защитите, са автоматизирани и много от тях не изискват сложна настройка или усъвършенствано техническо ноу-хау.