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

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

Автоматизированное тестирование безопасности API с использованием Termux и curl‑scripts

Мобильные устройства становятся всё более мощными, и их можно превратить в полноценную лабораторию для тестирования безопасности. В этой статье мы рассмотрим, как с помощью Termux и простых curl-скриптов выполнить автоматизированное тестирование API, не прибегая к тяжёлым фреймворкам.

Что понадобится

  • Устройство под управлением Android (версии 8.0 и выше).
  • Установленное приложение Termux из Google Play или F-Droid.
  • Базовые навыки работы с командной строкой и знание HTTP‑протокола.

Установка и подготовка окружения

После установки Termux откройте его и выполните базовые обновления:

pkg update && pkg upgrade -y

Установим необходимые пакеты:

pkg install curl jq git -y

Для удобного редактирования скриптов рекомендуется установить nano или vim:

pkg install nano -y

Структура проекта

Создадим отдельную директорию для тестов и разместим в ней скрипты, конфигурацию и файлы отчётов.

mkdir -p ~/api-security-tests/{scripts,reports,config}
cd ~/api-security-tests

В папке config будем хранить файл targets.txt со списком эндпоинтов:

cat > config/targets.txt <<'EOF'
https://api.example.com/v1/users
https://api.example.com/v1/orders
EOF

Базовый curl‑скрипт

Создадим скрипт scripts/check_status.sh, который проверяет доступность эндпоинтов и возвращает HTTP‑код.

cat > scripts/check_status.sh <<'EOF'
#!/usr/bin/env bash

TARGET=$1
if [[ -z "$TARGET" ]]; then
  echo "Usage: $0 "
  exit 1
fi

STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$TARGET")
echo "{\"url\": \"$TARGET\", \"status\": $STATUS}" | jq .
EOF
chmod +x scripts/check_status.sh

Тесты на уязвимости

Ниже представлены несколько типовых проверок, которые можно реализовать в виде отдельных curl-скриптов.

1. Проверка аутентификации

Скрипт scripts/auth_test.sh пытается получить доступ без токена и с неправильным токеном.

cat > scripts/auth_test.sh <<'EOF'
#!/usr/bin/env bash

URL=$1
INVALID_TOKEN="invalid-token"

# Без токена
RESPONSE1=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
# С неверным токеном
RESPONSE2=$(curl -s -H "Authorization: Bearer $INVALID_TOKEN" -o /dev/null -w "%{http_code}" "$URL")

echo "{\"url\": \"$URL\", \"no_auth\": $RESPONSE1, \"invalid_auth\": $RESPONSE2}" | jq .
EOF
chmod +x scripts/auth_test.sh

2. Инъекция SQL в параметры

Скрипт scripts/sql_injection.sh отправляет типичную payload‑строку и проверяет реакцию сервера.

cat > scripts/sql_injection.sh <<'EOF'
#!/usr/bin/env bash

URL=$1
PAYLOAD="' OR '1'='1"

RESPONSE=$(curl -s -G -d "search=$PAYLOAD" "$URL" -w "%{http_code}" -o /dev/null)

echo "{\"url\": \"$URL\", \"payload\": \"$PAYLOAD\", \"status\": $RESPONSE}" | jq .
EOF
chmod +x scripts/sql_injection.sh

3. Тест на ограничение скорости (rate limiting)

Скрипт scripts/rate_limit.sh посылает несколько запросов подряд и фиксирует коды ответов.

cat > scripts/rate_limit.sh <<'EOF'
#!/usr/bin/env bash

URL=$1
COUNT=10
RESULTS=()

for i in $(seq 1 $COUNT); do
  CODE=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
  RESULTS+=("$CODE")
  sleep 0.2
done

echo "{\"url\": \"$URL\", \"responses\": $(printf '%s,' "${RESULTS[@]}")}" | jq .
EOF
chmod +x scripts/rate_limit.sh

Автоматизация запуска тестов

Для периодического выполнения тестов в Termux удобно использовать termux-job-scheduler или crontab. Ниже пример настройки cron‑задачи, которая каждый день в 02:00 запускает набор скриптов.

# Установим cron, если он ещё не установлен
pkg install cronie -y

# Добавим задачу в crontab
crontab -e <<'EOF'
0 2   * /data/data/com.termux/files/home/api-security-tests/run_all.sh >> /data/data/com.termux/files/home/api-security-tests/reports/$(date +\%F).log 2>&1
EOF

# Создадим wrapper‑скрипт run_all.sh
cat > run_all.sh <<'EOF'
#!/usr/bin/env bash

while read -r ENDPOINT; do
  ./scripts/check_status.sh "$ENDPOINT"
  ./scripts/auth_test.sh "$ENDPOINT"
  ./scripts/sql_injection.sh "$ENDPOINT"
  ./scripts/rate_limit.sh "$ENDPOINT"
done < config/targets.txt
EOF
chmod +x run_all.sh

После сохранения crontab запустим сервис:

sv-enable crond
sv up crond

Сбор и визуализация результатов

Все выводы скриптов формируются в формате JSON, что упрощает их последующую агрегацию. Например, собрать все результаты за день в один файл и преобразовать в CSV:

cat reports/$(date +%F).log | jq -s '.' > reports/$(date +%F).json
jq -r '.[] | [.url, .status // ., .no_auth // ., .invalid_auth // ., .payload // ., .responses // .] | @csv' reports/$(date +%F).json > reports/$(date +%F).csv

Полученный CSV‑файл можно открыть в любой таблице (Google Sheets, Excel) для дальнейшего анализа.

Лучшие практики

  • Изоляция окружения. Используйте отдельный пользовательский токен с ограниченными правами.
  • Логирование. Храните как сырые ответы, так и агрегированные метрики.
  • Обновление скриптов. Регулярно актуализируйте payload‑библиотеки и добавляйте новые типы проверок.
  • Безопасность самого Termux. Защитите доступ к устройству паролем и используйте шифрование файлов (например, gpg).

Заключение

Termux в сочетании с curl предоставляет лёгкую и гибкую платформу для автоматизированного тестирования безопасности API прямо на мобильном устройстве. Благодаря простоте скриптов, возможности планирования задач и удобному формату вывода JSON, вы можете быстро интегрировать такие проверки в CI/CD‑цепочки или использовать их для периодических аудитов.

Если вам требуется более глубокий аудит, разработка кастомных тест‑сьютов или профессиональная поддержка в области кибербезопасности, обращайтесь в RybinskLab. Мы предоставляем услуги по проведению комплексных тестов безопасности, разработке автоматизированных решений и обучению персонала. Наши эксперты помогут выстроить надёжную защиту ваших API и инфраструктуры.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

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

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

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

Связаться со мной