dimanche 21 février 2010

Инъекция в Virtuemart

Сейчас я раскажу как провести SQL-инъекцию в VirtueMart (компонент интернет магазина для CMS Joomla!) при помощи сплоита для Metasploit Framework. Уязвимы все интернет магазины с VM версии 1.1.2 и ниже, коих в сети большинство, ибо версия 1.1.3 вышла совсем недавно.
Сразу оговорюсь - это моя первая статья о хакинге, не судите строго. Эта статья расчитана на новичков и не на что не претендует. И еще - я не волшебник, я только учусь (с)

Итак начнем.

Инструментарий.

1. OS: Я использовал Windows XP sp3, и рассказывать буду применительно к ней, хотя читатель сможет без труда адаптировать все нижесказаное применительно к своей системе.

2. Metasloit Framework 3.2

3. VirtueMart <= 1.1.2 Remote SQL Injection Exploit - код сплоита можно найти на milw0rm, воспользовавшись поиском. Выбираем жертву. Если у вас нету на примете жертвы то достаточно просто ее найти используя яндекc (ну или любой другой поисковик - я не настаиваю). Поищем такую строку - "option com_virtuemart". На выходе имеем кучку магазинов, уязвимые придется находить методом тыка.

К оружию.

1. Для начала ставим Metasploit, руководств по этому действу предостаточно в том числе и на данном форуме. Посему этот шаг я описывать не буду.

2. Берем код сплоита и сохраняем его в файл VirtueMart-expl.rb. Впрочем файл можно назвать как угодно, важно расширение .rb.

3. Идем в папку со сплоитами в домашней папке msf32. У меня это

C:\Documents and Settings\Snow\Application Data\msf32\modules\exploits


И сохраняем наш сплоит VirtueMart-expl.rb в cоответствующую папку

unix\webapp

Однако можно сохранить куда угодно в рамках папки exploits, роли не играет. Также замечу - несмотря на то что мы сохранили в папку unix. сплоиту побарабану на ОС установленую на сервере.

4. Итак наш сплоит установлен, запускаем Metasploit Framework. Я предпочитаю WEB интерфейс, однако вы можете использовать и другие интерфейсы (GUI или консоль).
Так или иначе открываем консоль (ссылка Console в веб интерфейсе, либо ctrl+A в GUI)

5. Итак мы в консоли.

=[ msf v3.2-release
+ -- --=[ 320 exploits - 217 payloads
+ -- --=[ 20 encoders - 6 nops
=[ 99 aux

msf >

Смотрим какие сплоиты у нас установлены

msf> show exploits

И ищем нашего подопытного

unix/webapp/VirtueMart-expl VirtueMart <= 1.1.2 Sql Injection



Если не нашли внимательно повторяем предыдущие шаги. Итак нашли далее подгружаем его

msf> use unix/webapp/VirtueMart-expl

Смотрим список его настроек

msf auxiliary(VirtueMart-expl) > info

Должны получить такой вывод



Для невладеющих басурманским поясню все опции
ALLA - бинарное значение, если true то идет выборка всех пользователей группы - администраторы
ALLM - бинарное значение, если true то идет выборка всех пользователей группы - менеджеры
ALLSA - бинарное значение, если true то идет выборка всех пользователей группы - суперадминистраторы. По умолчанию выбираются только они. От себя добавлю что залить шелл вы сможете только с аккаунтом суперадминистратора.
PREFIX - Префикс таблиц в базе данных, по умолчанию jos_ однако особо неуемные дезигнеры его меняют. Если версия мускула >= 5, то при неверном префиксе сплоит попытается вычислить верный.
Proxies - можно задать парамерты прокси цепи дабы не сильно палится, но это уже другая сказка.
RHOST - обязательный параметр, определяет адрес цели. Вводится в виде domain.zone
RPORT - порт веб сервера, мне не доводилось встречать интернет магазин на нестандартном порту
SSL - бинарное значение - использeтся ли на сервере SSL
TARGETID - помимо выборки админов суперадминов и менеджеров можно делать выборку по смертным пользователям. Сюда пишем ID юзера.
URI - путь до Joomla, если она в корне то не меняем.
VHOST - если в RHOST указан домен а не ip то тут можно не заполнять.

Итак в самом обычном случае когда мы знаем о жертве только адрес, его и ставим не меняя ничего другого.

msf auxiliary(VirtueMart-expl) > set RHOST domain.zone

Таким же образом можно менять и другие параметры, например

msf auxiliary(VirtueMart-expl) > set ALLA true

когда мы закончили конфигурировать наш сплоит еще раз проверяем параметры

msf auxiliary(VirtueMart-expl) > show options

Если все корректно то запускаем

msf auxiliary(VirtueMart-expl) > exploit

Далее возможно несколько вариантов развития событий, рассмотрим по порядку

Pre-test 1 failed - VirtueMart not detected

По указаному адресу виртуемарта не обнаружено, помимо криво указаных параметров может быть что глючит из за включенного на сайте ЧПУ (mod-rewrite) у меня такое бывало.

Pre-test 2 failed - traget patched?

Дырка залатана

Далееи если ошибок нету, будет произведена проверка префикса, Если все верно то пойдет вычисление имени юзера а далее вычисление хэша, если нет то сплоит попытается вычислить верный префикс из INFORMATION_SCHEMA, далее по тому же сценарию.
По успешному завершению работы будут выведеы выбраные из базы имена пользователей и хэши к ним. Надо отметить что в зависимости от версии Joomla тип хэша может отличатся. Так в версиях 1.0.х это обыкновенный md5, а в версиях 1.5.х это md5:salt. salt обычно состоит из 16-ти символов.

6. Итак мы получили имена позьзователей и хэши их паролей. Что дальше спросите вы? А дальше надо их крякать, Я использую PasswordPro который можно найти на этом форуме. Также можно использовать онлайн сервисы коих очень много, однако они помогают в случае с простыми паролями.
Также можно юзать Rainbow таблицы но вопервых это уже другая сказка ну а во вторых ваш покорный слуга сам в них не бум бум.

7. Если нам удалось получить доступ к аккаунту суперадминистратора то по адресу /administrator логинимся в админку и смотрим наличиствует ли компонент joomlaXplorer. Если да то спокойно себе льем шелл, если нет то ставим этот компонент. Также используя компонент JoomlaPack можно силть базу и весь сайт.

Ну вот и все.

И как это принято, статья написана в качестве ознакомления и с целью показать уязвимость VM версии 1.1.2 (К слову в 1.1.3 дыра залатана).

Дополнение:
Залить шелл в Joomla 1.0 без палива и с правами обычного администратора можно так:
Идем в Установка-> Компонент. Длее выбираем файл нашего шелла и жмем загрузить, жумла выкидывает ошибку но файл заливает. Он лежит в /media

Автор не несет ответственности за использование материалов даной статьи.

(c) $now специально для stopxaker.ru

2 commentaires:

  1. а можете объяснить почему у данного сплоита не включается функция ALLA? задаю true после show options все ровно стоит no

    RépondreSupprimer
  2. Попробуй покопаться на stopxaker.ru это оттуда статья. Автор $now, он вроде там нормально на вопросы отвечал.

    RépondreSupprimer