Статья Автоматизация OWASP ZAP, Часть 1, Вводная часть

Приветствую тебя, на моей первой статье по циклу автоматизации OWASP ZAP и по совместительству на первой статье на форуме.

Вступление
Данная статья больше вступительная, рабочая информация начнется со второй части.
По данной теме планирую выпустить цикл статей, по мере того, как сам буду проходить те или иные этапы автоматизации. Буду эгоистичным, и скажу, что весь цикл больше предназначен для меня, чтобы структурировать полученные знания и навыки, сохранить их еще где-то, кроме поспешных записок в блокноте ну и поделиться граблями и советами, чтобы у последователей все протекло более гладко.

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

Стоит понимать, что автоматизированное тестирование ни в коем случае не заменяет ручные тесты. Но и ручные тесты при этом очень помогают при автоматизации (например при описании специфических правил сканирования, или последовательности шагов, чтобы подтвердить или опровергнуть багу).

Цели
Весь цикл направлен на то, чтобы автоматизировать проверку на уязвимости до выкладки кода на продуктовые сервера. В ИТ среде это называется внедрить DAST (Dinamic Application Security Testing) в DevOps pipeline. Причем целью служит не включить и забыть, а именно постепенное повышение качества тестирования и его покрытия. Внедрять различные инструменты и дополнительные фишки.
Итак, дано:
zap_pipe1.jpg


Предположим, что у нас уже отдел QA(тестировщики), что-то уже написали. У них через Jenkins либо что-то иное, по событию либо по расписанию, стартуют регрессионные тесты которые с помощью селениума и браузеров тестируют приложение на баги перед выпуском в релиз.

Целевая схема видится пока следующая:
zap_pipe2.jpg


Цель: затесаться к тестировщикам на регрессионные тесты, тем самым получив endpoints для дальнейшего сканирования. А также возможность самому по расписанию или вручную запускать DAST.(нижняя стрелочка).

Камни и почему именно пока такое решение:
При разработке по agile ключевым является скорость тестирования кода, и его поставка, важно ловить баланс между скоростью и качеством. Можно гонять DAST несколько дней, но будут при этом большие задержки доставки кода, особенно если речь про фиксы. Также можно вообще не гонять тесты, что является другой крайностью, и словить неприятные банальные ошибки как безопасности, так и функционирования приложения.
Поэтому было принято решение следующей схемы внедрения:
  1. После регрессии проводить только активное сканирование, без запуска пауков, фаззинга и больших накруток. Чтобы снизить задержку.
  2. Раз в неделю или пару раз в ночь проводить более детальные тесты. И найденные баги отправлять на доработку разрабам с различными приоритетами.
  3. Все критические баги уходят на немедленную доработку, остальные в технический долг(бэклог).
Из описанных выше шагов, видно, что необходимо будет прикручивать со стороны какой-то багтрэкер и каналы оповещения. В рамках проекта, планирую рассмотреть REDMINE и SLACK.
Описанная выше схема может измениться, где-то добавиться глубина сканирования, а где-то уменьшится, в зависимости от времени затрачиваемого на анализ. Если вы будете применять на своем продукте, то Вам самим принимать решения. По совету, лучше это обсудить с командами.

Об OWASP ZAP

Итак, почему был выбран именно OWASP ZAP? Все просто, у него хорошее api и его описание. Они первые, кто начал внедряться в DevOps. Есть плагины и множетво модулей(в нашем случае под Python). Достаточно отзывчивое комюнити.
Недостатков тоже полно. Например не совсем юзабилити по сравнению с burp, у него какая-то своя отдельная философия.
В ZAP можно писать скрипты расширения его функционировая, причем порой достаточно простыми способами, например через ZEST язык. Данные скрипты позволяют делать очень многое, прорабатывать поиски детальных багов приложения, как пример когда создается объект(пэйлоад) на одной странице, а обрабатывается пэйлоад на нескольких других страницах, следить за аномалиями и т.д.
В идеале конечно после ZAP надо внедрять и другие сканеры (Burp, w3af и т.д.) для большего покрытия и повышения шансов найти уязвимость. В данной части я хотел еще рассказать про его концепции и основные понятия, но видимо это будет описываться в следующих частях по мере работы с ними.

Необходимые навыки/знания
Для полного погружения в тему необходимо обладать, и/или желание погрузиться в следующие темы:
  • знание основ пентеста веб-приложений
  • чтение на английском
  • базовые знания python
  • немого знаний Docker
  • представление о том, как строится разработка приложений
Это возможно не полный список, и что-то выпало, но дорогу осилит идущий. Сам со всем углубляюсь, освежаю память и т.д. в ходе реализации проекта. Также забегая вперед, скажу что надо будет ознакомиться с таким понятием как ZEST скрипты. И если ты, читатель, обладаешь знаниями JS, то zap со скриптами на JS работает из коробки.
Что дальше?
В следующей части от размышлений, мы перейдем к практике, и я расскажу как развернуть zap на docker. В каких режимах он может там функционировать, какие образы есть. И самое главное грабли, на которые я наступил.
 
Последнее редактирование:

yky

Green Team
31.12.2019
100
41
BIT
7
ZAP объеденил всё лучшее из Paros,jbrofuzz,webscarab.
Даже прикрутили сканер портов )
Начинал работать с ним с ещё с первого его релиза.
Но как и всё опенсорс есть свои недостатки,файзер до сих пор отстаёт от burp.
Как сканер, много ложняков.
Приходится многое допиливать на ruby,в этом есть свой плюс и свой минус )
 
  • Нравится
Реакции: RioAt

zakrush

Well-known member
21.03.2018
81
118
BIT
0
Но как и всё опенсорс есть свои недостатки,файзер до сих пор отстаёт от burp.
Если под файзером подразумевается фазер, то мое мнение заключается в том, что для фаззинга лучше использовать другие инструменты, которые для этого и создавались. Как показывает практика, там производительность получше.
 
  • Нравится
Реакции: yky

Alex43

New member
05.03.2020
2
0
BIT
0
Очень интересно! Продолжайте!
Дальше все ПМСМ. Мы же не японцы. Нам важен не процесс, а результат. А результатом должен быть отчет в системе, которой пользуются девелоперы и манагеры. Выше Вы об этом писали. Хотелось бы чтобы этому моменту было уделено повышенное внимание. Ведь если нет красивого/хорошего отчета твою работу не увидят и не оценят. И это в лучшем случае. Ато еще и начнут рассуждения на тему бюджета, ну и т.д. Спасибо!
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!