Содержание статьи
"Хочу в Амстердам!" — с этой мыслью я залез в Гугл в поисках очередной
жертвы. Среди первых ссылок по запросу "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, где
содержалась инфа вида
2008-11-18T10:25:57.000000Z
c581920ba2dad34f3e6841ac061d958c
2007-11-16T11:06:53.860515Z
935
alex
category.php
file
2008-11-18T10:25:57.000000Z
7ce2e23ac9bc560edc2e79073fb630db
2007-01-04T16:03:07.477725Z
138
alex
find.php
file
2009-05-01T12:58:14.000000Z
beea2f728667240c14795d3c508a5144
2009-05-01T09:08:40.782967Z
1307
alex
recent.php
file
Собираем урожай
Итак, скачав к себе на винт исходники всех PHP-файлов проекта из категории ".svn/text-base/",
я начал кропотливо парсить их на предмет уязвимостей. После очень долгих и
нудных раскопок я понял, что azarius.net — действительно очень старый и крупный
проек т, так как в исходниках не было даже намека на банальные инклуды,
скуль-инъекции и иже с ними. Искать что-то извращенное и глубоко спрятанное было
лень, поэтому я стал думать, как быть.
Как оказалось, решение было крайне простым и лежало практически на
поверхности :). На этот раз мне удалось продвинуться дальше во взломе с помощью
чтения конфига форума phpBB по адресу azarius.net/forum/.svn/text-base/common.php.svn-base:
<?php
$dbms = 'mysql4';
$dbhost = 'database.azarius.net';
$dbname = 'azaforum';
$dbuser = 'web_azarius';
$dbpasswd = 'azariuskaki734';
$table_prefix = 'phpbb_';
define('PHPBB_INSTALLED', true);
?>
Из конфига видно, что мускул-сервер шопа располагается по адресу
database.azarius.net и вполне может быть виден из веба.
На 80 HTTP-порту сервера висела следующая надпись:
[an error occurred while processing this directive]
You don't have permission to access the requested directory.
There is either no index document or the directory is read-protected.
[an error occurred while processing this directive]
Phpmyadmin'ом здесь даже и не пахло, так что оставалось попробовать удаленно
подконнектиться к 3306 порту мускула на данном сервере.
Заряжаем бонг
Залив на свой (почти свой 🙂 хост утилиту MySQL RST/GHC Manager, я попробовал
залогиниться на серваке БД Азариуса с помощью данных из конфига phpBB. Как ни
странно, у меня это получилось (пользуясь случаем, спешу напомнить — разрешай
коннект к своему мускул-серверу только с локалхоста!).
Далее нужно было немного осмотреться в базе, чем я немедленно и занялся.
Итак, под текущим юзером были доступны несколько БД:
information_schema, Affiliate, aff, azabase, azaforum, cms_system,
cmsbase, enquete, payments, syslog, syslogaza, test, wordpress
В базе payments была только одна табличка — "log", где хранились мало чем
полезные логи, так что далее я полез прямиком в главную БД — azabase.
Немного цифр: на шопе зарегистрировано 239545 растаманов и психонавтов,
которые сделали 291187 ордеров. База юзеров имела следующие поля:
UserID, UserStatusID, FirstName, LastName, Email, EmailVerified,
Company, CompanyDescription, KVKNumber, BTWNumber, InvoiceAllowed, Remark,
Password, ForumID, ForumAdmin, LastLogin, LangID, CurrencyID, _Buyer_Address,
_Buyer_Host, _Buyer_Agent, _Klantcode, _Tussenvoegsel, _Korting, _PasswordNew,
_EmailSend, _session_id, _Website, modified, Newsletter, Nickname
Слив данную базу и бережно сохранив ее на винт для дальнейшей работы, я стал
размышлять над тем, как залить шелл в уже полюбившийся мне онлайн-притон
интересных личностей :).
Курим
Первым делом я проверил привилегии на работу с файлами у текущего юзера
мускул:
SELECT load_file('/etc/passwd')
Здесь все оказалось не так просто, как с SVN и коннектом к базе — файловых
привилегий не было вовсе. С заливкой шелла могли появиться проблемы, если бы
админы шопа создали разных юзеров для разных БД, но, как ты уже понял, у меня
был доступ ко всем базам сразу, так что я потихоньку стал колдовать над своим
любимым WordPress :).
Итак, зарегавшись по адресу http://www.azarius.net/blog/wp-login.php?action=register
и получив на свое мыло пароль от аккаунта, я полез в БД под названием wordpress.
Наверняка ты знаешь, что привилегии пользователей блога хранятся в табличке
wp_usermeta в ключе под названием wp_capabilities. По дефолту каждый юзер имеет
привилегии подписчика, то есть, фактически, не имеет никаких привилегий:
a:1:{s:10:"subscriber";b:1;}
Недолго думая, я сделал своего тестового юзера администратором, заменив
данное значение на следующее:
a:1:{s:13:"administrator";b:1;}
Став админом, я зашел в админку блога по адресу http://azarius.net/blog/wp-admin
прямиком в раздел редактирования плагинов. И на этот раз мне снова повезло —
плагины были доступны для редактирования, так что мне оставалось только записать
свой шелл в плагин "Hello dolly" и активировать файл. Теперь мой шелл
располагался по адресу http://azarius.net/blog/?azarius и с удовольствием
открывал мне дальнейшие возможности для изучения шопа :).
Кушаем
Теперь меня заинтересовало следующее:
- Исходники магазина;
- Админка магазина;
- Сайты-соседи.
С первым пунктом я успешно справился, слив PHP-исходники из директории /var/www/html/azarius/public/,
но, как ни странно, админки там не было. Долго лазая по файлам и директориям
шопа, я так и не нашел админку, так что пришлось довольствоваться полным
доступом к БД и исходниками Азариуса. Далее я выполнил команду "locate
" и зашел в директорию /etc/apache2/sharedconfig/sites-enabled/,
httpd.conf
где хранились конфиги всех сайтов текущего сервера.
Вывести полный список сайтов помогла командаcat ./*|grep ServerName
affiliate.herbaldistribution.com
blog.azarius.net
conscious.nl
consciousdreams.nl
database.azarius.net
dropshipping.consciouswholesale.com
middleware.entheogenics.com
pimpyourbicycle.com
piwik.azarius.net
redir.vaposhop.com
secure.azarius.net
stats.azarius.net
webman.azarius.net
webman.vaposhop.com
www.azarius.at
www.azarius.be
www.azarius.es
www.azarius.fr
www.azarius.net
www.azarius.nl
redir.azarius.nl
www.azarius.pt
consciouswholesale.com
www.crazy-t-shirts.com
www.cultofarcha.com
www.entheogenics.com
greenlabelseeds.com
www.mushxl.nl
www.shavita.net
www.shroomshaker.net
smartshop.nl
www.travellersgarden.com
vaposhop.com
www.xtenzion.nl
Как видишь, поддоменов у azarius.net оказалось гораздо больше, чем показал
Гугл :). Так что, если захочешь повторить хак, это будет тебе пищей для
размышления.
Все остальные сайты так или иначе все равно были связаны с травой, грибами и
прочими интересными штуками, так что я быстренько забрал все исходники, все
базы, явки и пароли и просто ушел с сервера (ну, не совсем просто, а извлекать
коммерческий успех из этого добра :).
Отходняк
Даже если у истоков твоего коммерческого онлайн-проекта стоят грамотные
кодеры и специалисты по безопасности, то все равно советую опасаться банального
человеческого фактора. В данном взломе к заливке шелла и сливу базы
пользователей привели несколько случайностей, которые, словно кусочки паззла,
сложились в адскую мозаику с нарисованным на ней листком марихуаны. Так что,
админ, бди!
INFO
Все описанное в статье является плодом больного воображения автора. Любые
совпадения с существующими сайтами случайны. Ни редакция, ни автор не несут
ответственности за любой возможный вред, причиненный материалами этой
статьи.