docker remote api未授权访问漏洞(端口:2375)
漏洞介紹:
該未授權(quán)訪問漏洞是因?yàn)閐ocker remote api可以執(zhí)行docker命令,從官方文檔可以看出,該接口是目的是取代docker 命令界面,通過url操作docker。
docker swarm是docker下的分布化應(yīng)用的本地集群,在開放2375監(jiān)聽集群容器時,會調(diào)用這個api
url輸入ip:2375/version就會列出基本信息,和docker version命令效果一樣。
同樣,url為ip:2375/v1.23/containers/json會列出容器信息,和docker ps -a效果一樣。
漏洞利用:
通過docker client執(zhí)行目標(biāo)服務(wù)器容器命令。
1.列出所有鏡像。
2.列出所用容器
3.進(jìn)入容器兩種方法:
3.1.
start 啟動一個已經(jīng)停止的容器
attach 連接一個已經(jīng)停止的容器
當(dāng)然這個容器默認(rèn)entrypoint必須是/bin/bash,關(guān)于這點(diǎn)可以在json里看到,還有掛載,后面提權(quán)會用到,這個也可以在json文件里看到。
3.2.
新運(yùn)行一個容器并將entrypoint設(shè)置為/bin/bash,掛載點(diǎn)設(shè)置為服務(wù)器的根目錄掛載至/mnt目錄下
注意:
docker run 只在第一次運(yùn)行時使用,將鏡像放到容器中,以后再次啟動這個容器時,只需要使用命令docker start 即可。
docker run相當(dāng)于執(zhí)行了兩步操作:將鏡像放入容器中(docker create),然后將容器啟動,使之變成運(yùn)行時容器(docker start)。
wooyun上lijiejie是因?yàn)閐ocker client版本不一致調(diào)用api去create重構(gòu)一個容器,并在attach、start后捕獲到輸出
4.服務(wù)器提權(quán)的幾種方法
4.1
啟動一個容器,掛載宿主機(jī)的/root/目錄,之后將攻擊者的ssh公鑰~/.ssh/id_rsa.pub的內(nèi)容寫到入宿主機(jī)的/root/.ssh/authorized_keys文件中,之后就可以用root賬戶直接登錄了。
本地獲取ssh公鑰
將公鑰復(fù)制到被攻擊者的/root/.ssh/authorized_keys文件中
ssh連接遠(yuǎn)程服務(wù)器
4.2
啟動一個容器,掛載宿主機(jī)的/etc/目錄,之后將反彈shell的腳本寫入到/etc/crontab中,攻擊機(jī)nc -vv -l -p Port會得到一個反彈的shell
因?yàn)闆]有公網(wǎng)IP,就不試了。
目標(biāo)機(jī)上:
攻擊機(jī)上:
4.3
也可以掛載var/spool/cron/目錄,將反彈shell的腳本寫入到/var/spool/cron/root(centos系統(tǒng))或/var/spool/cron/crontabs/root(ubuntu系統(tǒng))
總結(jié)
以上是生活随笔為你收集整理的docker remote api未授权访问漏洞(端口:2375)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 枚举是如何实现的?(枚举的线程安全性及序
- 下一篇: 用户和组的管理训练