Доброго времени суток, %username%. Довольно давно беру сервера у одной хостинг-компании, занимающийся продажей, арендой и размещением серверов. Компания довольно приличная, имеются все нужные документы, а самое-то, что меня заинтересовало — это самописная биллинг панель. Компания решила остаться анонимной.
Всё началось недавно, когда мне захотелось проверить данную панель на уязвимости. Первым делом я начал искать XSS, т.к. полей ввода там было довольно много.
XSS в редактировании информации о себе
Анализ
Для начала я зашел в редактирование информации о себе. Первым делом, что я увидел — это проверка полей на правильность заполнения, JavaScript`ом. Скрипт не разрешал вставлять спец. символы в поле ввода.
Подготовка
Открыв исходный код, я вставил в input следующий код:
,
и нажав кнопку «Подтвердить изменения» я увидел следующее уведомление:
Проанализировав код дальше я увидел, что на кнопку сохранения идет функция проверки правильности полей:
Уберем её и нажмем сохранить.
Результат
Результат оказался положительным.
Отписавшись о данной баге, я продолжил искать дальше.
XSS на кнопке «Вернуться»
Создав тикет, я увидел кнопку «Вернуться», ссылка составлялась из URL.
Примерный вид: host/ticket.php?t_id=1234
Сразу подставил к ID, код, получилось вот так:
host/ticket.php?t_id=1234%22/%3E%3Cscript%3Ealert(%22XSS%22)%3C/script%3E
Результат
И опять, результат оказался положительным.
Просмотр чужих данных
Опять, анализирую исходный код страницы с редактирование информации, я увидел вот такую штуку:
Поменяв значение client_id на 1 и нажав кнопку «Сохранить» я увидел очень интересную вещь. В форму подставились данные владельца аккунта под ID=1
Как можно было допустить такую ошибку, я до сих пор не пойму.
Еще я из интереса попробовал подставить две кавычки в этот же input, и о боже.
Завершение
Обо всех уязвимостях я отписался администрации и они были оперативно закрыты.
И в конце хочу сказать, фильтруйте любые входящие данные и обязательно проверяйте права пользователей.
Спасибо за внимание.
Автор: AlexanderPHP