CVE-2014-6332调试分析

本文详细分析了CVE-2014-6332漏洞,这是一个在IE浏览器中的VBScript漏洞。漏洞原理在于oleaut32!SafeArrayRedim函数中的边界检查错误,允许攻击者进行越界读写。通过精心构造的利用链,攻击者可以控制safemode标志,增强漏洞利用的通用性和稳定性。调试环境为Win7+IE8,文中介绍了利用步骤和漏洞利用代码的细节,展示了如何通过内存布局和类型混淆实现漏洞利用。

    这个漏洞是一个IE浏览器里,vbs方面的漏洞,yuange首先放出了这个漏洞的完整dve的利用,接下来各个安全团队都出了比较好的分析报告。这个漏洞本身的原理算是比较传统,但是利用技术非常巧妙。置位safemode后,shellcode相当于用脚本语言直接编写,通用性稳定性极强。闲暇之余,也忍不住调试一下。

调试环境Win7+IE8,参考了瀚海源的精简版yuange POC,因为里面有加入了通过vbs在调试器里打日志的方法,就直接用了,感谢分享。


漏洞原理:

先列出相关的数据结构:

typedef struct FARSTRUCT tagSAFEARRAY {
   unsigned short cDims;       // Count of dimensions in this array.
   unsigned short fFeatures;   // Flags used by the SafeArray
                        // routines documented below.
#if defined(WIN32)

   unsigned long cbElements;   // Size of an element of the array.
                        // Does not include size of
                        // pointed-to data.
   unsigned long cLocks;      // Number of times the array has been 
                        // locked without corresponding unlock.
#else
   unsigned short cbElements;
   unsigned short cLocks;
   unsigned long handle;      // Used on Macintosh only.
#endif
   void HUGEP* pvData;             // Pointer to the data.
   SAFEARRAYBOUND rgsabound[1];      // One bound for each dimension.
} SAFEARRAY;
typedef struct tagSAFEARRAYBOUND {
  ULONG cElements;
  LONG  lLbound;
} SAFEARRAYBOUND, *LPSAFEARRAYBOUND;

漏洞出在oleaut32!SafeArrayRedim函数中,当

普通文本型问题,直接回答如下: 从您的操作记录可以看出: ```bash docker start 12shellshockcve-2014-6271-web-1 ``` 虽然命令返回了容器名,表示**启动指令已发出**,但紧接着执行 `docker ps -a | grep "shellshock"` 显示容器状态为: > **Exited (0) 9 seconds ago** 这说明:**容器启动后立即退出了**。 --- ### 🔍 问题原因分析: 该镜像 `vulhub/bash:4.3.0-with-httpd` 是基于 Vulhub 的 Shellshock 漏洞环境,通常需要 **正确的端口映射和后台运行配置**。如果容器内主进程(Apache httpd)因配置错误、缺少依赖或前台进程结束而退出,容器就会随之停止。 常见原因包括: 1. **未正确映射端口或权限问题** 2. **Apache 配置错误导致无法持续运行** 3. **Dockerfile 中 CMD 启动方式不兼容当前 Docker 环境** 4. **宿主机资源限制或文件系统损坏(较少见)** --- ### ✅ 解决方案建议: #### ✅ 1. 查看容器日志,定位退出原因 ```bash docker logs e06c3b5f321a ``` 或 ```bash docker logs 12shellshockcve-2014-6271-web-1 ``` 这将输出容器最后一次运行时的日志,查看是否有以下信息: - Apache 启动失败 - 缺少 CGI 脚本 - 权限被拒绝 - `httpd` 进程崩溃等 --- #### ✅ 2. 尝试手动前台运行以调试 ```bash docker run -it --rm -p 80:80 vulhub/bash:4.3.0-with-httpd /bin/bash ``` 进入后手动启动服务并观察输出: ```bash apache2ctl -DFOREGROUND ``` 如果有报错(如端口占用、配置文件错误),即可现场排查。 --- #### ✅ 3. 使用 Vulhub 正确启动方式(推荐) 如果您是通过 [Vulhub](https://github.com/vulhub/vulhub) 搭建的环境,请确保在对应 CVE 目录下使用 `docker-compose` 启动: ```bash cd /path/to/vulhub/bash/shellshock/ docker-compose up -d ``` 这是最可靠的方式,因为 `docker-compose.yml` 文件中已配置好端口映射、服务依赖和启动命令。 --- ### 🛠️ 补充建议: - 如果你是从 Vulhub 克隆的项目,请确认当前目录是否完整包含 `docker-compose.yml` - 不要仅依赖 `docker start` 命令,尤其是当原始环境设计为 `docker-compose` 管理时 - 可尝试删除并重建容器: ```bash docker rm 12shellshockcve-2014-6271-web-1 # 然后重新使用 docker-compose 或带端口映射的 run 命令创建 ``` --- ### ✅ 成功运行后的预期状态: 运行成功后,执行 `docker ps` 应看到类似: ```text CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES ... vulhub/bash:4.3.0... "apache2ctl -DFORE..." Up XX seconds 0.0.0.0:80->80/tcp 12shellshock... ``` 此时访问 `http://your-ip/cgi-bin/hello.sh` 应可触发漏洞测试。 --- 如您能提供 `docker logs` 输出内容,我可以进一步帮助判断具体错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值