9 популярни вида атаки чрез инжектиране на уеб приложения

Проблемът с уеб приложенията е, че те са открито изложени на милиарди интернет потребители, много от които ще искат да нарушат мерките за сигурност – независимо от причините.

В ранните дни на Интернет един от най-разпространените методи за атака беше елементарна, проста груба сила. Ботове обикновено извършват тези атаки – или хора с много свободно време – които опитват безброй комбинации от потребителски имена и пароли, докато намерят такава, която да даде достъп до целевото приложение.

Атаките с груба сила вече не са заплаха, благодарение на политиките за пароли, ограничените опити за влизане и captcha. Но киберпрестъпниците обичат да откриват нови подвизи и да ги използват за извършване на нови видове атаки. Преди много време те откриха, че текстовите полета на приложения или уеб страници могат да бъдат използвани чрез въвеждане – или инжектиране – на неочакван текст в тях, който би принудил приложението да направи нещо, което не е трябвало да прави. По този начин на сцената излязоха така наречените инжекционни атаки.

Атаките чрез инжектиране могат да се използват не само за влизане в приложение, без да знаете потребителско име и парола, но и за излагане на лична, поверителна или чувствителна информация или дори за отвличане на цял сървър. Ето защо тези атаки са заплаха не само за уеб приложенията, но и за потребителите, чиито данни се намират в тези приложения, а в най-лошия случай и за други свързани приложения и услуги.

Инжектиране на код

Инжектирането на код е един от най-често срещаните видове атаки чрез инжектиране. Ако нападателите знаят езика за програмиране, рамката, базата данни или операционната система, използвани от уеб приложение, те могат да инжектират код чрез полета за въвеждане на текст, за да принудят уеб сървъра да прави това, което искат.

Тези типове атаки чрез инжектиране са възможни при приложения, които нямат проверка на входните данни. Ако полето за въвеждане на текст позволява на потребителите да въвеждат каквото искат, тогава приложението е потенциално експлоатируемо. За да предотврати тези атаки, приложението трябва да ограничи доколкото е възможно входните потребители, които могат да влизат.

Например, трябва да ограничи количеството очаквани данни, да провери формата на данните, преди да ги приеме, и да ограничи набора от разрешени знаци.

Уязвимостите при инжектиране на код могат лесно да бъдат открити, просто чрез тестване на въвеждането на текст на уеб приложение с различни видове съдържание. Когато бъдат открити, уязвимостите са умерено трудни за използване. Но когато атакуващият успее да използва една от тези уязвимости, въздействието може да включва загуба на поверителност, цялост, достъпност или функционалност на приложението.

  Промоционални кодове на SMITE за безплатни богове и кожи: Осребрете сега

SQL инжекция

По подобен начин на инжектирането на код, тази атака вмъква SQL скрипт – езикът, използван от повечето бази данни за извършване на операции със заявки – в поле за въвеждане на текст. Скриптът се изпраща на приложението, което го изпълнява директно в своята база данни. В резултат на това атакуващият може да премине през екран за вход или да направи по-опасни неща, като четене на чувствителни данни директно от базата данни, модифициране или унищожаване на данни от базата данни или изпълнение на администраторски операции в базата данни.

PHP и ASP приложенията са предразположени към атаки чрез SQL инжектиране поради по-старите функционални интерфейси. Приложенията J2EE и ASP.Net обикновено са по-защитени срещу тези атаки. Когато се открие уязвимост на SQL инжектиране – а те могат лесно да бъдат открити – мащабът на потенциалните атаки ще бъде ограничен само от уменията и въображението на атакуващия. По този начин въздействието на атаката с инжектиране на SQL несъмнено е голямо.

Командно инжектиране

Тези атаки също са възможни, главно поради недостатъчно валидиране на входа. Те се различават от атаките с инжектиране на код по това, че атакуващият вмъква системни команди вместо части от програмен код или скриптове. Следователно хакерът не трябва да знае езика за програмиране, на който е базирано приложението, или езика, използван от базата данни. Но те трябва да знаят операционната система, използвана от хостинг сървъра.

Вмъкнатите системни команди се изпълняват от операционната система на хоста с привилегиите на приложението, което може да позволи излагане на съдържанието на произволни файлове, намиращи се на сървъра, за показване на структурата на директорията на сървър, за промяна на потребителски пароли, наред с други неща .

Тези атаки могат да бъдат предотвратени от системния администратор чрез ограничаване на нивото на достъп до системата на уеб приложенията, работещи на сървър.

Междусайтов скрипт

Всеки път, когато дадено приложение вмъкне вход от потребител в изхода, който генерира, без да го валидира или кодира, то дава възможност на атакуващ да изпрати зловреден код на различен краен потребител. Cross-Site Scripting (XSS) атаките се възползват от тези възможности, за да инжектират злонамерени скриптове в надеждни уебсайтове, които в крайна сметка се изпращат на други потребители на приложението, които стават жертви на нападателя.

Браузърът на жертвата ще изпълни злонамерения скрипт, без да знае, че не трябва да му се вярва. Следователно браузърът ще му позволи достъп до токени за сесия, бисквитки или чувствителна информация, съхранявана от браузъра. Ако са правилно програмирани, скриптовете могат дори да пренапишат съдържанието на HTML файл.

XSS атаките могат да бъдат разделени на две различни категории: съхранени и отразени.

При съхранени XSS атаки злонамереният скрипт се намира постоянно на целевия сървър, във форум за съобщения, в база данни, в регистър на посетителите и т.н. Жертвата го получава, когато нейният браузър поиска съхранената информация. При отразени XSS атаки злонамереният скрипт се отразява в отговор, който включва въведените данни, изпратени до сървъра. Това може да е съобщение за грешка или резултат от търсене, например.

  Как да използвате pctechbg.net API в JavaScript (NodeJS)

