0x00:使用原因
我们在做渗透测试的时候,经常会遇到这种情况,测试跨站可能有些功能插入恶意脚本后无法立即触发,例如提交反馈表单,需要等管理员打开查看提交信息时才会触发,或者是盲注跨站,盲打 XSS 这种。再例如 SSRF,如果程序不进行回显任何信息,而只提示你输入的是否合法,那么也无法直接判断程序存在 SSRF 漏洞,我们可以叫盲 SSRF。再例如 XXE,引入外部文件时,如果程序也不返回任何信息和引用文件的内容,而只提示输入的是否有误,那么也无法直接判断程序是否存在 XXE 漏洞,我们也可以叫盲 XXE。总之,程序不进行详细的回显信息,而只是返回对或者错时,我们都可以叫它盲。
解决办法是,我们需要一个外部的独立的服务器,可以通过域名 url 进行访问。然后在测试盲跨站插入恶意脚本时带上这个服务器的地址,在测试盲 SSRF 时读取的文件 url 写我们这个服务器的地址,在测试盲 XXE 时引入的外部实体地址也写我们这个服务器的地址。如果存在上述的这些问题,那么目标服务器就会去访问我们自己的服务器,我们自己服务器要做的就是记录别人访问自己的信息,记录其发送内容相应内容等,因为目标服务器不会给前台返回任何信息,而在和我们外部服务器交互时,我们外部服务器会记录其交互的过程和内容,从而有利于我们判断漏洞的存在。
明白原理后,Burp 给我们提供了这个外部服务器,叫 Collaborator,对于 Collaborator 服务器,我们有两种使用方式,第一个是使用 burp 官方提供的,第二个是自己搭建。本文章记录 burp 官方提供的使用方法,至于自己搭建如果大家感兴趣可以在网上搜索相关的教程内容。
0x01:Collaborator 介绍
对于 Collaborator 服务器,我们这里简单介绍下它应该拥有哪些功能。首先它要能捕捉到 burp 发出的 payload 触发目标与外部系统发生数据的交互行为,其次它自己与目标产生交互的数据要能够返回到 burp,也就是返回给攻击者,也就是我们。
对于 Collaborator 服务器,我们这里再简单的介绍下它应该有哪些服务,首先它是公网 ip,其次它要有自己的域名,并且这个服务器要注册为该域名的权威 dns 服务器。然后这个服务器要提供 dns 服务,并且可以相应任何对它的 dns 请求。最后它需要提供 http 和 https 服务,且需要使用一个有效的 ssl 证书。对于为什么要提供 dns 和 http、https 服务很好理解,payload 如果可以执行或者可以允许远程加载,那么就需要用 dns 来解析我们的域名,而产生的交互则需要 http 和 https 来提供。
0x02:Collaborator 原理
我们知道了使用原因和其具有的功能后,我们再来简单看下它的原理,首先,我们先来看下平时的测试过程,如下图。