Burp Collaborator
本节包含有关什么是Burp Collaborator,Burp Collaborator的工作方式,由Burp Collaborator处理的数据的安全性以及使用Burp Collaborator的选项的信息。
什么是Burp Collaborator?
Burp Collaborator是Burp Suite用来帮助发现许多漏洞的网络服务。 例如:
-
可以使用有效载荷检测某些基于注入的漏洞,这些有效载荷会在成功进行注入时触发与外部系统的交互。 例如,不能使某些盲目的SQL注入漏洞引起应用程序响应的内容或时间的任何差异,但是可以使用有效载荷来检测它们,这些有效载荷在注入SQL查询时会引起外部交互。
-
通过将针对那些服务的有效负载提交给目标应用程序,并分析与该服务的协作实例进行的最终交互的详细信息,可以检测到某些特定于服务的漏洞。 例如,可以通过这种方式检测邮件头注入。
-
当可以诱使应用程序从外部系统检索内容并以某种方式对其进行处理时,会出现一些漏洞。 例如,应用程序可能会检索提供的URL的内容,并将其包含在自己的响应中。
当可以诱使应用程序从外部系统检索内容并以某种方式对其进行处理时,会出现一些漏洞。 例如,应用程序可能会检索提供的URL的内容,并将其包含在自己的响应中。
Burp扫描仪和手动Burp Collaborator客户端使用Burp Collaborator,并且Burp Extender API也可以使用Burp Collaborator。
Burp Collaborator的工作方式
Burp Collaborator作为单个服务器运行,该服务器提供各种网络服务的自定义实现:
-
它使用自己的专用域名,并且该服务器已注册为该域名的权威DNS服务器。
-
它提供DNS服务,以其自己的IP地址回答在其注册域名(或子域)上进行的任何查找。
-
它提供HTTP / HTTPS服务,并为其域名使用有效的、由CA签名的通配符TLS证书。
-
它提供SMTP / SMTPS服务。
以下是一些可以通过Burp Collaborator检测到的问题的示例。
检测外部服务交互
可以检测到典型的外部服务交互问题,如下所示:
-
Burp将包含URL的有效负载发送到应用程序,该URL使用Collaborator域的随机子域,例如:
param=http://f294gchg2la...r9gf.burpcollaborator.net/
-
由于其编程的行为(有意或无故),应用程序获取URL的内容。 为此,它将首先在随机子域上执行DNS查找,然后执行HTTP请求。
-
Collaborator服务器接收DNS查找和HTTP请求。 两种交互都包含Burp放入Collaborator子域中的随机数据。
-
Burp轮询Collaborator服务器,并询问:“您是否收到任何有关我的有效载荷的交互?”,然后Collaborator返回交互详细信息。
-
Burp向Burp用户报告外部服务交互,包括Collaborator服务器捕获的完整交互消息。
检测带外资源负载
当可以诱使应用程序从任意外部源加载内容并将其包括在自己的响应中时,就会发生带外资源加载。 Burp Suite可以通过促使Collaborator服务器在其对外部交互的响应中返回特定数据,并分析该应用程序对相同数据的带内响应来检测此问题:
检测盲目的跨站点脚本
Burp可以提交基于注入的有效负载,这些负载旨在在注入成功时触发外部交互,从而能够检测到完全盲目的注入漏洞。 以下示例在成功注入SQL语句后使用特定于Oracle的API触发交互:
检测盲目的跨站点脚本
Collaborator服务器可以通知Burp延迟交互,这些交互是在将相关带内有效载荷提交给目标之后异步发生的。 这样就可以检测各种存储的漏洞,例如二阶SQL注入和盲目的XSS。在下面的示例中,Burp Suite提交了一个存储的XSS有效载荷,该有效载荷旨在触发Collaborator交互(如果曾经呈现给用户)。 稍后,管理员用户查看有效负载,然后他们的浏览器执行交互。 稍后,Burp Suite会轮询Collaborator服务器,接收交互的详细信息,并报告存储的XSS漏洞:
Collaborator数据的安全性
用户可能对Collaborator服务器处理的数据的安全性有合理的担心,并且该功能在设计时特别强调了此数据的安全性。
Collaborator服务器存储什么数据?
在大多数情况下,发现漏洞时,Collaborator服务器将不会收到足够的信息来识别漏洞。 它看不到从Burp发送到目标应用程序的HTTP请求。 在典型情况下,它将记录从某处接收到交互,包括Burp生成的随机标识符。 有时,Collaborator服务器会收到一些特定于应用程序的数据:例如,通过用户注册表格生成的电子邮件的内容。
如何控制Collaborator数据的检索?
设计了Collaborator功能,以便只有生成给定有效负载的Burp实例才能检索该有效负载导致的任何交互的详细信息。 该要求的实现如下:
-
每个Burp实例都会生成一个安全的随机秘密。
-
Burp发送到目标应用程序的每个与Collaborator相关的有效负载均包含一个随机标识符,该随机标识符是从机密的单向哈希(加密校验和)派生的。
-
与Collaborator进行的任何最终交互都将在传输的数据中(例如,在DNS查找的子域或HTTP请求的Host标头中)包含此标识符。
-
机密仅由Burp发送到Collaborator服务器,以轮询所产生的交互的详细信息。 除非在Burp的选项中覆盖,否则使用HTTPS完成此操作。
-
当Collaborator服务器收到轮询请求时,它将执行提交的机密的单向哈希,并检索包含从该哈希派生的标识符的所有已记录交互的详细信息。
-
因此,只有生成该机密的Burp实例才能够检索由其有效负载触发的任何交互的详细信息。
除此机制外,在Collaborator服务器中还实施了以下预防措施,以防止未经授权访问其数据:
-
交互的详细信息仅存储在临时过程存储器中。
-
不会以任何持久形式记录任何类型的数据:例如,数据库或日志文件。
-
交互的详细信息通常在发生后不久由Burp检索,然后由服务器丢弃。
-
固定时间间隔后,Burp尚未检索的旧交互的详细信息将被丢弃。
-
没有用于查看交互详细信息的管理功能,只有已经描述的检索机制。
-
Collaborator服务器在设计上不会接收任何可用于标识任何单独的Burp用户的数据(例如帐户名或许可证密钥)。
使用Burp Collaborator的选项
Burp用户可以在以下三个选项中选择使用Burp Collaborator:
-
公共Collaborator服务器 - 这是PortSwigger提供的服务器,在使用它的所有Burp用户之间共享。 如果公共协作服务器遭受任何服务中断或降级,那么Burp中与Collaborator相关的功能的功效可能会受到损害。 因此,PortSwigger不保证此服务器的可用性或性能。
-
私人Collaborator服务器 - 拥有Burp Suite Professional许可证的任何人都可以运行自己的Collaborator服务器实例。 为了完全有效地做到这一点,您将需要主机服务器,专用域名和有效的CA签名的通配符TLS证书。没有合适域名或TLS证书的专用Collaborator服务器将能够支持Burp中的某些(但不是全部)与Collaborator相关的功能。 您可以在网络层保护您的私有Collaborator实例:您可以配置不同的网络接口以接收交互并回答轮询请求,并且可以根据目标和测试人员的位置来应用所需的任何IP限制。 使用私有协作服务器的选项可能会吸引渗透测试公司和内部安全团队。 在没有Internet访问的专用封闭网络上进行测试时,它还可以使各个测试人员部署Collaborator实例。 有关更多详细信息,请参阅有关部署专用Collaborator服务器的文档。
-
没有Collaborator服务器 - 您可以将Burp配置为不使用任何Collaborator服务器。 使用此选项,Burp中没有与Collaborator相关的功能。
注意: Burp Collaborator的功能引起了需要用户仔细考虑的问题。 用户应确保他们充分了解Burp Collaborator的功能和替代使用方法,并考虑了使用对自己和组织的影响。
在Burp Suite Professional中,您可以在Burp Collaborator服务器选项中配置这些设置。