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

Статья Сломать чат не вставая с дивана: SQL-инъекция через WebSocket

supaplayer

floppy-диск
Пользователь
Регистрация
19.05.2025
Сообщения
6
Реакции
34
Всем привет.😎
В этой статье покажу, как можно эксплуатировать SQL инъекцию в онлайн чате, который работает через websocketы. Вытаскивать базу и детектить скулю будем через sqlmap.

Это моя первая статья, так что надеюсь, что всё изложу понятно и по делу. Поддержите меня лайком и тёплым словом, если статься понравиться. Может ещё сделаю о чем-то интересном
Теории тут не будет — о том, что такое вебсокеты и скуля, уже не раз писали на форуме. Да и вся нужная информация спокойно гуглится.


Ладно, меньше слов — больше дела. Поехали.
1748388540478.png

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

Давайте перехватим трафик через Burp и посмотрим, что именно происходит под капотом.
Вот и первый запрос:

1748388572385.png

Здесь мы подключаемся к websocket серверу. Код ответа 101 говорит о том, что соединение прошло успешно.
Я выделил заголовки, которые чаще всего встречаются именно у websocket соединений — если вы их видите, значит, websocket сейчас начнет использоваться (ну иль уже используеться, просто переподключение к серверу), и стоит обратить внимание на вкладку WebSockets history (она рядом с HTTP history в Burp Suite).

1748388609644.png


А вот и сам запрос — передаётся username и text. Тут всё просто и понятно для недалёкого, останавливаться надолго не будем.
Дальнейшие запросы повторяются и ничего нового не несут, так что их показывать смысла нема.
Теперь отправим этот запрос на сервер через Repeater и начнём играться. Для начала — просто отправим одинарную кавычку '


1748388638427.png


Вот тут уже становится интересно. Но давайте сразу по честному: на реальных таргетах найти error based скулю — задача почти без шансов. В большинстве случаев от одиночной кавычки толку будет ноль. Та и от спец. символов тоже.
Так что если более серьёзно подходить к делу — стоит запускать sqlmap и хотя бы немного протестировать ручками, посмотреть, как сервер себя ведёт.
Но в нашем учебном примере всё по красоте — error-based есть, dbms – sqlite. Так что давайте сдампим базу через всеми любимый sqlmap.

Тут есть один нюанс: sqlmap из коробки не умеет работать с websocketами.
На помощь приходит sqlmap-websocket-proxy — он действует как промежуточный прокси между sqlmap и websocket сервером
.
1748388697669.png



Команда для запуска sqlmap websocket proxy будет выглядеть вот так:

sqlmap-websocket-proxy -u "ws://websock.test:3000/" -d '{"username":"User","text":"hahaha%param%"}' -p 3349
  • В -d передаём данные, где %param% — это та самая точка, куда sqlmap будет подставлять payloadы.
  • В -p указываем порт, на котором будет крутиться прокси.
  • В -u — URL websocket сервера. Обратите внимание, он должен начинаться с ws:// (если соединение не защищённое) или wss:// (если шифруется).
После запуска прокси, sqlmap будем запускать вот так:

sqlmap -u "http://localhost:3349/?param1=1" [ну и дальше ваши аргументы]
Этот -u — уже не реальный сервер, а наш локальный прокси, который будет пересылать запросы в WebSocket. Там вот в терминале об этом написано
1748388722406.png



sqlmap запустили. Если всё сделали правильно, во вкладке с sqlmap-websocket-proxy будет отображаться отладка — там видно, какие пейлоады sqlmap отправляет на сервер.

1748388749800.png


Ну и, конечно, в самом чате тоже будет заметна активность.
Как можно увидеть, я специально выделил пейлоады, при которых ответ от сервера занял 950 мс и больше. Именно на этих запросах sqlmap и зацепил time based SQL инъекцию.

1748388772742.png

В от и сама скуля. Ну а дальше сами знаете че делать. У меня на этом все:)
 
и вот статья, по мотивам которой писалась утилита
 
правильно понимаю что акунетикс такое не ищет?
если честно, не пользовался никогда им. я думаю что не ищет. как я в интернете посмотрел, только всякие цвехи в веб сокетах. но возможно, ху,во нагуглил. напиши им на почту и спроси
 


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