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

Статья Крадем конфиденциальную информацию с помощью Graphql

NokZKH

Переводчик
Забанен
Регистрация
09.02.2019
Сообщения
99
Реакции
121
Пожалуйста, обратите внимание, что пользователь заблокирован
Вступление
Я Pratik Yadav. В настоящее время работаю как инженер по безопасности на сайте Crypto (Также я учусь на последнем курсе по специальности компьютерный инженер).

Об Уязвимости
Чтобы обнаружить эту ошибку, я изучил основы graphql (5-6 часов) и прочитал все доступные отчеты об ошибках. Когда я проверял субдомены цели, я нашел поддомен stg.target.com и установил, что они используют graphql вместо Rest-API.

Подробнее здесь: https://graphql.org/ (Graphql является альтернативой Rest-API)

О приложении: В этом приложении пользователи могут отправлять деньги пользователям.
Требования: Просто адрес электронной почты жертвы.

Шаги
(скриншотов достаточно, чтобы можно было пропустить теорию)


1. Сначала я просматривал запросы приложений через прокси-сервер BurpSuite и выполнял определенные операции, например отправку денег на другой тестовый счет и т.д.

2. Итак, выполнив все возможные операции, я проверил все http-запросы. Поэтому после проверки всех http-запросов мое внимание попало на конечную точку, которая генерировалась, когда мы отправляем деньги другим пользователям.

3. Поэтому перед отправкой денег приложение сначала проверяет, является ли второй пользователь зарегистрированным пользователем, или нет. Это был запрос Graphql, который проверял, зарегистрирован ли пользователь на платформе или нет.

1.jpeg


4. Посмотрите ответ на этот запрос на скриншоте. Вы можете увидеть, что есть «__Typename: - Auth_User».

5. Поэтому через некоторое время я решил найти все значения полей __typename: -Auth_user.

6. Все __typename и значения его полей можно найти с помощью запроса:

https://api.stg.target.com/graphq?query={__schema{types{name,fields{name}}}} (Он выбрасывает все typenames и значения полей)

Я проверил все значения полей typename: - Auth_user и отметил addressLine1 а также addressLine2 это то, что нам запрещено видеть:

2.jpeg


7. Поэтому я заменил значение status в исходном запросе (Пожалуйста, сравните этот скрин с первым) (Вы можете увидеть, что я заменил значение статуса на addressLine1 в исходном запросе и запустил его) И, как и ожидалось, он сливает addressline1 другим пользователям. Это пришло на мой второй акаунт:

3.jpeg


Так что с помощью электронной почты вы можете чью-то конфиденциальную информацию.

Точно так же я заменил addressline1 на balance и wallet_address. Мне пришла информация другого пользователя, которую мы не должны видеть.

Заключение
Я сообщил им о уязвимости, они увидели доказательства, которые я предоставил, и сразу же сняли поддомен.
И ещё, они наградили меня большой суммой)))

Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://medium.com/@pratiky054/graphql-bug-to-steal-anyones-address-fc34f0374417
 


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