docker 逃逸突破边界

免责声明

本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。

作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。

在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。

本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。

作者保留对本博客文章的所有权利,并有权在未经通知的情况下进行修改或删除。

正文部分

0x00 环境简介与环境搭建

0x00-1 环境简介 

序号

服务器

角色

网络位置

系统处理器架构

IPv4 地址

1

Kali GNU/Linux Rolling

渗透机器

边缘

x86_64

8.27.11.7

2

Ubuntu

目标服务器

边缘

?

?

3

Windows Server 2008

目标服务器

内网

?

?

4

Windows 7

目标服务器

内网

?

?

0x00-2 环境搭建

0x01 探索发现阶段

0x01-1 主机发现

0x01-2 端口扫描

0x01-3 服务探测

0x01-4 识别 2001 端口的 Web 应用框架及版本

0x01-5 识别 2002 端口的 Web 应用框架及版本

0x01-6 识别 2003 端口的 Web 应用框架及版本

0x01-7 探索发现阶段总结

在探索发现阶段中,通过 nmap 工具识别到 Web 服务器开启了 4 个端口,其中 22 端口为 SSH 服务的默认端口,而 2001端口、2002端口和 2003 端口分别对应了三个不同的 HTTP 服务,通过识别 2001、2002、2003 端口的 Web 应用框架,得出三个 Web 服务的框架分别为 Struts2 框架、Tomcat 框架、phpMyAdmin 框架,2003端口对应的 Web 服务使用的 MySQL 版本为 5.5.62,由于 2001端口、2002 端口和 2003 端口比较特殊,猜测这三个 Web 服务部署在 Docker 容器中

0x02 入侵和感染阶段

0x02-1 使用 Struts2 漏洞检测工具对 Web 应用进行漏洞测试

0x02-1.1 检测漏洞

 

0x02-1.2 利用漏洞上传 webshell

 

0x02-1.3 使用冰蝎连接 webshell

0x02-2 使用 Tomcat 框架漏洞对 Web 应用进行漏洞测试

0x02-2.1 修改数据包

Tomcat 存在任意上传漏洞,使用 BurpSuite 任意拦截一个数据包进行测试。将请求方式修改为 PUT,内容类型修改为表单默认的提交数据格式,内容为冰蝎 jsp 类型的 webshell,当返回包状态码为 201 时,代表上传成功,接下来访问 shell.jsp,确保 webshell 成功上传

0x02-2.2 访问 webshell 文件

成功访问到 shell.jsp,页面显示空白代表文件存在,下面使用冰蝎连接 webshell

0x02-2.3 使用冰蝎连接 webshell

0x02-3 使用 phpMyAdmin 应用漏洞对 Web 应用进行漏洞测试

0x02-3.1 利用框架历史漏洞

版本为 4.8.1 的 phpMyAdmin 应用框架存在任意文件包含漏洞,利用这个漏洞查看系统中的敏感文件

0x02-3.2 查询当前目录路径

在 phpMyAdmin 中进行查询时,会将查询语句保存至一个临时文件,临时文件名为 sess_ 加上 Cookie 值,Cookie 值获取的方式有很多,这里使用最简单的方式进行获取

0x02-3.3 利用文件包含漏洞包含临时文件

发现当前目录为 /var/www/html,可以考虑将 webshell 写入这个目录

0x02-3.4 构造创建 webshell 文件的 PHP 代码

select <?php echo `echo "<?php eval(base64_decode(冰蝎马base64加密内容));?>" > /var/www/html/shell.php`;?>

再次包含临时文件使 PHP 代码执行,从而生成 webshell 到 /var/www/html 目录下

0x02-3.5 使用冰蝎连接 webshell

0x02-4 识别 Web 应用服务器环境

为了验证之前的猜想,接下来在三个 Web 服务器中查询 docker 容器的特征文件 —— .dockerenv 文件,经过查询后发现三台 Web 服务器都处于 docker 容器中,因此需要从容器中逃逸到物理主机,为后续的内网渗透做准备,接下来需要使用 cdk_linux_amd64 工具检测 docker 容器是否存在可逃逸的条件,所以先将工具上传至目标服务器。

正常情况下需要先对 docker 的处理器架构信息进行收集,根据处理器架构类型上传对应的工具。由于 docker 容器和宿主机公用同一个内核,即 docker 容器的处理器架构和宿主机的大多完全相同,当然也存在借助其他工具实现不同处理器架构运行在宿主机上的情况

