Как сломать и зайти в чужую панель AZORult 3.0

X-DMIN

КИДАЛА

X-DMIN

КИДАЛА
Регистрация
2 Июл 2018
Сообщения
1,325
Реакции
940
Репутация
0
Как должно быть многим известно, угнать логи с админки ранних версий было до идиотизма просто - найди адрес гейта, найдешь и всё остальное. Чуть позже пошли по рукам корявые XSS, ломающие верстку и т.д.

Но на анализ Величайшему, тайно, под покровом ночи, была дана версия 3.0, где большинство ошибок, активно используемых разными тупыми нубасами (и илитой, конечно же) уже было закрыто.

XSS через гейт.
Функция ShowHomePage(), строка 183 (gate.php):


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Не смотря на то, что переменная $tmp[$i]['p_soft_name'] обрабатывалась ранее с помощью htmlspecialchars, одинарные кавычки были пропущены. В теории можно было провести XSS-атаку.

POC:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Обычный алерт, но работал как часы. А что если мы захотим исполнить свой js (куки то не угонишь - уже стоял флаг httponly)? Задача усложнялась тем, что существовало ограничение на кол-во символов в этом поле. И в результате долгих потуг был рожден вот такой монстр:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Что удивительно, оно срабатывало, хоть и не всегда (FF - временами, Chrome - временами, Opera/IE - как часы). В админке это выглядело крайне занимательно:



Но всё же работало) Если подгрузить свой js, то все эти непотребства можно было убрать и навести шороху.

SQL-injection внутри админки
Функции ShowReportsPage() и ShowPasswordsPage().
Уязвимые параметры - datefrom, dateup, search, countries, cookiesearch.

Примеры:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Заливка шелла:
Убеждаемся, что есть права (file_priv=Y)


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Заливаем мини-шелла:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Было еще парочку инъекций, но, согласитесь, и так неплохо вышло.

Произвольные имена отчетов и перезапись отчетов
В gate.php недостаточно фильтровалась переменная filename. Можно было указать любое имя. На php 5.2 это привело бы к заливке шелла через nullbyte. Но и на последних версиях php тоже была возможна заливка шелла - если залить файл 1.php.zip, а Apache неправильно сконфигурирован, то файл будет исполняться как php-скрипт.


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Как фича - тот, кто украл ранее логи, мог затереть существующие, указав в качестве имени файла старую дату и имя отчета.

Удаление файлов
Если получен каким либо способом доступ к базе данных (phpmyadmin, adminer, прямой коннект), то изменив значение reports.filename в таблице (например ./../files/index.html), можно удалить любой файл на хосте (удаляем отчет в котором изменили значение, а затем жмем EmptyTrash).

Активная XSS в config.json
Файл config.json был доступен для чтения кому угодно. Риски - палево АВ и еще хз кому прогружаемого файла ("DAE:"), кто угодно мог спарсить правила стилера, что тоже не очень хорошо. Ну и вдобавок там была XSS. Достаточно сохранить в любое из полей для файл-граббера:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Разумеется, вместо xss.js (который был использован в тестах) можно подгружать js-код со своего хоста.

Были еще веселенькие CSRF, но это обычно интересно только петушкам-белошляпникам (или автору кода, хехе), потому описывать их не стал.

That's all folks.
Кто-то должно быть возмутится, дескать мол столько времени уже прошло, сударь, актуальная версия азорульта - 3.3, а Вы нас старьем потчуете. Я Вам, господа, со всем, присущим мне тактом и изяществом, покорно отвечу:

- Твоей админке конец. Мне пофиг вообще.

P.S. Актуальная версия тоже была проверена на ошибки.
Пользуйтесь на здоровье.

P.S.S. Покупай новую версию, если не хочешь чтобы такое было.

P.S.S.S Прикиньте, каково быть пендосом, который пытается вникнуть в текст (RU->EN->RU):



Лично не проверял (скинули), если уто проверит отпишите )))
 
Сверху