10 най-често срещани уязвимости в уеб сигурността
OWASP или Open Web Security Project е благотворителна организация с нестопанска цел, фокусирана върху подобряване на сигурността на софтуера и уеб приложенията.
Организацията публикува списък с най-добрите уязвимости в уеб сигурността въз основа на данните от различни организации за сигурност.
Уязвимостите на уеб сигурността се приоритизират в зависимост от възможността за използване, откриваемост и въздействие върху софтуера.
- Възможност за използване –Какво е необходимо, за да се използва уязвимостта на сигурността? Най-висока експлоатируемост, когато атаката се нуждае само от уеб браузър, а най-ниската е разширено програмиране и инструменти.
- Откриваемост – Колко лесно е да се открие заплахата? Най-високата е информацията, показана на URL адрес, формуляр или съобщение за грешка, а най-ниската е изходният код.
- Удар или повреда –Колко щети ще бъдат нанесени, ако уязвимостта на сигурността бъде разкрита или атакувана? Най-високата е пълен системен срив, а най-ниската е нищо.
Основната цел на OWASP Top 10 е да образова разработчиците, дизайнерите, мениджърите, архитектите и организациите за най-важните уязвимости в сигурността.
Топ 10 на уязвимостите в сигурността според Топ 10 на OWASP са:
SQL Injection
Descriptйон
Инжектирането е уязвимост на сигурността, която позволява на атакуващия да промени бекенда SQL изявления чрез манипулиране на предоставените от потребителя данни.
Инжектирането се случва, когато въведеното от потребителя се изпраща на интерпретатор като част от команда или заявка и подвежда интерпретатора да изпълни неволни команди и дава достъп до неоторизирани данни.
SQL командата, която, когато се изпълнява от уеб приложение, може също да разкрие основната база данни.
въвличане
- Нападателят може да инжектира злонамерено съдържание в уязвимите полета.
- Чувствителни данни като потребителски имена, пароли и др. могат да бъдат прочетени от базата данни.
- Данните в базата данни могат да бъдат модифицирани (Вмъкване/Актуализиране/Изтриване).
- Администрация Operaции могат да се изпълняват в базата данни
Уязвими обекти
- Полета за въвеждане
- URL адреси, взаимодействащи с базата данни.
Примери:
- SQL инжекция на страницата за вход
Влизане в приложение без валидни идентификационни данни.
Налично е валидно потребителско име и не е налична парола.
Тестови URL адрес: http://demo.testfire.net/default.aspx
Потребителско име: sjones
Парола: 1=1′ или pass123
SQL заявката е създадена и изпратена до интерпретатора, както е показано по-долу
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1=1′ или pass123;
Препоръки
- Бял списък на полетата за въвеждане
- Избягвайте показването на подробни съобщения за грешка, които са полезни за нападателя.
Скриптове между сайтове
Descriptйон
Cross Site Scripting е известен също като XSS.
XSS уязвимостите са насочени към скриптове, вградени в страница, които се изпълняват от страна на клиента, т.е. потребителски браузър, а не от страна на сървъра. Тези пропуски могат да възникнат, когато приложението вземе ненадеждни данни и ги изпрати до уеб браузъра без подходящо валидиране.
Нападателите могат да използват XSS, за да изпълнят злонамерени скриптове на потребителите в този случай в браузърите жертви. Тъй като браузърът не може да знае дали скриптът е надежден или не, скриптът ще бъде изпълнен и атакуващият може да отвлече сесийните бисквитки, да обезобрази уебсайтовете или да пренасочи потребителя към нежелани и злонамерени уебсайтове.
XSS е атака, която позволява на атакуващия да изпълни скриптовете в браузъра на жертвата.
Последици:
- Използвайки тази уязвимост на сигурността, нападателят може да инжектира скриптове в приложението, да открадне сесийни бисквитки, да обезобрази уебсайтове и да стартира зловреден софтуер на машините на жертвата.
Уязвими обекти
- Полета за въвеждане
- URL адреси
Примери
1. http://www.vulnerablesite.com/home?”<script>alert(“xss”)</script>
Горният скрипт, когато се изпълнява в браузър, ще се покаже поле за съобщение, ако сайтът е уязвим към XSS.
По-сериозната атака може да бъде извършена, ако атакуващият иска да покаже или съхрани сесийната бисквитка.
2. http://demo.testfire.net/search.aspx?txtSearch <iframe> http://google.com ширина = 500 височина 500>
При изпълнение на горния скрипт браузърът ще зареди невидима рамка, сочеща към http://google.com.
Атаката може да стане сериозна чрез стартиране на злонамерен скрипт в браузъра.
Препоръки
- Полета за въвеждане на бял списък
- Входно изходно кодиране
Нарушено удостоверяване и управление на сесии
Descriptйон
Уебсайтовете обикновено създават бисквитка за сесия и идентификатор на сесия за всяка валидна сесия и тези бисквитки съдържат чувствителни данни като потребителско име, парола и т.н. Когато сесията е прекратена чрез излизане или внезапно затваряне на браузъра, тези бисквитки трябва да бъдат анулирани, т.е. за всяка сесия трябва да има нова бисквитка.
Ако бисквитките не са анулирани, чувствителните данни ще съществуват в системата. Например, потребител, използващ обществен компютър (Cyber Cafe), бисквитките на уязвимия сайт се намират в системата и са изложени на нападател. Нападателят използва същия обществен компютър след известно време, чувствителните данни са компрометирани.
По същия начин, потребител, използващ обществен компютър, вместо да излезе, той внезапно затваря браузъра. Нападателят използва същата система, когато разглежда същия уязвим сайт, ще се отвори предишната сесия на жертвата. Нападателят може да прави каквото си иска, от кражба на информация от профила, информация за кредитна карта и т.н.
Трябва да се направи проверка, за да се установи силата на удостоверяването и управлението на сесията. Ключовете, токените за сесии, бисквитките трябва да бъдат внедрени правилно, без да се компрометират паролите.
Уязвими обекти
- Идентификаторите на сесии, изложени на URL, могат да доведат до атака за фиксиране на сесия.
- Идентификаторите на сесии са еднакви преди и след излизане и влизане.
- Времето за изчакване на сесията не е внедрено правилно.
- Приложението присвоява същия идентификатор на сесия за всяка нова сесия.
- Удостоверените части на приложението са защитени чрез SSL и паролите се съхраняват в хеширан или криптиран формат.
- Сесията може да бъде използвана повторно от потребител с ниски привилегии.
въвличане
- Използвайки тази уязвимост, атакуващият може да отвлече сесия, да получи неоторизиран достъп до системата, което позволява разкриване и модифициране на неоторизирана информация.
- Сесиите могат да бъдат привлечени с помощта на откраднати бисквитки или сесии, използващи XSS.
Примери
- Приложението за резервация на авиокомпания поддържа пренаписване на URL адреси, поставяне на идентификатори на сесии в URL адреса:http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Продажба на билети за Малдивите) Удостоверен потребител на сайта иска да уведоми приятелите си за продажбата и изпраща имейл. Приятелите получават идентификатора на сесията и могат да бъдат използвани за извършване на неоторизирани модификации или злоупотреба със запазените данни за кредитна карта.
- Приложението е уязвимо към XSS, чрез който нападател може да получи достъп до идентификатора на сесията и може да бъде използван за отвличане на сесията.
- Времето за изчакване на приложенията не е зададено правилно. Потребителят използва обществен компютър и затваря браузъра, вместо да излезе и си тръгва. Нападателят използва същия браузър известно време по-късно и сесията е удостоверена.
Препоръки
- Всички изисквания за удостоверяване и управление на сесии трябва да бъдат дефинирани съгласно стандарта за проверка на сигурността на приложенията OWASP.
- Никога не излагайте идентификационни данни в URL адреси или регистрационни файлове.
- Също така трябва да се положат големи усилия за избягване на пропуски в XSS, които могат да се използват за кражба на идентификатори на сесии.
Несигурни директни препратки към обекти
Descriptйон
Това се случва, когато разработчик изложи препратка към вътрешен обект за изпълнение, като файл, директория или ключ на база данни, както в URL или като параметър на FORM. Нападателят може да използва тази информация за достъп до други обекти и може да създаде бъдеща атака за достъп до неоторизирани данни.
въвличане
- Използвайки тази уязвимост, атакуващият може да получи достъп до неоторизирани вътрешни обекти, може да модифицира данни или да компрометира приложението.
Уязвими обекти
- В URL адреса.
Примери:
Промяната на „userid“ в следния URL може да накара атакуващия да види информацията на друг потребител.
http://www.vulnerablesite.com/userid=123 Променен на http://www.vulnerablesite.com/userid=124
Нападателят може да види информацията на другите, като промени стойността на потребителския идентификатор.
Препоръки:
- Внедрете проверки за контрол на достъпа.
- Избягвайте излагането на обектни препратки в URL адресите.
- Проверете оторизацията за всички референтни обекти.
Фалшифициране на междусайтови заявки
Descriptйон
Cross Site Request Forgery е подправена заявка, идваща от кръстосания сайт.
CSRF атака е атака, която възниква, когато злонамерен уебсайт, имейл или програма накара браузъра на потребителя да извърши нежелано действие на доверен сайт, за който потребителят в момента е удостоверен.
CSRF атака принуждава браузъра на влязла в системата жертва да изпрати подправена HTTP заявка, включително бисквитката на сесията на жертвата и всяка друга автоматично включена информация за удостоверяване, към уязвимо уеб приложение.
Връзка ще бъде изпратена от нападателя на жертвата, когато потребителят щракне върху URL адреса, когато влезе в оригиналния уебсайт, данните ще бъдат откраднати от уебсайта.
въвличане
- Използването на тази уязвимост като атакуващ може да промени информацията в потребителския профил, да промени състоянието, да създаде нов потребител от името на администратора и т.н.
Уязвими обекти
- Страница с потребителски профил
- Формуляри за потребителски акаунти
- Страница за бизнес транзакции
Примери
Жертвата е влязла в банков уебсайт с валидни идентификационни данни. Той получава имейл от нападател, в който се казва „Моля, щракнете тук, за да дарите $1 за кауза“.
Когато жертвата щракне върху него, ще бъде създадена валидна заявка за даряване на $1 на определен акаунт.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
Нападателят улавя тази заявка и създава заявка по-долу и вгражда в бутон, казващ „Подкрепям каузата“.
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Тъй като сесията е удостоверена и заявката идва през уебсайта на банката, сървърът ще прехвърли $1000 долара на нападателя.
Препоръка
- Задължително присъствие на потребителя, докато извършва чувствителни действия.
- Внедрете механизми като CAPTCHA, повторно удостоверяване и токени за уникални заявки.
Неправилна конфигурация на сигурността
Descriptйон
Конфигурацията за сигурност трябва да бъде дефинирана и разгърната за приложението, рамките, сървъра на приложения, уеб сървъра, сървъра на база данни и платформата. Ако те са правилно конфигурирани, нападателят може да има неоторизиран достъп до чувствителни данни или функционалност.
Понякога такива недостатъци водят до пълен компромет на системата. Поддържането на софтуера актуален също е добра сигурност.
въвличане
- Използвайки тази уязвимост, атакуващият може да изброи основната технология и информация за версията на сървъра на приложения, информация за база данни и да получи информация за приложението, за да монтира още няколко атаки.
Уязвими обекти
- URL
- Полета на формуляра
- Полета за въвеждане
Примери
- Административната конзола на сървъра на приложения се инсталира автоматично и не се премахва. Акаунтите по подразбиране не се променят. Нападателят може да влезе с пароли по подразбиране и да получи неоторизиран достъп.
- Списъкът с директории не е деактивиран на вашия сървър. Нападателят открива и може просто да изброи директории, за да намери всеки файл.
Препоръки
- Силна архитектура на приложението, която осигурява добро разделение и сигурност между компонентите.
- Промяна на потребителските имена и пароли по подразбиране.
- Деактивирайте списъците с директории и приложете проверки за контрол на достъпа.
Несигурно криптографско съхранение
Descriptйон
Несигурното криптографско съхранение е често срещана уязвимост, която съществува, когато чувствителните данни не се съхраняват сигурно.
Идентификационните данни на потребителя, информацията за профила, данните за здравето, информацията за кредитната карта и т.н. попадат в информацията за чувствителни данни на уебсайт.
Тези данни ще се съхраняват в базата данни на приложението. Когато тези данни се съхраняват неправилно, като не се използва криптиране или хеширане*, те ще бъдат уязвими за нападателите.
(*Хеширането е трансформиране на символите на низа в по-къси низове с фиксирана дължина или ключ. За да дешифрирате низа, трябва да е наличен алгоритъмът, използван за формиране на ключа)
въвличане
- Използвайки тази уязвимост, нападателят може да открадне, модифицира такива слабо защитени данни, за да извърши кражба на самоличност, измама с кредитни карти или други престъпления.
Уязвими обекти
- База данни за приложения.
Примери
В едно от банковите приложения базата данни с пароли използва неосолени хешове * за съхраняване на паролите на всички. Грешка при инжектиране на SQL позволява на атакуващия да извлече файла с паролата. Всички неосолени хешове могат да бъдат грубо форсирани за нула време, докато солените пароли ще отнемат хиляди години.
(*Неосолени хешове – Солта е произволна информация, добавена към оригиналните данни. Солта се добавя към паролата преди хеширането)
Препоръки
- Осигурете подходящи силни стандартни алгоритми. Не създавайте собствени криптографски алгоритми. Използвайте само одобрени публични алгоритми като AES, криптография с публичен ключ RSA и SHA-256 и др.
- Уверете се, че резервните копия извън сайта са криптирани, но ключовете се управляват и архивират отделно.
Неуспешно ограничаване на URL достъпа
Descriptйон
Уеб приложенията проверяват правата за достъп до URL, преди да рендират защитени връзки и бутони. Приложенията трябва да извършват подобни проверки за контрол на достъпа при всеки достъп до тези страници.
В повечето приложения привилегированите страници, местоположения и ресурси не се представят на привилегированите потребители.
Чрез интелигентно предположение нападателят може да получи достъп до страници с привилегии. Нападателят може да получи достъп до чувствителни страници, да извика функции и да види поверителна информация.
въвличане
- Използвайки тази уязвимост, нападателят може да получи достъп до неоторизирани URL адреси, без да влиза в приложението и да използва уязвимостта. Нападателят може да получи достъп до чувствителни страници, да извика функции и да види поверителна информация.
Уязвими обекти:
- URL адреси
Примери
- Нападателят забелязва, че URL адресът показва ролята като „/user/getaccounts“. Той се променя като „/admin/getaccounts“.
- Нападателят може да добави роля към URL адреса.
http://www.vulnerablsite.com може да се модифицира като http://www.vulnerablesite.com/admin
Препоръки
- Въведете строги проверки за контрол на достъпа.
- Политиките за удостоверяване и оторизация трябва да са базирани на роли.
- Ограничете достъпа до нежелани URL адреси.
Недостатъчна защита на транспортния слой
Descriptйон
Занимава се с обмен на информация между потребител (клиент) и сървър (приложение). Приложенията често предават чувствителна информация като данни за удостоверяване, информация за кредитни карти и токени за сесия по мрежа.
Използването на слаби алгоритми или използването на изтекли или невалидни сертификати или неизползването на SSL може да позволи комуникацията да бъде изложена на ненадеждни потребители, което може да компрометира уеб приложение и/или да открадне поверителна информация.
въвличане
- Използвайки тази уязвимост на уеб сигурността, нападателят може да подуши идентификационните данни на легитимен потребител и да получи достъп до приложението.
- Може да открадне информация за кредитна карта.
Уязвими обекти
- Данни, изпратени по мрежата.
Препоръки
- Активирайте защитен HTTP и наложете прехвърляне на идентификационни данни само през HTTPS.
- Уверете се, че вашият сертификат е валиден и не е изтекъл.
Примери:
1. Приложение, което не използва SSL, атакуващият просто ще наблюдава мрежовия трафик и ще наблюдава удостоверена бисквитка на сесията на жертвата. Нападателят може да открадне тази бисквитка и да извърши атака Man-in-the-Middle.
Невалидирани пренасочвания и пренасочвания
Descriptйон
Уеб приложението използва няколко метода за пренасочване и пренасочване на потребителите към други страници за предвидената цел.
Ако няма правилно валидиране при пренасочване към други страници, нападателите могат да се възползват от това и могат да пренасочат жертвите към сайтове за фишинг или злонамерен софтуер или да използват препращания за достъп до неупълномощени страници.
въвличане
- Нападателят може да изпрати URL адрес на потребителя, който съдържа истински URL адрес, добавен с кодиран злонамерен URL адрес. Потребителят само като види истинската част от изпратения от нападателя URL адрес, може да го прегледа и може да стане жертва.
Примери
1.http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Променен на
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Препоръки
- Просто избягвайте използването на пренасочвания и препращания в приложението. Ако се използва, не включва използването на потребителски параметри при изчисляване на дестинацията.
- Ако параметрите на местоназначението не могат да бъдат избегнати, уверете се, че предоставената стойност е валидна и разрешена за потребителя.