工具下载地址:https://github.com/cdk-team/CDK/releases/tag/v1.5.4

0x03 攻击和利用阶段

0x03-1 逃逸 Struts2 应用容器

经检测,并未发现 Struts2 应用容器存在可逃逸条件

0x03-2 逃逸 Tomcat 应用容器

0x03-2.1 检测容器漏洞

发现 Tomcat 应用容器存在可逃逸条件,由于获取到此容器的权限为 root 权限,所以尝试将物理机的根目录挂载至容器的临时目录

0x03-2.2 尝试将宿主机根目录挂载至容器临时目录

可以发现成功将宿主机根目录挂载到了容器的临时目录,并且路径为 /tmp/5ijds,接下来就需要和宿主机之间建立连接

0x03-2.3 生成 SSH 密钥用于 SSH 连接

生成 SSH 密钥,公钥和私钥都保存至 /root/.ssh/ 目录下

将公钥写入宿主机,私钥拷贝至一台 Windows 服务器

使用 MobaXterm 远程连接工具进行 SSH 连接

成功连接至目标服务器宿主机

0x03-3 逃逸 phpMyAdmin 应用容器

经检测,并未发现 phpMyAdmin 应用容器存在可逃逸条件

0x03-4 配置内网代理

0x03-4.1 查看 Web 服务器是否存在内网环境

0x03-4.2 生成木马上线 Web 服务器

查看宿主机处理器架构

生成对应的木马程序

将木马上传给目标服务器

配置监听器

0x03-4.3 添加路由

0x03-4.4 开启 SOCKS 代理服务

msf6 exploit(multi/handler) > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > options
msf6 auxiliary(server/socks_proxy) > run

0x04 探索感知阶段

0x04-1 查看宿主机 arp 表

0x04-2 扫描内网主机端口及服务

将扫描结果导出为 Excel 表格,发现主机 192.168.183.130 开放了 389 端口,一般只有域控服务器才会开启这个端口,并且发现内网两台机器都开启了 445 端口的 SMB 服务,可以尝试利用 MS17-010 漏洞对其进行检测

0x05 传播阶段

0x05-1 对域控服务器 445 端口的 SMB 服务进行漏洞检测

检测到漏洞存在,但利用失败,猜测可能是由于 MSF 代理不稳定导致,尝试切换代理工具

0x05-1.1 在 Web 服务器上开启 SOCKS 代理服务

0x05-1.2 再次尝试利用域控服务器 SMB 服务的 MS17-010 漏洞

依旧利用失败,尝试利用内网中另一台主机的 MS17-010 漏洞

0x05-1.3 尝试利用域成员主机 SMB 服务的 MS17-010 漏洞

域成员主机成功上线至 MSF,并且接收到的会话用户权限为系统权限

0x05-2 收集域内信息

0x05-2.1 查询域名

0x05-2.2 查询域内主机名

0x05-2.3 查询域控主机名

0x05-2.4 查询完整域名

0x05-2.5 确定域控 IPv4 地址

0x05-2.6 查询域内用户

由于当前权限为系统权限,因此无法获取到域内用户的信息,此时需要将权限降低至域用户权限

0x05-2.6-i 查询域用户进程

0x05-2.6-ii 降低权限至域用户

0x05-2.6-ii 查询域内用户

0x05-3 获取域用户 SID

域用户 demo/douser 用户的 SID 为 S-1-5-21-979886063-1111900045-1414766810-1107,那么就可以得到域 SID 为 S-1-5-21-979886063-1111900045-1414766810

0x05-4 收集域成员机器系统信息以及补丁信息

发现域成员主机没有打 MS14-068 漏洞的补丁,漏洞编号为 KB3011780,因此尝试利用 MS14-068 漏洞将权限提升至域管理员权限

0x05-5 获取域成员主机凭据信息

回到 meterpreter 执行 rev2self 恢复至系统权限

获取当前主机域用户密码,为后面利用 MS14-068 漏洞做铺垫

由于靶机中在桌面放置了 mimikatz.exe 和 MS14-068 漏洞利用工具,所以可以直接使用,若是在实战中,就需要自己上传工具进行渗透,当然也可以将靶机中的工具保存下来

由于当前权限为系统权限,因此不需要进行提权,直接使用命令 mimikatz.exe "sekurlsa::longonpasswords" exit 获取系统中用户密码

0x05-6 利用 MS14-068 漏洞伪造票据

