关于docker remote api未授权访问漏洞的学习与研究
漏洞介绍:
该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker。
docker swarm是docker下的分布化应用的本地集群,在开放2375监听集群容器时,会调用这个api
url输入ip:2375/version就会列出基本信息,和docker version命令效果一样。
同样,url为ip:2375/v1.23/containers/json会列出容器信息,和docker ps -a效果一样。
漏洞利用:
通过docker client执行目标服务器容器命令。
1.列出所有镜像。
2.列出所用容器
3.进入容器两种方法:
3.1.
start 启动一个已经停止的容器
attach 连接一个已经停止的容器
当然这个容器默认entrypoint必须是/bin/bash,关于这点可以在json里看到,还有挂载,后面提权会用到,这个也可以在json文件里看到。
3.2.
新运行一个容器并将entrypoint设置为/bin/bash,挂载点设置为服务器的根目录挂载至/mnt目录下
注意:
4.服务器提权的几种方法
4.1
启动一个容器,挂载宿主机的/root/目录,之后将攻击者的ssh公钥~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之后就可以用root账户直接登录了。
本地获取ssh公钥
将公钥复制到被攻击者的/root/.ssh/authorized_keys文件中
ssh连接远程服务器
4.2
启动一个容器,挂载宿主机的/etc/目录,之后将反弹shell的脚本写入到/etc/crontab中,攻击机nc -vv -l -p Port会得到一个反弹的shell
因为没有公网IP,就不试了。
目标机上:
攻击机上:
4.3
也可以挂载var/spool/cron/目录,将反弹shell的脚本写入到/var/spool/cron/root(centos系统)或/var/spool/cron/crontabs/root(ubuntu系统)
最新文章
- Linux vmstat使用
- 傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)
- HDU 5025 Saving Tang Monk --BFS
- BUAA &; ICT 夏令营之旅
- slf4j+log4j配置
- Oracle PO - 模块一揽子采购协议小结
- Android -- getSystemService
- Swift中数组集合-b
- JS - 按钮倒计时
- [NOIP复习]第三章:动态规划
- 关于CSS的table-layout属性的用法详解
- Mybatis的缓存
- windows知识点2
- 2017-2018-2 20165231 实验三 敏捷开发与XP实践
- java实现在线浏览zip文件及文件下载
- 【问题解决:时区】连接MySQL时错误The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
- JQuery九大选择器
- jstl报错:Property 'name' not found on type java.lang.String
- 网络密钥交换协议——Diffie-Hellman
- 获取网站资源 getResourceAsStream
热门文章
- Struct结构体
- GIT版本控制系统(二)
- Tarjan+树形DP【洛谷P2515】[HAOI2010]软件安装
- [USACO08FEB]酒店Hotel 线段树 BZOJ 1593
- CF959E Mahmoud and Ehab and the xor-MST 思维
- springboot开发环境搭建
- ERROR (UnicodeEncodeError): 'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)
- windwos-sshfs
- 什么是Uboot
- PAT - 1067 试密码 (20 分)