最近碰到一种攻击方式,上网查了下。技术出现很久了,但是没怎么见过,最近突然接触到,感觉挺有意思,就整理了下这个漏洞也找了下网上的资料,整合了这个文章。

首先说下我们用到的Burp Collaborator,这个工具burp中,网上说1.6以后版本自带,我是没找到,我现在用的1.7.37,里面没有,但是插件库里面存在,我在插件库里面下载的,具体的工具触发地方在这

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

首先我们先说一下web中的带内带外攻击,首先介绍两个概念,带内与带外的区别核心在于是否使用不同的通信通道。

在一次攻击当中,只有一条通道,属于in-band(带内)攻击,我们常见的攻击类型就是这种类型,大多数的攻击都属于带内攻击,在一条通信通道内进行的攻击。

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

但是有的时候我们的攻击也可能不在一条通道上,同一次攻击下,不止一条信道,则属于out-band(带外)攻击,由我们的一端向服务器发送请求,让服务器执行我们请求中的向另外一个公网的请求

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

我们看上面图片中的两条通道,由burpsuite修改数据,数据中模拟了一条请求,该请求让服务器缓存了公网地址的数据,并以服务器为介体返回回来


常规web测试模型

简单的讲,常规的web测试模型就是我们向目标发送payloads,然后分析目标返回的数据。

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

这个模型很容易建立并且容易理解,但是这个简单的模型漏掉很多bugs,比如:

  1. “super-blind” injection。”blind SQL injection”表示当一个payload破坏了正常的sql查询然而应用程序返回的内容没有任何有帮助的错误信息。但是在有些情况下,一个成功的注入在目标应用的返回里面是完全看不到区别的,意思就是,不论返回的内容还是返回的时间,都没有任何区别。举个例子,注入asynchronous logging function就是一个典型的情况
  2. 需要存储数据的情况。比如存储型xss理论上通过先提交payloads然后观察返回值是可以发现的。但是其他的存储型bugs很难发现,比如,stored (or second-order) SQL injection,数据先是以安全的方式存储在数据库中,然后再从数据库取出再拼接sql语句。要使用常规渗透模型发现这种漏洞,我们需要爆破每一种请求的组合,要先发送第一个request请求,然后在发送第二个request请求,然后观察返回值。
  3. 我们还会漏掉一种漏洞,一次成功的攻击只发生在应用内部,对攻击者是不可见的。比如,存储型xss攻击成功要求管理员访问管理地址。
  4. 还有很多涉及到内部系统与外部资源交互的情况,比如SSRF和RFI等漏洞。

加入Burp Collaborator后的web测试模型

Burp Collaborator 给传统web测试模型添加了一个新的部分,Burp Collaborator的功能有:

  • 捕捉由Burp发出的payloads触发的目标与外部系统发生数据交互行为
  • 把Burp Collaborator与目标数据交互行为产生的返回数据传回攻击者
  • 对很多新型漏洞进行可靠的探测。利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

Burp Collaborator模块包含如下特征:

  • Burp Collaborator 服务器通常运行在公网上。
  • 它使用自己的专用域名,并且这个服务器已注册为该域名的权威DNS服务器。
  • 它提供一个DNS服务,可以响应任何对他的dns请求
  • 它提供HTTP/HTTPS 服务,使用一个有效的SSL证书
  • 将来可以添加其他的服务,比如smtp和ftp。

探测external service interaction(外部服务交互攻击)

与外部服务交互行为发生在一个payload提交到目标应用上,导致目标通过某个网络协议和一个外部的域名进行信息交互。

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

这种行为有时候被称为SSRF,我们更偏向于称之为外部服务交互(”external service interaction”)攻击,因为这种情况里面,很多行为不仅仅通过HTTP协议触发,还有SMB或者FTP等。

外部服务交互可以代表一个严重的漏洞,因为他可以允许应用服务器作为一个代理来攻击其他的服务器。这包裹公网上面的第三方系统,同一个组织下的内部系统或者监听在本地的服务。根据网络结构,这可以将内部容易被攻击的系统暴露给外部的攻击者。

Burp payload包含Brup Collaborator主域名的随机子域名列表。当一个基于HTTP的外部服务交互攻击发生的时候,Collaborator服务器将会收到指定子域名的一个DNS查询。接收到DNS查询足够确认存在问题。如果一个payload以http://…开头只导致了一个DNS交互,那么几乎可以确定目标服务器阻止了对外http请求。在这种情况下,后续的攻击可以针对其他组织服务或目标其他IP。因为这个原因,Burp分开报告触发到的DNS和HTTP交互行为。

在Burp的issue advisory中,Burp报告中显示了尝试让目标服务器进行外部服务交互行为的请求和Collaborator server交互的所有细节。

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

 

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog
利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog
利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

 

探测out-of-band resource load(带外资源加载)

Out-of-band resource load发生的情况是将payload发送到目标应用上面导致目标先尝试通过一个域名获取内容,然后将获取到的内容整合到原始的返回数据之中。

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

这种行为有时候归类为为远程文件包含。但是远程文件包含这个名词有PHP文件包含等含义。我们更偏向于称之为” out-of-band resource load”攻击,因为这种情况里面,有时候应用从外部获取内容然后将其放入应用的返回结果当中。

Out-of-band resource load攻击是一种威胁很高的问题,一个攻击者发送payload,然后从可以交互的应用中获取数据。另外,这也可以导致暴露第三方系统或者敏感的内部系统。

另外,应用程序处理out-of-band content时暴露了一些重要而且不传统的攻击面。

Burp会详细报告Collaborator server产生的的交互行为信息,并展示内容如何从Collaborator反向传输到应用带内再返回给用户。

 

利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog
利用Burp Collaborator检测带内/外攻击-JE2Se ' Blog

这种攻击方式乘载blind XSS,SSRF, asynchronous code injection这些攻击方式,比较严重~


严格控制参数的传入,对host头等以白名单的方式进行限制