0x05-6.1 ms14-068.exe 使用方法

0x05-6.2 构造 Payload 生成票据

0x05-6.3 使用 mimikatz 清理主机所有凭证

0x05-6.4 查看当前机器凭证信息

0x05-6.5 注入票据至内存中

0x05-6.6 查看当前机器凭证信息

0x05-7 尝试与域控服务器建立连接

0x05-7.1 与域控服务器建立网络共享资源连接

0x05-7.2 列出该计算机 C 盘根目录下的文件和文件夹信息

0x05-8 夺取域控服务器控制权

0x05-8.1 关闭域控服务器防火墙

0x05-8.1-i 创建关闭防火墙服务

0x05-8.1-ii 执行关闭防火墙任务

这里应该是 sc \\win-ens2vr5tr3n start unablefirewall

0x05-8.2 上线域控服务器至 MSF

0x05-8.2-i 生成正向木马

0x05-8.2-ii 将木马上传至域成员机器

0x05-8.2-iii 将木马拷贝至域控服务器

0x05-8.2-iv 创建执行木马任务

0x05-8.2-v 执行木马程序

0x05-8.2-vi 配置监听器上线域控服务器

0x06 持久化和恢复阶段

0x06-1 降低权限至域管理员权限

0x06-2 生成黄金票据

0x06-2.1 抓取 NTLM Hash

0x06-2.2 获取黄金票据

0x06-2.2-i 返回域成员机器清空票据

0x06-2.2-ii 生成黄金票据

0x06-2.2-iii 导入黄金票据

0x06-2.2-iv 查看域成员票据

0x06-3 创建定时任务维持权限

0x06-3.1 编写 Shell 脚本

0x06-3.2 创建定时任务

0x06-3.3 测试脚本是否定时执行

0x06-4 恢复阶段

恢复主要涉及对 webshell 以及上传的各类文件的删除等操作。通过删除 webshell、删除各类上传病毒以及清除系统日志,达成清理攻击痕迹的目的

0x06-4.1 清理 Windows 系统的攻击痕迹

0x06-4.2 清理 Linux 系统的攻击痕迹

这里没有全部删除,还有 docker 逃逸时用到的工具,php 文件类型的 webshell 等痕迹

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16865.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cv2.Sobel

1. Sobel 算子简介 Sobel 算子是一种 边缘检测算子&#xff0c;通过对图像做梯度计算&#xff0c;可以突出边缘。 Sobel X 方向卷积核&#xff1a; 用于计算 水平方向&#xff08;x 方向&#xff09; 的梯度。 2. 输入图像示例 假设我们有一个 55 的灰度图像&#xff0c;像素…

网络编程 day3

思维导图 以select函数模型为例 思维导图2 对应 epoll模型 应使用的函数 题目 使用epoll函数实现 两个客户端 通过服务器 实现聊天 思路 在原先代码基础上 实现 服务器 发向 客户端 使用客户端在服务器上的 套接字描述符 实现 客户端 接收 服务器…

Java 同步锁性能的最佳实践:从理论到实践的完整指南

目录 一、同步锁性能分析 &#xff08;一&#xff09;性能验证说明 1. 使用同步锁的代码示例 2. 不使用同步锁的代码示例 3. 结果与讨论 &#xff08;二&#xff09;案例初步优化分析说明 1. 使用AtomicInteger原子类尝试优化分析 2. 对AtomicInteger原子类进一步优化 …

Mac之JDK安装

Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统&#xff0c;打开中断命令&#xff0c;输入: uname -a Compressed Archive 是压缩文档&#xff0c;下载的是一个 .tar.gz 压缩包 D…

[MySQL]5-MySQL扩展(分片)

随着数据量和用户量增加&#xff0c;MySQL会有读写负载限制。以下是部分解决方案 目录 功能拆分 使用读池拓展读&#xff08;较复杂&#xff09; 排队机制 &#x1f31f;分片拓展写 按业务或职责划分节点或集群 大数据集切分 分片键的选择 多个分片键 跨分片查询 资料…

芯盾时代数据安全产品体系,筑牢数据安全防线

芯盾时代数据安全治理&#xff08;DSG&#xff09;框架&#xff0c;以国家法律法规、行业监管标准、行业最佳实践为依据&#xff0c;从数据安全战略出发&#xff0c;以数据分类分级为支撑&#xff0c;构数据安全管理体系、数据安全技术体系、数据安全运营体系与数据安全监督评价…

