May 17, 2025

Помощь с CTF (Web)

Автоматические инструменты для анализа:

1. Nikto

Nikto — это мощный сканер уязвимостей веб-серверов, который помогает находить распространённые уязвимости, устаревшие версии ПО, опасные файлы и конфигурационные ошибки.

Установка:

sudo apt update && sudo apt install nikto -y  # Debian/Ubuntu/Kali

Простая проверка:

nikto -h http://example.com

Сканирование с указанием порта

nikto -h http://example.com -p 8080

Вывод:

  • Список уязвимостей (например, X-XSS-Protection не настроен).
  • Информация о сервере (Apache, Nginx).
  • Найденные опасные файлы (/admin.php, /config.ini).

2. Сканеры для CMS

WPScan

Поиск уязвимостей в WordPress.

wpscan --url http://example.com

Droopescan

Анализ Drupal, Joomla, Silverstripe.

droopescan scan drupal -u http://example.com

JoomScan

Сканирование Joomla.

joomscan -u http://example.com

3. Поиск скрытых файлов и директорий

Dirsearch

Быстрый брутфорс директорий.

dirsearch -u http://example.com -e php,html

Gobuster

Аналог Dirsearch с поддержкой DNS/VHost.

gobuster dir -u http://example.com -w wordlist.txt

FFuF

Универсальный фаззер для веб-путей.

ffuf -u http://example.com/FUZZ -w wordlist.txt

4. Тестирование параметров (SQLi, XSS, RCE)

sqlmap

Автоматизация SQL-инъекций.

sqlmap -u "http://example.com?id=1" --dbs

XSStrike

Поиск и эксплуатация XSS.

python3 xsstrike.py -u "http://example.com/search?q=test"

Commix

Автоматизация RCE (Command Injection).

commix -u "http://example.com/cmd.php?input=test"

Анализ исходного кода:

1.1. Ключевые точки входа

  • Dockerfile – смотрим, какие порты открыты, какие сервисы запускаются, какие переменные окружения (ENV) используются.
  • docker-compose.yml – анализируем связи между контейнерами, volumes, зависимости.
  • Основные файлы приложения (main.py, app.js, server.go и т. д.) – ищем роуты (/admin, /api), middleware, обработчики запросов.

1.2 Использование статических анализаторов кода

1.2.1 Bandit — анализ Python-кода

Установка

pip install bandit  # Установка

Использование

(./web_app - директория, флаг -r - рекурсивно)

bandit -r ./web_app

1.2.2 Gosec — анализ Go-кода

Установка

go install github.com/securego/gosec/v2/cmd/gosec@latest

Использование

gosec ./...  # Проверить все Go-файлы в проекте

1.3 Самостоятельное изучение кода.

1.3.1. Python

  • Уязвимости: eval(), pickle.loads(), subprocess.run()
# Опасные места: 
query = f"SELECT * FROM users WHERE id = {user_input}" # SQLi 
os.system(f"echo {input}") # RCE

1.3.2. Go

  • Уязвимости: sql.DB.Query() без параметризации, os/exec
// SQL-инъекция: 
db.Query("SELECT * FROM users WHERE id = " + userInput)
// RCE: 
cmd := exec.Command("sh", "-c", input)

1.3.3. Node.js (Express)

  • Уязвимости: eval(), child_process.exec(), невалидируемый req.body 9.
app.get('/search', (req, res) => {
    const query = `SELECT * FROM products WHERE name = '${req.query.q}'`; 
    // SQLi
});

Использование AI:

1) PentestGPT

PentestGPT — это инструмент на базе GPT-4, GPT-4o, GPT-4-turbo, Deepseek, Gemini, помогающий автоматизировать пентест и решение CTF-задач. Он умеет:

  • Генерировать команды для sqlmap, Burp Suite, Nmap.
  • Анализировать вывод сканеров и предлагать дальнейшие действия.
  • Помогать с эксплуатацией уязвимостей.

Доступные модели:

View available models:

pentestgpt --models

Current models include

  • OpenAI: gpt-4o (default), o3, o4-mini, gpt4all
  • Gemini: gemini-2.5-flash, gemini-2.5-pro
  • Deepseek: deepseek-r1, deepseek-v3

Быстрая установка и запуск:

# Install
pip3 install git+https://github.com/GreyDGL/PentestGPT

