Burp Infiltrator
Burp Infiltrator是用于检测目标web应用程序的工具,以便于使用Burp Scanner进行测试。 Burp Infiltrator修改目标应用程序,以便Burp可以检测到其输入被传递到服务器端可能不安全的API的情况。
Burp Infiltrator当前支持以下列语言编写的应用程序:
-
Java, Groovy, Scala, or other JVM languages (JRE 版本 1.4 - 1.8)
-
C#, VB, 或其他 .NET语言 (.NET 版本 2.0及更高)
重要通知
-
Burp Infiltrator不应在需要可用性、性能或正确操作的生产系统或任何其他系统上使用。 Burp Infiltrator对应用程序进行更改,这可能导致服务中断、性能下降、应用程序错误或其他问题。
-
Burp Infiltrator对应用程序字节码进行不可逆的更改。 要还原Burp Infiltrator所做的更改,有必要从原始未修改来源重新部署该应用程序。
-
Burp Infiltrator会更改应用程序的行为,以便可能向可能通过网络与应用程序进行交互的任何人公开潜在的敏感信息。
-
出于这些原因,仅在以下情况下使用Burp Infiltrator:(a)仅用于测试目的,并且(b)对于不信任可能公开的信息的任何人都无法访问的系统。
Burp Infiltrator 如何运行
Burp Infiltrator的工作方式如下:
-
Burp用户通过“ Burp”菜单从Burp Suite Professional导出相关的Burp Infiltrator安装程序。
-
应用程序开发人员或管理员通过在包含应用程序字节码的计算机上运行Burp Infiltrator工具来安装它。
-
Burp Infiltrator修补应用程序字节码,以便在调用可能不安全的API的位置注入检测拦截。
-
该应用程序以正常方式运行,运行修补后的字节码。
-
Burp用户以常规方式执行应用程序扫描。
-
当应用程序调用可能不安全的API时,检测拦截会检查API的相关参数。 包含Burp Collaborator域的所有Burp有效负载都将根据其唯一结构进行指纹识别。
-
工具拦截对检测到的Burp Collaborator域进行了变异,以合并被调用的API的标识符。
-
工具拦截执行突变的Burp Collaborator域的DNS查找。
-
(可选)根据配置选项,检测拦截向突变的Burp Collaborator域发出HTTP / S请求,包括相关参数的完整值和应用程序调用堆栈。
-
Burp以正常方式轮询Collaborator服务器,以检索由于其扫描有效负载而发生的任何Collaborator交互的详细信息。 Burp Infiltrator仪器执行的所有交互的详细信息都返回给Burp。
-
Burp向用户报告应用程序正在将相关的输入项传递给可能不安全的API,并生成有关漏洞类型的信息扫描问题。 如果针对同一问题找到了其他证据(基于带内行为或其他Collaborator的互动),则该证据将汇总为一个问题。
由于Burp Infiltrator的工作方式是观察包含Burp Collaborator域的Burp负载,并通过指定的Burp Collaborator服务器与Burp通信,因此使用Burp Infiltrator要求:
-
Burp执行扫描的实例被配置为使用有效且正常运行的Burp Collaborator服务器,并且目标应用程序和Burp都能够与该服务器进行交互。
-
至少启用了一些使用基于Collaborator的有效负载的扫描检查。 理想情况下,这应包括外部服务交互的扫描检查。 尽可能多地使用基于Collaborator的扫描检查将最大程度地提高有效性。
Burp Infiltrator支持使用专用Burp Collaborator服务器,并且Infiltrator仪器会根据Burp在其有效负载中发送的完整域名知道与哪个Collaborator服务器进行通信。 但是,仅支持使用域名配置的专用Collaborator服务器。 不支持通过IP地址配置的专用Collaborator服务器。
安装Burp Infiltrator
要使用Burp Infiltrator,需要使用以下步骤将其安装在目标应用程序中:
-
从Burp Suite Professional导出Burp Infiltrator安装程序。 转到“Burp”菜单,选择“Burp Infiltrator”,选择要检测的应用程序类型,然后将文件保存到您的首选位置。
-
将Burp Infiltrator安装程序复制到包含已编译的应用程序字节码的计算机上。 它可能已经位于目标应用程序服务器上,或已经准备好部署的另一台计算机上。
-
如果字节码已经位于目标应用程序服务器上,请确保该应用程序当前未在运行,因为这可能会阻止修改磁盘上的字节码。
-
修补期间,Burp Infiltrator需要知道应用程序字节码的位置。 实现此目的的最简单方法是将Infiltrator安装程序放置在应用程序的根文件夹中,然后从该文件夹中将其作为工作目录运行。 或者,您可以在安装过程中指定应用程序字节码的路径。
-
确保用于执行Burp Infiltrator安装的用户上下文具有写入包含应用程序字节码的文件和文件夹的权限。
-
Burp Infiltrator需要从命令行运行(例如,对于Java应用程序,使用java -jar burp_infiltrator_java.jar)。
-
默认情况下,Burp Infiltrator安装程序以交互方式运行,并在安装过程中询问一系列问题。 或者,您可以非交互式地运行它。
-
修补过程完成后,使用修改后的字节码以正常方式启动应用程序。
请注意与修补过程有关的以下注意事项:
-
如果作为应用程序一部分执行的代码位于多个文件位置,甚至位于多台计算机上,则为了实现完全覆盖,应在保存字节码的每个位置运行Burp Infiltrator。
-
不要在包含字节码的文件位置上运行Burp Infiltrator,该字节码不属于要测试的应用程序的一部分。
-
对应用程序字节码所做的更改可能会破坏任何已签名代码组件上的签名。 为了成功地将Burp Infiltrator与已签名的代码组件一起使用,有必要在应用程序中禁用对代码签名的验证。
-
Burp Infiltrator对应用程序字节码进行不可逆的更改。 要还原Burp Infiltrator所做的更改,有必要从原始未修改来源重新部署该应用程序。
-
如果已经使用Burp Infiltrator修补了目标应用程序,并且有新版本的Burp Infiltrator可用,则可以简单地以常规方式运行更新的Infiltrator安装程序,然后重新启动该应用程序。
-
为了修补.NET应用程序,Burp Infiltrator使用字节码汇编和反汇编工具。 这些可以是:(a)分别与.NET框架和Windows SDK工具一起分发的ilasm和ildasm工具; (b)与mono一起分发的ilasm和monodis工具。 您必须在修补过程中指定组装和拆卸工具的位置。 请注意,汇编工具的版本必须与字节码针对的.NET框架版本相匹配,以确保兼容性。
-
.NET代码不应使用SupressIldasmAttribute属性进行注释,因为这将阻止Burp Infiltrator检测装配。
-
修补.NET应用程序后,不应将Burp Infiltrator安装程序可执行文件留在应用程序从其加载其字节码(通常为“ bin”)的文件夹中。 如果安装程序留在此位置,则默认情况下,.NET将把安装程序作为应用程序的一部分加载,这可能会导致警告记录甚至致命错误。
非交互式安装
您可以非交互方式安装Burp Infiltrator。 这支持各种用例。 例如,CI管道可以自动将应用程序构建部署到登台服务器,安装Burp Infiltrator工具,并使用Burp Scanner执行扫描。
要以非交互方式运行Burp Infiltrator,请在命令行中添加以下参数:
--非交互式
在非交互模式下,Burp Infiltrator安装程序将为默认在交互模式下提示的所有配置选项使用默认值。 如果需要,可以使用其他命令行参数来覆盖这些默认值。 使用以下命令行参数列出所有受支持的选项:
--帮助
在非交互式地安装Burp Infiltrator之前,应该使用上面的命令查看除非被覆盖的配置选项的默认值的详细信息,并确保根据您的要求使用正确的选项。
注意: 通过以非交互方式运行Burp Infiltrator安装程序,您将被视为已阅读并同意在交互安装期间显示的所有警告和免责声明。
配置选项
可以在Burp Infiltrator的安装过程中以交互方式或在非交互式安装过程中使用命令行选项来指定以下配置选项:
-
是否报告已达到潜在不安全API的相关参数的完整值。
-
当输入到达可能不安全的API时是否报告应用程序调用堆栈。
-
是否允许通过未加密的HTTP与Collaborator服务器进行通信。 使用HTTPS可以降低未经授权披露传输信息的风险。 但是,取决于所检测应用程序中可用的技术以及配置的Collaborator服务器的功能,有时可能需要使用未加密的通信。 注意: 使用HTTPS时,Burp Infiltrator会尽最大努力使用可用的最新TLS密码。 在某些目标系统上,尤其是那些使用较旧技术的系统,最新的可用密码可能会受到适当位置的对手的已知攻击的攻击。
-
是否只允许与指定的Burp Collaborator服务器通信。 在通过Burp Scanner进行扫描期间,有效负载将包含Burp配置为使用的Burp Collaborator服务器的子域。 如果您知道将使用特定的Collaborator服务器执行Burp扫描,则可以将Burp Infiltrator配置为仅允许与该服务器的通信。
-
应在其中应用渗透程序修补程序的文件路径。 修补程序始终以递归方式应用于子目录。
注意:配置选项是在修补操作期间指定的,并在修补操作对应用程序字节码进行的更改中应用。 要在执行补丁程序后修改Burp Infiltrator的配置,必须使用更新的选项重新运行Burp Infiltrator安装程序,然后重新启动应用程序。