MyAppSec
61 subscribers
15 photos
7 files
23 links
Про AppSec & DevSecOps
Download Telegram
Или так:

docker run --rm -v $(pwd):/zap/wrk/:rw -m 4g -e ZAP_AUTH_HEADER=Cookie -e ZAP_AUTH_HEADER_VALUE="SESSIONID=12345" -t zaproxy/zap-stable zap-full-scan.py -t https://example.com -g gen.conf -z "-config scanner.maxScanDurationInMins=120 -config globalexcludeurl.url_list.url.regex='.*logout.*'"
Ребята из GitLab проделали большую работу и адаптировали множество сканеров уязвимостей для автозапуска в своих пайплайнах. Но запускать их можно и вне GitLab.

Код сканеров можно найти здесь: https://gitlab.com/gitlab-org/security-products/analyzers

Для каждого из них в реестре имеется контейнер с соответствующим именем. Например:

docker pull registry.gitlab.com/gitlab-org/security-products/analyzers/brakeman
docker pull registry.gitlab.com/gitlab-org/security-products/analyzers/semgrep

Все сканеры запускаются примерно так:
docker run --rm -m 4g --volume $(pwd):/src --volume $(pwd):/report имя_контейнера /analyzer r --target-dir /src --artifact-dir /report

Запускаем из текущей папки с исходным кодом и получаем отчет в папке report. Дальше парсим json или грузим в Defect Dojo.
Стоит отметить, что основную ценность GitLab сканеров представляют правила для Semgrep, которые пишутся и поддерживаются GitLab ом. Они меньше фолсят и в целом рассчитаны на использование в CI.

Сами правила находятся тут, но проще их запускать в semgrep контейнере способом, описанным выше.

https://gitlab.com/gitlab-org/security-products/sast-rules
В процессе подготовки к OSWE нашел полезный ресурс для практики поиска уязвимостей в коде ака Code Review.

https://pentesterlab.com/

Часть заданий бесплатно, часть почти бесплатно (20 баксов в месяц)
Как сканировать API с аутентификацией по JWT? При наличии OpenAPI спецификации на сайте можно так:

docker run --rm -v $(pwd):/zap/wrk/:rw -m 4g -e ZAP_AUTH_HEADER=Authorization -e ZAP_AUTH_HEADER_VALUE="Bearer jwt_токен" -t zaproxy/zap-stable zap-api-scan.py -t https://rest.vulnweb.com/files/openapi-swagger_jwt.yaml -f openapi -g gen.conf

Значение JWT для rest.vulnweb.com вместе с тестом других методов аутентификации можно найти тут:

https://rest.vulnweb.com/docs/
Если есть желание сканировать код с PT AI, но нет возможности его купить, можно поставить бесплатное расширение для VS Code:

https://marketplace.visualstudio.com/items?itemName=POSIdev-community.application-inspector

Сравнивали с полной версией - результаты сканирований идентичны. Из минусов - очень требователен к ресурсам, для больших проектов имеет смысл ставить на отдельную машину.
Сравнение-PT_AI-ScanSuite.xlsx
13.7 KB
Кстати, в начале года сравнивали полную версию PT AI с набором open source аналогов (Semgrep, Bandit, FindSecBugs, Security Code Scan и т.д.) под общим названием ScanSuite.

Сравнение субъективное, на полноту не претендует, результат тогда был в пользу open source.
Отличный курс по безопасности приложений и окружения:

https://www.youtube.com/playlist?list=PLQC2_0cDcSKD_JHWtEJGIFQUVh7Z5JM8E
Как просканировать сайт на CMS Bitrix на уязвимости?

Качаем шаблоны для Nuclei:

git clone https://github.com/jhonnybonny/nuclei-templates-bitrix.git

Сканируем:

docker run --rm -v $(pwd):/tmp -v $(pwd)/nuclei-templates-bitrix:/nuclei-templates projectdiscovery/nuclei -t /nuclei-templates -u https://example.com

вместо -u https://example.com можно указать файл с со списком сайтов через -l TARGETS.txt

В качестве бонуса, репа с эксплоитами: https://github.com/JackPot777/bitrix
Сканируем python код на уязвимости сканером Bandit. Из папки с исходниками запускаем:

docker run --rm -v "${PWD}:/src" ghcr.io/pycqa/bandit/bandit -r /src -f json -o /src/bandit.json

Есть ещё Semgrep, можно любой код сканировать, сам определяет языки и применяет правила:

docker run --rm -v "${PWD}:/src" returntocorp/semgrep semgrep --json -o semgrep.json
Вопрос что делать с json. Можно выгружать в Defect Dojo, ставится легко:

git clone https://github.com/DefectDojo/django-DefectDojo
cd django-DefectDojo && ./dc-up-d.sh postgres-redis


После установки получаем админский пароль:

docker compose logs initializer | grep "Admin password:"

Логинимся в веб консоль, создаем новый Product, в нем новый Engagement и далее выгружаем json, указав соответствующий тип теста.
Modsecurity WAF можно поднять быстро и бесплатно с неплохим набором правил, поддерживаемых owasp (https://owasp.org/www-project-modsecurity-core-rule-set/)

Например, есть уязвимый фронт на докере с именем flask, который слушает на порту 5000. Перед ним поднимаем modsecurity-crs:

docker run -dti --name modsecurity -p 80:80 -e PARANOIA=1 -e PROXY=1 -e BACKEND=https://flask:5000 owasp/modsecurity-crs:3.3.4-nginx-alpine-202304160904

Само собой можно настроить TLS с правильными сертификатами и другими плюшками.
Проверяем удаленный Linux сервер на соответствие лучшим практикам харденинга:

docker run --rm -v ~/.ssh:/root/.ssh -v $(pwd):/share hysnsec/inspec exec https://github.com/dev-sec/linux-baseline.git -t ssh://имя_sudo_юзера@удаленный_сервер -i ~/.ssh/id_rsa --chef-license accept --reporter json:/share/inspec-output.json

Предполагается, что id_rsa ключ лежит в ~/.ssh и уже добавлен в разрешенные на удаленном сервере.
WebApp-Checklist-0.4.xlsx
34.6 KB
Хороший чеклист для пентестов веб приложений.
Не самый полный, но помогает не забыть обязательные проверки.
🔥1
Обучение тестирование web.docx
26.6 KB
Ссылки на учебные видео по вебу, если есть пробелы в понимании чек листа.
Позитивы выкатили свою версию методологии внедрения безопасной разработки AppSec Table Top. Документ объемный, включает многие аспекты DevSecOps, подробно описаны подходы и ключевые этапы.

Это далеко не первая попытка систематизировать процесс внедрения безопасной разработки, AppSec велосипеды изобретают в OWASP с их SAMM и BSIMM, есть хорошие их адаптации к российским реалиям в виде ГОСТа 56939 или фреймворка DAF от Джета.

В целом материала для внедрения достаточно, осталось выделить приоритетные направления и вкладываться в безопасность.
Static_Analysis.pdf
172.7 KB
Слайды с моей недавней презентации по способам проведения статического анализа кода, зависимостей и конфигураций.

Рассказал про типы анализа, какие тулы использовать и что делать с результатами. Поговорили и про кастомизацию сканеров и написание своих Semgrep / Nuclei правил.