Курить вредно: Взлом голландского онлайн-смартшопа«Хочу в Амстердам!» — с этой мыслью я залез в Гугл в поисках очередной жертвы. Среди первых ссылок по запросу «growshop» оказался магазин azarius.net с характерными зелеными листиками известного растения на главной странице. Немного почитав страницу «About Azarius», я узнал, что данный сайт — один из первых онлайн-магазинов по продаже психоактивных веществ в интернете (работает с 1999 года) с огромной базой покупателей и товаров. Поэтому ты не удивишься тому, что на одном поверхностном просмотре страниц я не стал останавливаться :). Сажаем семенаИтак, первым делом я начал изучать структуру шопа, что, замечу, было делом не из приятных, так как использовался апачевский mod_ rewrite, и все ссылки имели вид вроде «http://azarius.net/smartshop/psychedelics/». Поверхностный осмотр мне ничего не дал, гугл не показал никаких интересных поддоменов и файлов, а из пабликдвижков были обнаружены последний WordPress (http://azarius.net/blog/), пропатченный phpBB версии 2.0.22 (http://azarius.net/forum/docs/CHANGELOG.html) и не очень-то уязвимый Piwik версии 0.5.5 (http://piwik.azarius.net). Единственным доступным вариантом на тот момент оказался Piwik с его XSS в форме логина. Заморачиваться с XSS мне не очень хотелось, так как это долго и ненадежно, так что пришлось размышлять дальше над способом проникновения в растаманский рай. Поливаем и удобряемПрошло несколько дней. Совершенно случайно мне на глаза попался старый пост с Хабра об уязвимости множества крупных порталов, связанной с тем, что их .svn-исходники хранились в открытом доступе прямо на сервере. Вкратце поясню суть бага. Во-первых, SVN — это система контроля версий, которая является продвинутым средством для организации совместной работы десятков разработчиков. Во-вторых, SVN совершенно открыто хранит в каждой директории проекта свои метафайлы, которые сложены в директорию «.svn». В данной директории в файле «entries» находится список всех файлов и директорий, которые расположены в той же самой папке, что и «.svn». Здесь же находится и информация о расположении репозитория, размере файлов, дате их модификации и именах юзеров, работающих над проектом. Суммируя вышеназванные факты, можно подвести нехитрый итог: если проект разрабатывался с помощью SVN, то, зайдя по адресу вроде site.com/.svn/entries, ты сможешь увидеть файловую структуру корня сайта со всей перечисленной дополнительной информацией. В моем случае таким адресом оказался azarius.net/.svn/entries, где содержалась инфа вида
Собираем урожайИтак, скачав к себе на винт исходники всех PHP-файлов проекта из категории «.svn/text-base/», я начал кропотливо парсить их на предмет уязвимостей. После очень долгих и нудных раскопок я понял, что azarius.net — действительно очень старый и крупный проек т, так как в исходниках не было даже намека на банальные инклуды, скуль-инъекции и иже с ними. Искать что-то извращенное и глубоко спрятанное было лень, поэтому я стал думать, как быть. Как оказалось, решение было крайне простым и лежало практически на поверхности :). На этот раз мне удалось продвинуться дальше во взломе с помощью чтения конфига форума phpBB по адресу azarius.net/forum/.svn/text-base/common.php.svn-base:
Из конфига видно, что мускул-сервер шопа располагается по адресу database.azarius.net и вполне может быть виден из веба. На 80 HTTP-порту сервера висела следующая надпись:
Phpmyadmin'ом здесь даже и не пахло, так что оставалось попробовать удаленно подконнектиться к 3306 порту мускула на данном сервере. Заряжаем бонгЗалив на свой (почти свой :) хост утилиту MySQL RST/GHC Manager, я попробовал залогиниться на серваке БД Азариуса с помощью данных из конфига phpBB. Как ни странно, у меня это получилось (пользуясь случаем, спешу напомнить — разрешай коннект к своему мускул-серверу только с локалхоста!). Далее нужно было немного осмотреться в базе, чем я немедленно и занялся. Итак, под текущим юзером были доступны несколько БД:
В базе payments была только одна табличка — «log», где хранились мало чем полезные логи, так что далее я полез прямиком в главную БД — azabase. Немного цифр: на шопе зарегистрировано 239545 растаманов и психонавтов, которые сделали 291187 ордеров. База юзеров имела следующие поля:
Слив данную базу и бережно сохранив ее на винт для дальнейшей работы, я стал размышлять над тем, как залить шелл в уже полюбившийся мне онлайн-притон интересных личностей :). КуримПервым делом я проверил привилегии на работу с файлами у текущего юзера мускул:
Здесь все оказалось не так просто, как с SVN и коннектом к базе — файловых привилегий не было вовсе. С заливкой шелла могли появиться проблемы, если бы админы шопа создали разных юзеров для разных БД, но, как ты уже понял, у меня был доступ ко всем базам сразу, так что я потихоньку стал колдовать над своим любимым WordPress :). Итак, зарегавшись по адресу http://www.azarius.net/blog/wp-login. php?action=register и получив на свое мыло пароль от аккаунта, я полез в БД под названием wordpress. Наверняка ты знаешь, что привилегии пользователей блога хранятся в табличке wp_usermeta в ключе под названием wp_capabilities. По дефолту каждый юзер имеет привилегии подписчика, то есть, фактически, не имеет никаких привилегий:
Недолго думая, я сделал своего тестового юзера администратором, заменив данное значение на следующее:
Став админом, я зашел в админку блога по адресу http://azarius.net/blog/wp-admin прямиком в раздел редактирования плагинов. И на этот раз мне снова повезло — плагины были доступны для редактирования, так что мне оставалось только записать свой шелл в плагин «Hello dolly» и активировать файл. Теперь мой шелл располагался по адресу http://azarius.net/blog/?azarius и с удовольствием открывал мне дальнейшие возможности для изучения шопа :). КушаемТеперь меня заинтересовало следующее:
С первым пунктом я успешно справился, слив PHP-исходники из директории /var/www/html/azarius/public/, но, как ни странно, админки там не было. Долго лазая по файлам и директориям шопа, я так и не нашел админку, так что пришлось довольствоваться полным доступом к БД и исходниками Азариуса. Далее я выполнил команду «locate httpd.conf» и зашел в директорию /etc/apache2/sharedconfig/sites-enabled/, где хранились конфиги всех сайтов текущего сервера. Вывести полный список сайтов помогла команда «cat ./*|grep ServerName»:
Как видишь, поддоменов у azarius.net оказалось гораздо больше, чем показал Гугл :). Так что, если захочешь повторить хак, это будет тебе пищей для размышления. Все остальные сайты так или иначе все равно были связаны с травой, грибами и прочими интересными штуками, так что я быстренько забрал все исходники, все базы, явки и пароли и просто ушел с сервера (ну, не совсем просто, а извлекать коммерческий успех из этого добра :). ОтходнякДаже если у истоков твоего коммерческого онлайн-проекта стоят грамотные кодеры и специалисты по безопасности, то все равно советую опасаться банального человеческого фактора. В данном взломе к заливке шелла и сливу базы пользователей привели несколько случайностей, которые, словно кусочки паззла, сложились в адскую мозаику с нарисованным на ней листком марихуаны. Так что, админ, бди! Links
|