# Configure API keys (choose your preferred provider)
export OPENAI_API_KEY='your_key_here'         # For OpenAI models
export GOOGLE_API_KEY='your_key_here'         # For Gemini models
export DEEPSEEK_API_KEY='your_key_here'       # For Deepseek models

# Test connection
pentestgpt-connection

# Start PentestGPT with default settings (GPT-4o)
pentestgpt

Старт сессии

pentestgpt --reasoning_model=gpt-4 || pentestgpt --reasoning=gpt4all --parsing=gpt4all 
# модель можно менять: 
# deepseek-chat (deepseekV3), || deepseek-v3
# deepseek-reasoner (deepseek-R1) || deepseek-r1
# o3 (chat gpt-o3)
# Gemini-2.5-flash-preview-04-17 (gemini 2.5) || gemini-2.5-flash
# o4-mini (chatgpt o4-mini)

→ Выберите new (новая задача) или continue (продолжить прошлую).

Ввод цели

Enter target: http://vuln-site.com  # или IP-адрес

Основные команды

help Список всех команд.

next Получить следующий шаг (после ввода результатов сканирования).

more Подробное объяснение текущего шага.

todo Список задач для выполнения (например, "проверить SQL-инъекцию").

discuss Обсудить проблему (например, "Как эксплуатировать LFI?").

quit Завершить сессию и сохранить лог.

Пример работы в CTF

Задача:

Есть веб-приложение на http://ctf.example.com:8000. Нужно найти флаг.

Шаг 1: Разведка

  1. Запускаем PentestGPT:bash
pentestgpt --reasoning_model=gpt-4

→ Выбираем new, вводим http://ctf.example.com:8000.

PentestGPT предлагает сканирование Nmap:

bash

nmap -sV -A ctf.example.com -p 8000

→ Копируем вывод и вводим в PentestGPT (next).

Анализ результатов:
→ Если порт 8000 открыт (HTTP), PentestGPT предложит:

  • Проверить директории через gobuster:bash
    • gobuster dir -u http://ctf.example.com:8000 -w /usr/share/wordlists/dirb/common.txt
    • Искать уязвимости вручную через Burp Suite.

Шаг 2: Поиск уязвимостей

  1. Допустим, gobuster нашел /admin:
    → Вводим вывод в PentestGPT (next).
  2. PentestGPT предлагает:
    • Проверить форму входа на SQL-инъекцию:bash
sqlmap -u "http://ctf.example.com:8000/admin?user=admin" --dbs

Если SQLi нет, попробовать XSS:

bash

    • curl -X POST http://ctf.example.com:8000/search --data "query=<script>alert(1)</script>"

Шаг 3: Эксплуатация

  1. Если sqlmap нашел БД:
    → PentestGPT предложит дамп данных:bash
sqlmap -u "http://ctf.example.com:8000/admin?user=admin" -D web_db --dump

→ Возможно, флаг в таблице flags.

Если найден LFI (Local File Inclusion):
→ PentestGPT подскажет, как читать файлы:

bash

  1. curl http://ctf.example.com:8000/download?file=../../etc/passwd

4. Дополнительные возможности

4.1. Локальные модели (GPT4All)

Если нет OpenAI API:

bash

pentestgpt --reasoning=gpt4all --parsing=gpt4all

4.2. Генерация отчётов

После завершения (quit) логи сохраняются в logs/. Можно сгенерировать отчёт:

bash

python3 utils/report_generator.py logs/your_session.log

4.3. Интеграция с Burp Suite

  1. Перехватывайте запросы в Burp.
  2. Копируйте их в PentestGPT через discuss:plaintext
Вот HTTP-запрос. Какие уязвимости здесь есть?

WASM-decompile:

Установка WABT (включая wasm-decompile)

Способ 1: Установка через пакетный менеджер (Linux/macOS)

Для Ubuntu/Debian/Kali Linux:

bash

sudo apt update
sudo apt install wabt  # Устанавливает весь WABT, включая wasm-decompile

Пример использования в CTF

Допустим, у вас есть файл challenge.wasm, и нужно его проанализировать.

Шаг 1: Декомпиляция в псевдокод

bash

wasm-decompile challenge.wasm -o output.dcmp # или output.o

Где:

  • challenge.wasm — входной WASM-файл.
  • output.dcmp — файл с декомпилированным кодом (читаемый формат, похожий на C).

Полезные ссылки

1) https://beautifier.io/ (деобфускатор js)

2)