免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 优看PDF在线阅读控件远程代码执行漏洞(2)

优看PDF在线阅读控件远程代码执行漏洞(2)

时间:2012-04-23 21:41来源:未知 整理:寂涯网络 点击:


运行。现在,我们修改一下代码,首先利用“long SetURL(LPCTSTR szFilePath, LPCTSTR
szPassword);”外部接口打开网络上的某个PDF文件,然后再调用“long SearchStr(LPCTSTR
strKey, long bCaseSensitive, long bAllPages)”外部接口查找一个过长字符串,看一看
会有什么结果。具体测试部分代码为:
 function OpenURL()
{
        var a=Array(600);
      var n=YCanPDF.SetURL("http://127.0.0.1/YCanPDF PDFView OCX 3.4.0.0
接口文档.pdf","");// 打开网络的PDF 文件
        YCanPDF.SearchStr(a,0,0);
}
 这一次,使用浏览器打开修改后的测试网页文件,点击“打开网络”按钮,我们发现
了新的结果,如图5所示。

终于看到了一个出错的画面,图5 中的“0x2c2c2c2c”这个内存地址显然来自于我们
测试代码中的变量a。从出错提示,我们推断变量a覆盖了程序一个关键的内存地址,造成了
程序发生读取内存地址失败的错误。要想知道更加细节的原因,我们可以使用OllyDBG程序
来进行调试,如图6所示。
用OllyDBG程序调试
从图 6 中,我们看到在出错的时候,ECX寄存器被变量a所覆盖,程序运行到“mov
edx,dword ptr[ecx]”这条指令时,由于无法读取ECX寄存器所指向的内存地址,从而发生
了读取错误。但是,此刻,我们发现在出错指令的下方,第三行的位置,有一条指令“call
eax”,如果我们可以控制EAX寄存器,我们就可以执行任意代码了。而在这条指令之上,我
们可以发现EAX寄存器的值取决于EDX寄存器,而EDX寄存器的值就来自于前面被我们覆盖的
ECX寄存器!至此,我们终于明白了,EAX寄存器的值来自于[[ECX]],也就是EAX寄存器的值
间接的来自于ECX寄存器所指向的内存地址。我们可以这样构造攻击代码,首先通过
heapspray覆盖一片内存,如0x0c0c0c0c,这片内存地址又被0x0c0c0c0c这样的数值所填充,
在ECX寄存器被 0x0c0c0c0c这个内存地址所覆盖后,两次mov指令最终还是指向了
0x0c0c0c0c这个内存地址,只要将ShellCode放置在这个内存地址块的最后,当“call eax”
指令被执行时,我们的ShellCode最终也会被顺利执行。还有一种比较难的方法,就是找到
一个内存地址能够间接间接地指向一条call ebx或者jmp ebx指令,注意这里是两个间接,
因为出错的时候,EBX寄存器指向的正好就是变量a所在的栈空间地址。这个内存地址的寻找
需要大量的时间,我暂时没有找到,有兴趣的读者可以自行寻找测试一下,也算是一个挑战
吧!
现在,漏洞被我们发现了,exploit的代码构造思路也有了,相信写出一个攻击代码
是非常简单的事情了。不过需要说明的是,这种攻击代码在IE6浏览器下应该会顺利执行,
IE7、8 的DEP会阻止代码执行,需要绕过DEP才行,所以,我想我们可以借助Java来实现最
完美的攻击代码,具体细节可以参考王清那本《0day安全:软件漏洞分析技术(第二版)》,
这里就不再赘述了。
 
最后,本文旨在讨论安全技术,请读者不要使用本文技术进行任何违法行为,一切后
果作者和杂志概不负责。同时,希望西安优看电子科技有限公司能够技术修补漏洞,为广大
客户提供更加可靠优秀的PDF阅读控件产品。

本页地址 http://www.jybase.net/xitonganquan/20120425861.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com