Помощь с 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
Поиск уязвимостей в WordPress.
wpscan --url http://example.com
Анализ Drupal, Joomla, Silverstripe.
droopescan scan drupal -u http://example.com
joomscan -u http://example.com
3. Поиск скрытых файлов и директорий
dirsearch -u http://example.com -e php,html
Аналог Dirsearch с поддержкой DNS/VHost.
gobuster dir -u http://example.com -w wordlist.txt
Универсальный фаззер для веб-путей.
ffuf -u http://example.com/FUZZ -w wordlist.txt
4. Тестирование параметров (SQLi, XSS, RCE)
sqlmap -u "http://example.com?id=1" --dbs
python3 xsstrike.py -u "http://example.com/search?q=test"
Автоматизация 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
go install github.com/securego/gosec/v2/cmd/gosec@latest
gosec ./... # Проверить все Go-файлы в проекте
1.3 Самостоятельное изучение кода.
1.3.1. Python
# Опасные места:
query = f"SELECT * FROM users WHERE id = {user_input}" # SQLi
os.system(f"echo {input}") # RCE1.3.2. Go
// SQL-инъекция:
db.Query("SELECT * FROM users WHERE id = " + userInput)
// RCE:
cmd := exec.Command("sh", "-c", input)1.3.3. Node.js (Express)
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.
- Анализировать вывод сканеров и предлагать дальнейшие действия.
- Помогать с эксплуатацией уязвимостей.
- 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-адрес
Основные команды
next Получить следующий шаг (после ввода результатов сканирования).
more Подробное объяснение текущего шага.
todo Список задач для выполнения (например, "проверить SQL-инъекцию").
discuss Обсудить проблему (например, "Как эксплуатировать LFI?").
quit Завершить сессию и сохранить лог.
Пример работы в CTF
Задача:
Есть веб-приложение на http://ctf.example.com:8000. Нужно найти флаг.
Шаг 1: Разведка
pentestgpt --reasoning_model=gpt-4
→ Выбираем new, вводим http://ctf.example.com:8000.
PentestGPT предлагает сканирование Nmap:
nmap -sV -A ctf.example.com -p 8000
→ Копируем вывод и вводим в PentestGPT (next).
Анализ результатов:
→ Если порт 8000 открыт (HTTP), PentestGPT предложит:
Шаг 2: Поиск уязвимостей
sqlmap -u "http://ctf.example.com:8000/admin?user=admin" --dbs
Если SQLi нет, попробовать XSS:
Шаг 3: Эксплуатация
sqlmap -u "http://ctf.example.com:8000/admin?user=admin" -D web_db --dump
→ Возможно, флаг в таблице flags.
Если найден LFI (Local File Inclusion):
→ PentestGPT подскажет, как читать файлы:
4. Дополнительные возможности
4.1. Локальные модели (GPT4All)
pentestgpt --reasoning=gpt4all --parsing=gpt4all
4.2. Генерация отчётов
После завершения (quit) логи сохраняются в logs/. Можно сгенерировать отчёт:
python3 utils/report_generator.py logs/your_session.log
4.3. Интеграция с Burp Suite
Вот HTTP-запрос. Какие уязвимости здесь есть?
WASM-decompile:
Установка WABT (включая wasm-decompile)
Способ 1: Установка через пакетный менеджер (Linux/macOS)
Для Ubuntu/Debian/Kali Linux:
sudo apt update sudo apt install wabt # Устанавливает весь WABT, включая wasm-decompile
Пример использования в CTF
Допустим, у вас есть файл challenge.wasm, и нужно его проанализировать.
Шаг 1: Декомпиляция в псевдокод
wasm-decompile challenge.wasm -o output.dcmp # или output.o
challenge.wasm— входной WASM-файл.output.dcmp— файл с декомпилированным кодом (читаемый формат, похожий на C).
Полезные ссылки
1) https://beautifier.io/ (деобфускатор js)