腾讯大数据基于 StarRocks 的向量检索探索

作者&#xff1a;赵裕隆&#xff0c;腾讯大数据研发工程师 本文整理自腾讯大数据工程师在 StarRocks 年度峰会上的分享&#xff0c;深入探讨了向量检索技术的原理与应用。此功能已应用到腾讯内部多个场景&#xff0c;引入 StarRocks 后&#xff0c;业务不仅不需要维护多套数据库…

STM32 RTC 实时时钟说明

目录 背景 RTC(实时时钟)和后备寄存器 32.768HZ 如何产生1S定时 RTC配置程序 第一次上电RTC配置 第1步、启用备用寄存器外设时钟和PWR外设时钟 第2步、使能RTC和备份寄存器访问 第3步、备份寄存器初始化 第4步、开启LSE 第5步、等待LSE启动后稳定状态 第6步、配置LSE为…

android studio在gradle的build时kaptDebugKotlin这个task需要执行很久

只修改了一点java代码&#xff0c;kaptDebugKotlin这个任务却执行了3~5分钟。。。

机器学习(李宏毅)——self-Attention

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记&#xff0c;感谢台湾大学李宏毅教授的课程&#xff0c;respect&#xff01;&#xff01;&#xff01; 二、大纲 何为self-Attention&#xff1f;原理剖析self-Attention VS CNN、RNN、GNN 三、何为self-Attenti…

【Java使用Geotools对shp文件进行读取,读取完成之后shp、dbf、shx文件总是被占用,无法删除,如何解决呢?】

Java使用Geotools对shp文件进行读取&#xff0c;读取完成之后shp、dbf、shx文件总是被占用&#xff0c;无法删除&#xff0c;如何解决呢&#xff1f; 问题描述原因分析与问题解决1.直接原因2.解决方案 问题描述 Java使用Geotools对shp文件进行读取&#xff0c;读取完成之后.sh…

lvs的DR模式

基于Linux的负载均衡集群软件 LVS 全称为Linux Virtual Server,是一款开源的四层(传输层)负载均衡软件 Nginx 支持四层和七层(应用层)负载均衡 HAProxy 和Nginx一样,也可同时支持四层和七层(应用层)负载均衡 基于Linux的高可用集群软件 Keepalived Keepalived是Linux…

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

java项目之基于SSM会议管理系统的设计与实现源码(ssm+mysql)

项目简介 基于SSM会议管理系统的设计与实现实现了以下功能&#xff1a; 基于SSM会议管理系统的设计与实现的主要使用者分为&#xff1a;管理员登录后修改个人的密码。用户管理中&#xff0c;对公司内的用户进行管理&#xff0c;包括会议管理员和员工&#xff0c;管理部门信息…

Linux第106步_Linux内核RTC驱动实验

1、了解rtc_device结构体 1)、打开“include/linux/rtc.h” rtc_class_ops是需要用户根据所使用的RTC设备编写的,其结构体如下: struct rtc_class_ops { int (*ioctl)(struct device *, unsigned int, unsigned long);/*函数指针ioctl*/ int (*read_time)(struct device *,…

java项目之基于推荐算法的图书购物网站源码(ssm+mybatis+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的基于推荐算法的图书购物网站项目。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于推荐算法的…

【Antv G2 5.x】饼图添加点击事件,获取当前坐标数据

// 监听 tooltip:show 事件this.chart.on(tooltip:show, (event) => {this.currentShowTooltipName = event.data.items[0].name})// 监听绘图区plot的点击事件this.chart.on(interval:click, ev => {this.$emit(chartClick, this.currentShowTooltipName);})// 监听绘图…

称呼计算器:智能科技,简化您的计算生活

一款手机应用程序&#xff0c;安卓设备上使用。这款计算器应用以其简洁的界面、实用的功能和良好的用户体验而受到用户的喜爱。 计算器的主要特点包括&#xff1a; 基本计算功能&#xff1a;支持加、减、乘、除等基本运算。 科学计算器模式&#xff1a;提供更高级的数学运算功…

STM32 裸机 C编程 vs micropython编程 vs linux python

以led点亮为例。 STM32 裸机 C编程需要设置时钟&#xff0c;管脚。 static void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};// GPIO端口时钟使能__HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA5为推挽输出模式GPIO_InitStruct.Pin GPIO_PIN_5;GPIO_InitStruct.M…

Spring boot(maven) - Mybatis 超级入门版

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…