中间件-Docker

Docker容器是使用沙盒机制,是单独的系统,理论上是很安全的,通过利用某种手段,再结合执行POC或EXP,就可以返回一个宿主机的高权限Shell,并拿到宿主机的root权限,可以直接操作宿主机文件。 它从容器中逃了出来,因此我们形象的称为Docker逃逸漏洞。

判断拿下的shell是否是docker容器:

判断是否存在.dockerenv文件

命令:ls -alh /.dockerenv

查询是否有系统进程的cgroup信息:

命令:cat /proc/1/cgroup

演示:拿下的是宿主机,执行报错,系统进程中没有docker等关键字

演示:拿下的是docker容器,有正常数据回显,系统进程中有docker等关键字

如果拿下的shell是docker容器的,就要进行docker逃逸来获取宿主机shell,因为在docker容器执行命令影响不到宿主机。虽然docker容器是搭建在宿主机上的,但是docker容器就像是一个独立的虚拟系统一样,在这个独立虚拟系统中执行命令无法影响到另一个真实系统(宿主机)

举个栗子:在docker容器执行一个在home目录下创建一个1.txt文件的命令,查看home目录成功生成1.txt,但是在宿主机的home目录下并不会生成一个1.txt文件

案例:中间件-WebSphere

WebSphere Application Server 加速交付新应用程序和服务,它可以通过快速交付创新的应用程序来帮助企业提供丰富的用户体验从基于开放标准的丰 富的编程模型中进行选择,以便更好地协调项目需求与编程模型功能和开发人员技能。

WebSphere端口

端口:9080—web(http)应用访问端口、9443—web(https)应用访问端口、9060—管理后台访问端口、9043—管理控制台安全端口、8880—SOAP连接器端口等等。

漏洞探测在8880端口,后台是9060端口,解析是9080端口

案例演示:CVE-2015-7450 反序列化

fofa语法:"websphere" && server=="WebSphere Application Server/7.0" && port="8880"

漏洞环境使用docker自行搭建,vulhub和vulfocus都没有此中间件漏洞

拉取镜像:docker pull iscrosales/websphere7

启动镜像:docker run -d -p 9060:9060 -p 9043:9043 -p 8880:8880 -p 9080:9080 iscrosales/websphere7

停止镜像:docker stop $(docker ps -aq)

启动漏洞环境

直接使用脚本拿捏:

https://github.com/Coalfire-Research/java-deserialization-exploits/tree/main/WebSphere

使用python2运行脚本

命令:python websphere_rce.py 目标ip:8880 "命令" --proto 指定请求方式(http/https(默认))

ping dns平台,根据解析记录判断命令是否被执行

平台产生dns解析记录,命令成功执行

案例演示:弱口令 上传功能拿Shell

产生:在6.x至7.0版本,后台登陆只需要输入admin作为用户标识,无需密码,即可登陆后台。

fofa语法:"websphere" && server=="WebSphere Application Server/7.0" && port="9060"

访问漏洞环境的/ibm/console/目录即可进入WebSphere管理控制台登录接口

利用弱口令登录,常用弱口令:

websphere/websphere system/ manager

输入admin成功登录

来到控制台,如下图依次点击——然后点击install来到文件上传功能


使用哥斯拉生成jsp后门文件

哥斯拉:

https://github.com/BeichenDream/Godzilla

制作war压缩文件:将生成的jsp压缩为zip,再将zip重命名为war


将制作的war文件上传,点击Next


一直点击Next,直到下图设置访问路径,我设置为shell,点击Next


点击Finish,等待加载完毕,点击Save


选择上传的文件,点击Start


成功开启shell.war文件访问

访问文件需要到特定的访问端口:9080—web(http)应用访问端口、9443—web(https)应用访问端口

我的是http协议,所以使用9080端口访问文件

后门地址:

http://目标ip:9080/shell/shell.jsp 

使用哥斯拉连接后门

对添加的目标右键——进入


进入命令执行终端,成功获取shell


案例演示:中间件-Jetty-敏感信息泄露

Elipse Jetty是一个开源的servlet容器,它为基于Java的Web容器提供运行环境。

CVE-2021-28164

信息泄露路径:http://目标ip:端口/%2e/WEB-INF/web.xml

CVE-2021-28169

信息泄露路径:http://目标ip:端口/static?/WEB-INF/web.xml

CVE-2021-34429

信息泄露路径:http://目标ip:端口/%u002e/WEB-INF/web.xml

使用vulfocus靶场复现CVE-2021-34429

开启漏洞环境


直接访问信息泄露路径,成功获取敏感信息

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。