We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автоматизация аудита веб‑приложений с помощью OWASP ZAP в Termux и генерация отчётов

Termux – это мощный терминальный эмулятор для Android, позволяющий запускать полноценную Linux‑среду без root‑прав. Совмещение Termux с OWASP ZAP (Zed Attack Proxy) открывает возможности полного аудита веб‑приложений прямо со смартфона. В статье мы рассмотрим, как автоматизировать процесс сканирования и генерации отчётов, используя скрипты Bash и планировщик cron.

Подготовка окружения

Для начала необходимо установить базовые пакеты и сам Termux‑API (по желанию). Выполняем следующие команды:

pkg update && pkg upgrade -y
pkg install wget curl git unzip openjdk-17 -y
pkg install python clang make -y

Установка Java необходима, так как ZAP работает на JVM. После установки проверяем версии:

java -version
python3 --version

Установка OWASP ZAP в Termux

Скачиваем последнюю стабильную сборку ZAP с официального репозитория OWASP:

wget -O zap.tar.gz https://github.com/zaproxy/zaproxy/releases/download/v2.14.0/ZAP_2.14.0_Linux.tar.gz
mkdir -p $HOME/zap && tar -xzf zap.tar.gz -C $HOME/zap --strip-components=1

Добавляем директорию ZAP в PATH для удобного вызова:

echo 'export PATH=$HOME/zap:$PATH' >> $HOME/.profile
source $HOME/.profile

Проверяем запуск в режиме демона (headless):

zap.sh -daemon -port 8090 -config api.disablekey=true

Опция -config api.disablekey=true отключает обязательность API‑ключа, что упрощает автоматизацию в локальной среде. Для продакшн‑сканирований рекомендуется задать собственный ключ.

Создание скрипта автоматического сканирования

Скрипт будет выполнять следующие шаги:

  1. Запуск ZAP в режиме демона.
  2. Инициализация контекста и целевого URL.
  3. Запуск активного сканирования.
  4. Ожидание завершения и выгрузка отчётов.
  5. Остановка демона.

Ниже пример Bash‑скрипта zap_scan.sh:

#!/usr/bin/env bash

# Параметры сканирования
TARGET="https://example.com"
ZAP_PORT=8090
REPORT_DIR="$HOME/zap_reports"
mkdir -p "$REPORT_DIR"

# 1. Запуск ZAP в фоне
zap.sh -daemon -port $ZAP_PORT -config api.disablekey=true &
ZAP_PID=$!

# Даем ZAP время на инициализацию
sleep 10

# 2. Создание контекста (опционально)
curl -s "http://127.0.0.1:$ZAP_PORT/JSON/context/action/addContext/?contextName=auto"

# 3. Запуск активного сканирования
SCAN_ID=$(curl -s "http://127.0.0.1:$ZAP_PORT/JSON/ascan/action/scan/?url=$TARGET&recurse=true&inScopeOnly=true" | jq -r '.scan')

# 4. Ожидание завершения сканирования
while :; do
  STATUS=$(curl -s "http://127.0.0.1:$ZAP_PORT/JSON/ascan/view/status/?scanId=$SCAN_ID" | jq -r '.status')
  echo "Progress: $STATUS%"
  if [ "$STATUS" -eq "100" ]; then break; fi
  sleep 5
done

# 5. Генерация отчётов (HTML, XML, JSON)
curl -s "http://127.0.0.1:$ZAP_PORT/OTHER/core/other/htmlreport/" > "$REPORT_DIR/report.html"
curl -s "http://127.0.0.1:$ZAP_PORT/OTHER/core/other/xmlreport/" > "$REPORT_DIR/report.xml"
curl -s "http://127.0.0.1:$ZAP_PORT/OTHER/core/other/jsonreport/" > "$REPORT_DIR/report.json"

# 6. Остановка демона
curl -s "http://127.0.0.1:$ZAP_PORT/JSON/core/action/shutdown/"
kill $ZAP_PID

echo "Отчёты сохранены в $REPORT_DIR"

Для работы скрипта требуется утилита jq (парсер JSON). Установим её:

pkg install jq -y

Сохраните скрипт, сделайте его исполняемым (chmod +x zap_scan.sh) и запустите:

./zap_scan.sh

Автоматизация с помощью cron

Termux поддерживает планировщик crond. Установим и настроим:

pkg install cronie -y
mkdir -p $HOME/.termux/boot

Создаём задачу, которая будет запускать сканирование каждый день в 02:00:

(crontab -l 2>/dev/null; echo "0 2   * $HOME/zap_scan.sh") | crontab -

Запускаем демон crond (можно добавить в автозапуск Termux):

sv-enable crond
sv up crond

Объединение результатов и отправка по email

Для интеграции с системами CI/CD или уведомлениями удобно отправлять готовый отчёт на почту. Пример использования msmtp:

pkg install msmtp -y
cat > $HOME/.msmtprc <

Оптимизация и масштабирование

Для больших целей рекомендуется:

  • Разделять сканирование по поддоменам, используя массив URL‑ов.
  • Настраивать Context и Authentication через API, если приложение требует авторизации.
  • Хранить отчёты в облаке (Google Drive, Dropbox) через их CLI‑клиенты.
  • Объединять результаты нескольких запусков в единый дашборд (например, Grafana + InfluxDB).

Проверка корректности установки

Если при запуске ZAP вы получаете ошибку java.lang.NoClassDefFoundError, проверьте, что переменная JAVA_HOME указывает на установленный JDK:

export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))

Эта рекомендация основана на типичных проблемах «start» Java‑приложений, описанных в словарных источниках [cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start) и [merriam-webster.com](https://www.merriam-webster.com/dictionary/start).

Заключение

Комбинация Termux и OWASP ZAP предоставляет мобильную, но в то же время мощную платформу для регулярного аудита веб‑приложений. Автоматизировав запуск сканеров, сбор отчётов и их доставку, вы получаете постоянный поток актуальной информации о состоянии безопасности без необходимости отдельного сервера.

RybinskLab готов помочь в построении полностью автоматизированных пайплайнов безопасности, адаптированных под ваши бизнес‑процессы. Мы предоставляем консалтинг, настройку CI/CD интеграций и поддержку OWASP‑инструментов в любой инфраструктуре.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

Связаться со мной
Поддержать проект