Уязвимости в биллинге одной хостинг компании

в 9:18, , рубрики: xss, информационная безопасность, метки:

Доброго времени суток, %username%. Довольно давно беру сервера у одной хостинг-компании, занимающийся продажей, арендой и размещением серверов. Компания довольно приличная, имеются все нужные документы, а самое-то, что меня заинтересовало — это самописная биллинг панель. Компания решила остаться анонимной.

Всё началось недавно, когда мне захотелось проверить данную панель на уязвимости. Первым делом я начал искать XSS, т.к. полей ввода там было довольно много.

XSS в редактировании информации о себе

Анализ

Для начала я зашел в редактирование информации о себе. Первым делом, что я увидел — это проверка полей на правильность заполнения, JavaScript`ом. Скрипт не разрешал вставлять спец. символы в поле ввода.

Подготовка

Открыв исходный код, я вставил в input следующий код:
image,
и нажав кнопку «Подтвердить изменения» я увидел следующее уведомление:

image

Проанализировав код дальше я увидел, что на кнопку сохранения идет функция проверки правильности полей:
image
Уберем её и нажмем сохранить.

Результат

Результат оказался положительным.
image
Отписавшись о данной баге, я продолжил искать дальше.

XSS на кнопке «Вернуться»

Создав тикет, я увидел кнопку «Вернуться», ссылка составлялась из URL.
Примерный вид: host/ticket.php?t_id=1234

Сразу подставил к ID, код, получилось вот так:
host/ticket.php?t_id=1234%22/%3E%3Cscript%3Ealert(%22XSS%22)%3C/script%3E

Результат

И опять, результат оказался положительным.
image

Просмотр чужих данных

Опять, анализирую исходный код страницы с редактирование информации, я увидел вот такую штуку:
image

Поменяв значение client_id на 1 и нажав кнопку «Сохранить» я увидел очень интересную вещь. В форму подставились данные владельца аккунта под ID=1
image
Как можно было допустить такую ошибку, я до сих пор не пойму.

Еще я из интереса попробовал подставить две кавычки в этот же input, и о боже.
image

Завершение

Обо всех уязвимостях я отписался администрации и они были оперативно закрыты.
И в конце хочу сказать, фильтруйте любые входящие данные и обязательно проверяйте права пользователей.
Спасибо за внимание.

Автор: AlexanderPHP

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js