网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

漏洞公告团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > 漏洞公告 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

CVE-2017-11882缓冲区漏洞实验复现:可执行非授权命令、执行恶意shellcode等高危攻击操作

文章来源:重庆网络安全 发布时间:2020-01-21 10:49:40 围观次数:
分享到:

摘要:缓冲区溢出是一个非常普遍的漏洞,广泛存在于操作系统和各种应用程序软件中。 非授权命令、执行恶意shellcode等高危攻击操作。CVE-2017-11882是令我印象深刻并发现它更有趣的一种。

  缓冲区溢出是一个非常普遍的漏洞,广泛存在于操作系统和各种应用程序软件中。非授权命令、执行恶意shellcode等高危攻击操作。CVE-2017-11882是令我印象深刻并发现它更有趣的一种。 攻击者只需将准备好的word文档发送到目标,然后打开该文档即可完成攻击,这既简单又暴力。


CVE-2017-11882的使用过程简要概述如下。


  1.在Word中打开一个包含攻击代码的Doc文件


  2.Word启动公式编辑器组件EQNEDT32.EXE


  3.EQNEDT32.EXE在处理OLE对象的数据流时溢出,跳转.text:00430C12调用WinExec以执行命令或shellcode

  为了模拟和重现上述过程,编写并构造2个小程序和1个txt文件。 操作步骤如下:


  Word应用程序软件-> OF-GUI.exe EQNEDT32.EXE ==> OF-Demo.exe Doc文档==> txt文档


  1.使用OF-GUI.exe打开txt文件


  2.OF-GUI.exe启动OF-Demo.exe,加载并处理txt文件


  3. OF-Demo.exe溢出后,执行txt中的命令

  实验结果如下:

blob.png

步骤


  1.使用IDA打开EQNEDT32.EXE,找到名为WinExec的函数sub_430C00。

blob.png

 2.按F5转换为C代码

blob.png

  3.在Visual Studio中创建一个控制台程序项目,复制上面的sub_430C00函数,对其进行微调,并删除不相关的代码


 UINT sub_430C00(const char* lpCmdLine)

    {

        UINT result;

        char Buffer[256];


        result = WinExec(lpCmdLine, 1);

        if (result < 32) //  1 = SW_NORMAL

        {

            FatalAppExit(0, TEXT("WinExec Failure"));

        }

        return result;

    }

  4.编写一个典型的缓冲区溢出功能。 使用不安全的复制功能strcpy定义32字节的局部变量。 如果传递的字符串超过32个字节,则会发生溢出


  void sub_ovdemo(char *buffer)

    {

        char stack_buf[32];//传入超过32字节的字符串,就会发生溢出


        strcpy(stack_buf, buffer);         //  Disable Security Check (/GS-)

        DWORD bufsize = strlen(buffer);

        if (bufsize > 32)

        {

            printf("stack is overflow: %c", stack_buf[1]);

        }

        else

        {

            printf("%s", buffer);

        }

    }

  5.编译项目后,在strcpy行上设置一个断点并开始调试

blob.png

  如上图所示,输入sub_ovdemo函数代码空间后,EBP = 0X18FF04,


  红色箭头表示ebp 8是用于调用sub_ovdemo的参数缓冲区


  ebp 4 = 0×00401096(友好提醒:低位在顶部,高位在底部)是函数退出时要跳转的下一条指令的地址


  绿色箭头所指的32个字节是局部变量char stack_buf的存储区域[32]

  到目前为止,到目前为止非常清楚,只要构造一个32 4 4 = 40字节的缓冲区,您就可以溢出以覆盖ebp 4并跳至您要到达的位置。


  6.在VS中或使用IDA从上述sub_430C00函数检查对WinExec的调用,您可以获得要跳转到的地址:004010B3

blob.png

 因此,用004010B3溢出覆盖上述ebp 4(00401096),然后可以使用WinExec执行有效负载命令。


  7.构造一个超过40个字节的Txt。 使用十六进制编辑器,并将溢出地址0x004010B3写入txt。

blob.png

8.只要上述txt文件的内容传递给sub_ovdemo函数,您就可以溢出并执行命令。

本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:CVE-2017-11882 缓冲区漏洞 非授权命令 恶意shellcode

上一篇:微软win7正式宣布停服,双星0day漏洞利用来袭,360盾甲拦截并提供补丁下载
下一篇:SOP(同源策略)绕过漏洞:Keybase的CORS策略错误配置,可以操纵浏览器缓存获取用户敏感数据信息

热门资讯

鼠标向下滚动