Самый реалистичный исход — экстракция данных (SELECT). У сервис-аккаунта только SELECT, stacked-queries отключены, но через UNION, логический или time-blind SQL можно вытянуть таблицы, доступные пользователю.
⚠️ Вторичная угроза — second-order инъекция.
Параметр q логируется в audit.log. Если эти логи потом обрабатываются в другом контексте (например, парсером с привилегиями), payload может «проснуться» позже.
Менее вероятные сценарии:
— DoS ограничен statement_timeout=5s и rate-limit;
— модификация данных невозможна при read-only правах.
— права аккаунта (SELECT ли реально?);
— audit-логи на SQL-паттерны;
— slow-queries и аномалии latency;
— сигнатуры вроде UNION, INFORMATION_SCHEMA, pg_sleep.
1. перейти на параметризованные запросы;
2. убрать логирование сырого q;
3. ограничить объём выдачи и частоту запросов;
4. ввести базовые правила WAF и проверки ввода.
Самое важное — не забывайте про second-order: SQLi, спрятанная в логах, — это бомба замедленного действия.
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥰3👾1
🧩 Хакер-челлендж
Сценарий: Microservice-архитектура с JWT-аутентификацией. Сервис A генерирует токены (алгоритм RS256), сервис B их проверяет. В JWT payload:
Сервис B проверяет подпись, но разработчик добавил фичу:
Публичный ключ RS256 доступен по эндпоинту
❓ Какой вектор атаки наиболее эффективен для получения admin-доступа? Голосуйте эмодзи:
🔥 — Algorithm confusion: подменить RS256 на HS256, используя публичный ключ как symmetric secret
👾 — None algorithm bypass: создать токен с “alg”: “none”, изменить role на “admin”
❤️ — JWT secret bruteforce: перебрать HS256 секрет (если он слабый) через hashcat
🐸 Библиотека хакера
#ctf_challenge
Сценарий: Microservice-архитектура с JWT-аутентификацией. Сервис A генерирует токены (алгоритм RS256), сервис B их проверяет. В JWT payload:
{
"user_id": 1337,
"role": "user",
"iat": 1699552800,
"exp": 1699639200
}
Сервис B проверяет подпись, но разработчик добавил фичу:
Если в заголовке токена указан “alg”: “none”, проверка пропускается для «тестовых» запросов. Также в коде есть fallback на HS256 с секретом из переменной окружения.
Публичный ключ RS256 доступен по эндпоинту
/jwks.json.🔥 — Algorithm confusion: подменить RS256 на HS256, используя публичный ключ как symmetric secret
👾 — None algorithm bypass: создать токен с “alg”: “none”, изменить role на “admin”
❤️ — JWT secret bruteforce: перебрать HS256 секрет (если он слабый) через hashcat
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👾18🔥5❤1🥰1
Раннее мы выкладывали задачу
Правильный ответ:
Наиболее критичен None algorithm bypass, если тестовая логика доступна извне — это мгновенный обход. На втором месте — algorithm confusion, часто эксплуатируемая при неправильной поддержке нескольких алгоритмов.
• Отключить поддержку alg: "none" во всех окружениях.
• Убрать любые fallback-алгоритмы; явно принимать только ожидаемый алгоритм (например, только RS256).
• Валидировать kid/iss/aud и проверять, что ключи из JWKS приходят из доверенного источника; кэшировать JWKS.
• Не использовать публичный RSA-ключ в качестве HMAC-секрета и хранить приватные ключи в безопасном хранилище (KMS/HSM).
• Логировать и мониторить аномалии подписи и подозрительные alg/kid запросы.
Пример безопасной проверки (псевдокод, defensive):
# явно разрешённые алгоритмы и строгая проверка
jwt.decode(token, public_key, algorithms=['RS256'], audience='your-aud', issuer='your-iss’)
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰5👾3👏2
Сценарий: обычный пользователь
ctfuser на Linux-VM (пароль ctfpass123`). На VM есть устаревшие пакеты и ошибочные конфигурации.Цель
— поднять привилегии до `root и прочитать /root/flag.txt.Ключевые факты:
* В системе есть несколько SUID-бинарников.
* В `/etc/cron.d/` есть cron, который вызывает скрипт от root; сам скрипт хранится в директории, куда `ctfuser` может писать.
* Работает локальный daemon, слушающий только127.0.0.1.
* Установлены старые пакеты — возможен известный локальный CVE.
* В домашней директории `ctfuser` есть `backup/old_script.sh` и `.bash_history` с намёками.
sudo -l, find / -perm -4000 -type f, просмотрите cron'ы и права на скрипты.🔥 — SUID-эксплойт: найти SUID-бинарник, позволяющий исполнить shell/прочитать файлы root
👾 — Cron + writable script: подменить root-скрипт, который запускается по cron
❤️ — Sudo misconfig:
NOPASSWD или небезопасные шаблоны в sudoers дают shell#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👾20🔥3❤2🥰1
У нас Linux-VM с пользователем ctfuser и набором типичных для CTF уязвимостей: SUID-бинарники, кривые cron’ы, локальный сервис и старые пакеты. Цель — стать root и прочитать /root/flag.txt.
— в
/etc/cron.d/ есть задание от root, но сам вызываемый скрипт лежит в директории, куда может писать ctfuser— среди SUID-файлов нет очевидных «подарков» типа старых версий
find/vim— локальный daemon слушает только
127.0.0.1, но эксплойт требует уже повышенных прав— в
$HOME/backup есть старый old_script.sh, но он не исполняется автоматически— .bash_history намекает, что админ вручную запускал этот cron-скрипт во время тестов
/root/flag.txt в доступное место.#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4👍3❤1