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

История о json XSS

top

(L3) cache
Пользователь
Регистрация
03.02.2020
Сообщения
252
Реакции
342
Привет, народ!

Этот пост об одной из моих недавних находок в программе баг-баунти.

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

cd1940680217aabd48303.png

Если посмотреть на тело запроса и ответ от сервера, можно заметить закономерность - значение параметра "status" отображается в ответе. Чтобы опровергнуть или подтвердить это предположение, я решил попробовать вставить свою строку в качестве этого параметра и посмотреть, отобразится ли она.

512e044e1c6622a06e005.png

Что дальше? Давайте проверим наличия XSS при помощи простого пейлоада:

068a31a01727abc5c5cbc.png

Как вы видите, угловые скобки фильтруются. Попробовав поменять несколько кодировок, я убедился в том, что проблема (для нас) по-прежнему есть. Я, было, решил сдаться, как вдруг вспомнил об одном трюке с массивами.

f3f23b7b753eddb258475.png

Как вы можете видеть, все что я написал в скобках, отобразилось в ответе следующим образом
Код:
Status - JSON Object
<haha> - ключ JSON Object
Test - значение ключа <haha> JSON Object
Давайте еще раз проверим XSS с простой полезной нагрузкой:

8746305980c4b7c62e902.png

Теперь мы уверены в том, что угловые скобки работают на нас. Но что, если мы применим вставим здесь символ "="?

3f99446882ce4c1658d9b.png

Это сломает запрос и мы получим нулевое значение. Подправим пэйлоад, закодировав предыдущий символ при помощи Url Encode:

c1ae4d3224c36656d0d2f.png

Последний штрих - генерируем финальный пэйлоад

23a46df9e0d951af0b383.png

И POC CSRF, чтобы использовать его.

02b1145881bf0037fb72d.png

Единственная проблема в том, что параметр "userId" было невозможно угадать - я проверил еще несколько эндпоинтов, чтобы попробовать заполучить его, но не добился успеха и сообщил об этой уязвимости "как есть". Разработчики быстро исправили её. Кроме того, это не единственное место, где использовался JSON на сайте - каждый эндпоинт был уязвим.

Статья доступна в оригинале на английском языке - читать

взято с канала Cybred
 


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