[PHP-инклудинг и allow_url_include] [Проблема с WUBI и Ubuntu 10.04] [Как был взломан antichat.ru] [AntiDDoS в LightHTTPd] [Sleep() в слепых SQLi] [Уязвимости разных движков] [Уязвимости Joomla] [Уязвимости Invision Power Board] [Уязвимости GuppY CMS] [Уязвимости 1024cms] [Уязвимости IceBB] [Уязвимости Zeus Botnet] [Web-разведка] [Сканер уязвимости nginx] [Анализ текстов] [SSI Web-shell] | Уязвимости JoomlaЭти уязвимости были когда-то мною опубликованы на античатеБесполезная бага в Joomla или "логическая sql-инъекция"
Взглянем на скрипт \joomla\administrator\components\com_users\views\users\view.html.php. Там есть такой участок: PHP код:
Выше определена переменная $orderby: PHP код:
Причём переменные $filter_order и $filter_order_Dir определяются пользователем. В админке во всех секциях есть hidden-поля в формах с этими переменными. Что ж, подставим левые значения, например, asd и fgh соответственно: http://localhost/joomla/administrator/index.php?option=com_content&filter_order=asd&filter_order_Dir=fgh Получаем следующий ответ: Код:
Как мы видим, наши значения попали в sql-запрос. Но они всё же фильтруются - большая часть спецзнаков не пропускается, разрешены, например, точки, поскольку они нужны в нормальном запросе. Казалось бы, из такой "sql-инъекции" ничего кроме префикса таблиц не выжать. Однако, просмотрим админку и увидим страницу управления пользователями: http://localhost/joomla/administrator/index.php?option=com_users Вышеупомянутые параметры в этой секции используются для сортировки пользователей (подставляются в ORDER BY). И тут внезапно: а что если отсортировать их по паролю? Ну: http://localhost/joomla/administrator/index.php?option=com_users&filter_order=a.password Теперь можно создать пользователя, сделать ему какой-то пароль, затем отсортировать на этой странице, и мы увидим, где по алфавиту находится хеш админа - выше или ниже хеша нашего пользователя. Далее можно организовать бинарный поиск и вытащить весь хеш админа. Конец. P.S. Разумеется, эта бага в Joomla совершенно ничего не даёт, поскольку она в админке, а xsrf там нет, а самое главное -- нет хорошего способа генерировать md5-хеши наперёд заданного вида. Я написал про неё лишь для того, чтобы показать саму возможность подобных атак. Такая ситуация может возникнуть, например, в форумном движке, где список пользователей может быть доступен каждому. Мораль: переменные надо не только фильтровать на спецсимволы, но и проверять введённые данные на логическую совместимость. P.P.S. В vbulletin, например, скрипт memberlist.php ограничивает параметры для сортировки: PHP код:
Joomla XSS
XSS присутствует в компоненте com_admin. Уязвимая строчка в \joomla\administrator\components\com_admin\admin.admin.html.php: PHP код:
Заходим на http://localhost/joomla/administrator/index.php?option=com_admin&task=help. Там есть поле для поиска. Текст из него не htmlspecialchar-ится, но какая-то странная фильтрация есть. Почему-то, если набрать, скажем, так: "><img src="blabla....., этот тег обрезается, то есть написать новый тег у меня не получилось.//striptags() ? Что ж, приходится обходиться свойствами тега <input>. XSS в post-параметре админки, поэтому она не работала бы без XSRF. Собственно, сплойт: Код:
В чём суть: я сделал так, чтобы поле поиска стало длинным, так что, если админ проведёт мышкой по экрану, сработает xss. Вероятность этого весьма велика. Joomla XSS
XSS наподобии той, что описана выше, но удобнее: Код:
Никаких CSRF и post не нужно |
| © BECHED |