Вернуться к статье

Тестирование и анализ уязвимостей мобильных и веб-приложений на основе «Общих критериев»

Таблица 1 - Основной фронтэнд веб-приложения

Risk=Высокий, Confidence=Средний (1)

test.missoff.ru

SQL-инъекция

POST test.missoff.ru/auth/?forgot_password=yes

1

Alert tags

OWASP_2021_A03

WSTG-v42-INPV-05

OWASP_2017_A01

 

Alert description

Возможна SQL-инъекция.

Результаты страницы были успешно обработаны с помощью логических условий [foo-bar@example.com AND 1=1 -- ] и [foo-bar@example.com AND 1=2 -- ]

 

Other info

Изменяемое значение параметра было удалено из вывода HTML для целей сравнения.

Данные были возвращены для исходного параметра.

Уязвимость была обнаружена путем успешного ограничения исходно возвращаемых данных путем изменения параметра

 

Request

Request line and header section (409 bytes)

POST https://test.missoff.ru/auth/?forgot_password=yes HTTP/1.1

Host: test.missoff.ru

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0

Pragma: no-cache

Cache-Control: no-cache

Content-Type: application/x-www-form-urlencoded

Referer: https://test.missoff.ru/auth/?forgot_password=yes

Content-Length: 164

Cookie: PHPSESSID=F7R4bx1rPyFYyafEHwKQ53NQgFyfFFZc

 

Request body (164 bytes)

backurl=%2Fauth%2F&AUTH_FORM=Y&TYPE=SEND_PWD&USER_LOGIN=foo-bar%40example.com+AND+1%3D1+--+&USER_EMAIL=&send_account_info=%D0%92%D1%8B%D1%81%D0%BB%D0%B0%D1%82%D1%8C

 

Response

Status line and header section (576 bytes)

HTTP/1.1 200 OK

Server: nginx/1.26.1

Date: Mon, 04 Nov 2024 20:47:33 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

X-Powered-By: PHP/7.4.33

P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"

X-Powered-CMS: Bitrix Site Manager (39d0fb00176e19ac87e87d99529f6e3f)

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate

Pragma: no-cache

Set-Cookie: PHPSESSID=F7R4bx1rPyFYyafEHwKQ53NQgFyfFFZc; path=/; HttpOnly

Vary: Accept-Encoding

Content-Length: 8600

Response body (8600 bytes)

 

Parameter

USER_LOGIN

 

Attack

foo-bar@example.com AND 1=1 --

 

Solution

· Не доверяйте вводу на стороне клиента, даже если есть проверка на стороне клиента.

· В основном, тип проверки всех данных на стороне сервера.

· Если приложение использует JDBC, используйте PreparedStatement или CallableStatement

· с параметрами, передаваемыми через '?'

· Если приложение использует ASP, используйте объекты команд ADO (ADO Command Objects) со строгой проверкой типов и параметризованными запросами.

Если можно использовать хранимые процедуры базы данных (Stored Procedures), используйте их.

· Не объединяйте строки в запросы в хранимой процедуре и не используйте 'exec', 'exec немедленно' или аналогичные функции!

· Не создавайте динамические запросы SQL, используя простую конкатенацию строк.

· Экранировать все данные, полученные от клиента.

· Примените «разрешенный список» разрешенных символов или «запрещающий список» запрещенных символов при вводе пользователем.

· Применяйте принцип наименьших привилегий, используя наименее привилегированного пользователя базы данных.

· В частности, избегайте использования пользователей базы данных «sa» или «db-owner». Это не устраняет SQL-инъекцию, но сводит к минимуму ее влияние.

Предоставьте приложению минимальный доступ к базе данных

· Risk=Средний, Confidence=Высокий

test.missoff.ru

Заголовок Content Security Policy (CSP) не задан

GET test.missoff.ru/robots.txt

2

Alert tags

OWASP_2021_A05

OWASP_2017_A06

 -

Alert description

Политика безопасности содержимого (CSP) — это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая межсайтовые сценарии (XSS) и атаки с внедрением данных. Эти атаки используются для всего: от кражи данных до порчи сайта или распространения вредоносных программ. CSP предоставляет набор стандартных HTTP-заголовков, которые позволяют владельцам веб-сайтов объявлять утвержденные источники контента, которые браузеры должны разрешить загружать на эту страницу. Охватываемые типы включают JavaScript, CSS, HTML-фреймы, шрифты, изображения и встраиваемые объекты, такие как апплеты Java. ActiveX, аудио и видео файлы.

 -

Other info

 -

Request

Request line and header section (211 bytes)

GET https://test.missoff.ru/robots.txt HTTP/1.1

Host: test.missoff.ru

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0

Pragma: no-cache

Cache-Control: no-cache

 

Request body (0 bytes)

 -

Response

Status line and header section (560 bytes)

HTTP/1.1 404 Not Found

Server: nginx/1.26.1

Date: Mon, 04 Nov 2024 20:35:39 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

X-Powered-By: PHP/7.4.33

P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"

X-Powered-CMS: Bitrix Site Manager (39d0fb00176e19ac87e87d99529f6e3f)

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate

Pragma: no-cache

Set-Cookie: PHPSESSID=F7R4bx1rPyFYyafEHwKQ53NQgFyfFFZc; path=/; HttpOnly

Content-Length: 5238

 

Response body (5238 bytes)

 -

Parameter

 -

Attack

 -

Solution

Убедитесь, что ваш веб-сервер, сервер приложений, балансировщик нагрузки и т. д. настроены для установки заголовка Content-Security-Policy для достижения оптимальной поддержки браузера: «Content-Security-Policy» для Chrome 25+, Firefox 23+ и Safari 7. +, «X-Content-Security-Policy» для Firefox 4.0+ и Internet Explorer 10+ и «X-WebKit-CSP» для Chrome 14+ и Safari 6+.