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

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


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

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

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

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

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

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

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

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

SQL инжекция

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

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

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

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

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

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

Изготвяне на скриптове на място

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

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

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

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

XPath инжекция

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

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

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

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

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

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

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

CRLF инжекция

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

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

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

Инжектиране на глава на домакина

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

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

LDAP инжекция

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

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

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

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

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map