人的一生除去睡眠只有一万多天~ 人与人的不同在于:你是真的活了一万多天,还是仅仅生活了一天,却重复了一万多次!
01
前言
清晰的记得19年10月左右,有个职业技能赛打进了线下,线下决赛模式就是综合靶场渗透。当时还信心满满,可惜考点竟然有个docker逃逸,当时没有了解过docke逃逸,最终没有取得一个好的成绩。
终于,,,最近几天无意中找到了那套靶机环境,特意重新做了下,发现期间也是有一些坑,所以特意写下此篇文章分享给大家~
02
环境搭建
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/
名称 |
服务器 |
系统 |
网卡 |
VM1 |
Web服务器 |
ubuntu x64 |
NAT: 192.168.213.136 主机: 192.168.138.135 |
VM2 |
域成员 |
windows 7 |
主机: 192.168.138.136 |
VM3 |
域控服务器 |
windows server 2008 R2 x64
|
主机: 192.168.138.137 |
03
外网打点
扫描端口也不难发现,一共有三处web服务,分别对应8001-3,因主要讲的是docker逃逸,所以外网打点不详细介绍,这里以st2-045为主。其他两个
则分别是phpmyadmin getshell 和tomcat 漏洞利用。
直接利用st2类似的工具拿shell
这里发现通过ls -al / 发现了.dockerenv文件,通过这一信息基本上就可以确定当前环境是在docker环境下
通过fdisk -l命令可以发现看到磁盘的挂载情况,通过这一特性可以发现此docker环境是开启了特权模式,所以可以通过这一模式来获取物理机的shell。
特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
这里获取物理机的shell是通过ssh写密钥的方式。
先在kali生成密钥
再把公钥idlab.pub直接写进.ssh/authorized_keys里面
这里为了后面传文件方便,用了ssh连接的工具,如果用命令的话也可以,ssh -i 即可。
(ps: 除此意外使用cve-2019-5736也可以实现docker逃逸,就是稍微麻烦了点~
exp地址:https://github.com/Frichetten/CVE-2019-5736-PoC)
04
内网渗透
使用msf自带的ms17模块可以发现无法获取shell,会一直提示fail,这里我曾经在真实环境上也遇见过,当时记得是内网有台防火墙给拦截了~ 这里很明显是没有防火墙设备的,具体原因没去研究过,但是经过好几次的尝试应该就是代理这一块协议的问题。因为我直接连接这台主机是可以打出来的。
但是我们依然可以绕过去,通过永恒之蓝的双倍脉冲模块
(Eternalblue_doublepulsar)来获取会话
https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit
(通过这种方式也可以绕过一些waf)
后面则是通过mimikatz抓取用户的密码,whoami /all获取用户的sid,再利用ms14-068生成票据即可获取域管理员的权限。再上传mimikatz即可获取域管理员的密码,这些操作几乎和上节内容相似,就不演示~ 至此内网渗透完毕
end
本文始发于微信公众号(IDLab):内网渗透|docker逃逸至域控
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论