☸️ Как установить и настроить OWASP ZAP в Kubernetes или Docker

Мануал

Сегодня мы рассмотрим возможность создания подов с инструментом 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

Разверните чарт kube-owasp-zap с заданными значениями для типа сканирования и целевого узла.
> 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

см. также:

Добавить комментарий