XPath инжекция

Този тип атака е възможна, когато уеб приложение използва информация, предоставена от потребител, за да създаде XPath заявка за XML данни. Начинът, по който тези атаки работят, е подобен на SQL инжектирането: нападателите изпращат неправилно формирана информация към приложението, за да открият как са структурирани XML данните, и след това атакуват отново, за да получат достъп до тези данни.

XPath е стандартен език, с който, подобно на SQL, можете да посочите атрибутите, които искате да намерите. За да извършат заявка за XML данни, уеб приложенията използват въведени от потребителя данни, за да зададат модел, на който данните трябва да съответстват. Чрез изпращане на неправилно форматиран вход моделът може да се превърне в операция, която атакуващият иска да приложи към данните.

За разлика от това, което се случва със SQL, в XPath няма различни версии. Това означава, че инжектирането на XPath може да се извърши на всяко уеб приложение, което използва XML данни, независимо от изпълнението. Това също означава, че атаката може да бъде автоматизирана; следователно, за разлика от SQL инжекцията, той има потенциал да бъде изстрелян срещу произволен брой цели.

Инжектиране на пощенска команда

Този метод на атака може да се използва за използване на имейл сървъри и приложения, които изграждат IMAP или SMTP изрази с неправилно валидирани потребителски данни. Понякога IMAP и SMTP сървърите нямат силна защита срещу атаки, какъвто би бил случаят с повечето уеб сървъри, и следователно могат да бъдат по-използвани. Влизайки през пощенски сървър, нападателите биха могли да избегнат ограничения като captcha, ограничен брой заявки и др.

За да експлоатират SMTP сървър, нападателите се нуждаят от валиден имейл акаунт, за да изпращат съобщения с инжектирани команди. Ако сървърът е уязвим, той ще отговори на заявките на нападателите, като им позволи например да отменят ограниченията на сървъра и да използват неговите услуги за изпращане на спам.

Инжектирането на IMAP може да се извърши главно в приложения за уеб поща, като се използва функцията за четене на съобщения. В тези случаи атаката може да бъде извършена чрез просто въвеждане в адресната лента на уеб браузър на URL адрес с инжектираните команди.

CRLF инжекция

Вмъкването на символи за връщане на каретка и за подаване на ред – комбинация, известна като CRLF – в полетата за въвеждане на уеб формуляри представлява метод за атака, наречен CRLF инжекция. Тези невидими знаци показват края на ред или края на команда в много традиционни интернет протоколи, като HTTP, MIME или NNTP.

  Как да създадете масиви от равномерно разположени числа

Например вмъкването на CRLF в HTTP заявка, последвано от определен HTML код, може да изпрати персонализирани уеб страници на посетителите на уебсайт.

Тази атака може да бъде извършена върху уязвими уеб приложения, които не прилагат правилното филтриране към потребителския вход. Тази уязвимост отваря вратата за други видове атаки чрез инжектиране, като XSS и инжектиране на код, и може също така да произлезе от отвлечен уебсайт.

Инжектиране на хедър на хост

В сървъри, които хостват много уебсайтове или уеб приложения, хедърът на хоста става необходим, за да се определи кой от резидентните уебсайтове или уеб приложения – всяко от тях известно като виртуален хост – трябва да обработи входяща заявка. Стойността на заглавката казва на сървъра към кой от виртуалните хостове да изпрати заявка. Когато сървърът получи невалиден хост хедър, той обикновено го предава на първия виртуален хост в списъка. Това представлява уязвимост, която атакуващите могат да използват, за да изпратят произволни заглавки на хост до първия виртуален хост в сървър.

Манипулирането на хедъра на хоста обикновено е свързано с PHP приложения, въпреки че може да се направи и с други технологии за уеб разработка. Атаките на хедъра на хост работят като активиращи средства за други видове атаки, като например отравяне на уеб кеша. Неговите последици могат да включват изпълнение на чувствителни операции от нападателите, например нулиране на парола.

LDAP инжекция

LDAP е протокол, предназначен да улесни търсенето на ресурси (устройства, файлове, други потребители) в мрежа. Той е много полезен за интранет мрежи и когато се използва като част от система за единично влизане, може да се използва за съхраняване на потребителски имена и пароли. LDAP заявките включват използването на специални контролни знаци, които влияят върху неговото управление. Нападателите могат потенциално да променят планираното поведение на LDAP заявка, ако могат да вмъкнат контролни знаци в нея.

Отново основният проблем, който позволява LDAP инжектиране на атаки, е неправилно валидираният потребителски вход. Ако текстът, изпратен от потребителя до приложение, се използва като част от LDAP заявка, без да се дезинфекцира, заявката може да доведе до извличане на списък с всички потребители и показването му на нападател, само чрез използване на звездичка

на правилното място във входен низ.

Предотвратяване на инжекционни атаки

Както видяхме в тази статия, всички атаки чрез инжектиране са насочени към сървъри и приложения с отворен достъп до всеки интернет потребител. Отговорността за предотвратяване на тези атаки се разпределя между разработчиците на приложения и администраторите на сървъри.

Разработчиците на приложения трябва да познават рисковете, свързани с неправилното валидиране на въведеното от потребителя, и да научат най-добрите практики за дезинфекция на въведеното от потребителя с цел предотвратяване на риска. Сървърните администратори трябва периодично да одитират своите системи, за да открият уязвимости и да ги коригират възможно най-скоро. Има много опции за извършване на тези одити, при поискване или автоматично.