Сегодня мы рассмотрим возможность создания подов с инструментом DAST – Zaproxy.
🐳 Образы Docker для тестирования на проникновение и безопасности
Установка в K8S
Начало работы
Создайте пространство имен.
kubectl apply -f -<<EOF apiVersion: v1 kind: Namespace metadata: name: owasp-zap labels: name: owasp-zap EOF
Назначьте URL-адрес для сканирования.
export URL_TO_SCAN="http://trytohack.com"
Вариант A – Развертывание с помощью проекта GibHub
> helm install "vuln-scan-$(date '+%Y-%m-%d-%H-%M-%S')-job" ./kube-owasp-zap \ --namespace owasp-zap \ --set zapcli.debug.enabled=true \ --set zapcli.spider.enabled=false \ --set zapcli.recursive.enabled=false \ --set zapcli.targetHost=$URL_TO_SCAN
Вариант B – Использование Helm
Добавьте репозиторий Helm. Затем установите чарт.
> helm repo add simplyzee https://charts.simplyzee.dev > helm install "vuln-scan-$(date '+%Y-%m-%d-%H-%M-%S')-job" implyzee/kube-owasp-zap \ --namespace owasp-zap \ --set zapcli.debug.enabled=true \ --set zapcli.spider.enabled=false \ --set zapcli.recursive.enabled=false \ --set zapcli.targetHost=$URL_TO_SCAN
Система развернет джобу, которае развернет под на платформе Kubernetes, выполняющую проверку на уязвимости.
Пример вывода
Используйте следующую команду для просмотра списка джоб.
Поскольку имена заданий имеют временную метку, мы можем использовать сортировку для перемещения более новых заданий в конец списка.
> kubectl get jobs --namespace owasp-zap | grep -v "COMPLETIONS" | sort vuln-scan-2020-03-20-11-10-17-job-kube-owasp-zap 1/1 22s 6m53s vuln-scan-2020-03-20-10-46-14-job-kube-owasp-zap 1/1 33s 30m
Используйте следующую команду для просмотра журналов джобы.
> kubectl logs jobs/vuln-scan-2020-03-20-11-10-17-job-kube-owasp-zap --namespace owasp-zap [INFO] Starting ZAP daemon [DEBUG] Starting ZAP process with command: /zap/zap.sh -daemon -port 8080 -config api.disablekey=true. [DEBUG] Logging to /zap/zap.log [DEBUG] ZAP started successfully. [INFO] Running a quick scan for http://nodegoat.herokuapp.com [DEBUG] Disabling all current scanners [DEBUG] Enabling scanners with IDs 40012,40014,40016,40017,40018 [DEBUG] Scanning target https://www.ibm.com... [DEBUG] Started scan with ID 0... [DEBUG] Scan progress %: 0 [DEBUG] Scan #0 completed [INFO] Issues found: 0 [INFO] Shutting down ZAP daemon [DEBUG] Shutting down ZAP. [DEBUG] ZAP shutdown successfully.
Установка в Docker
Подготовительные действия
a) Удебиться, что служба Docker запущена:
$ service docker status
б) Выполнить листинг запущенных контейнеров:
$ docker ps
2. Найти контейнер с owasp zap ( название zaproxy ):
а) Если среди запущенных его нет, проверить имя по раннее запущенным:
$ docker ps -a
б) Выполнить старт контейнера:
$ docker start
3. Выполнить вход в оболочку контейнера ( по умолчанию /bin/bash )
4. В облочке контейнера удебиться, что находимся в /zaproxy (pwd)
5. Проверить наличие каталога wrk:
$ ls
При отсутсвии создать:
$ mkdir /zap/wrk/
Выполнение скриптов проверки веб приложения
1) Основное сканирование
/zap/zap-baseline.py -t http://foo -r bar.html -J baz.json -s
Где:
foo – URL целевого сервера
bar – имя отчета в формате html
baz – имя отчета в формате json
а , так же -w – .md ; -X -XML
2) Основное с учетными данными:
/zap/zap-baseline.py -t http://foo -r bar.html -J baz.json -s -z "--auth.loginurl=$DAST_LOGIN_URL auth.username="$DAST_USERNAME" auth.password="$DAST_PASS"
3) Полное сканирование
/zap/zap-baseline.py -t http://foo -r bar.html -J baz.json -s
Получение отчета
После выполения сканирования система предоставит вывод по найденным уязвимостям.
В текущем каталоге будут отчеты.
Для копирования отчета выполнить
$ docker cp dockerID:/zap/report.md /tmp/report.md
см. также: