使用Java进行渗透测试——Web代理实战

181 阅读12分钟

简介

Web应用程序代理是Web应用程序渗透测试中最常用的工具。Web应用程序代理允许你拦截和修改客户端与服务器之间的请求。通过拦截HTTP消息,你可以研究Web应用程序的行为并手动测试漏洞。大多数Web应用程序代理还具有其他内置工具和扩展,这些将在本章中讨论。

结构

本章将讨论两种常见的Web应用程序代理:

  • Burp Suite社区版
  • OWASP ZAP

目标

在本章结束时,你将熟悉两种最常用的Web应用程序代理:Burp Suite和OWASP ZAP。两者都具有多种扩展和其他内置工具,适用于不同的测试目的。Burp Suite提供一个有限制的免费社区版,以及一个付费专业版。专业版包括一个广受好评的DAST扫描器。OWASP ZAP是一个开源的Web应用程序代理,带有免费的DAST扫描器。这两者的代理具有类似的功能。尽管Burp Suite专业版的DAST扫描器明显优于ZAP的DAST扫描器,但该扫描器仅在付费版中可用,而ZAP的DAST扫描器则是免费的。本章结束时,你将了解如何安装和使用这两种工具。

Burp Suite社区版

Burp Suite的社区版可以从以下地址下载:portswigger.net/burp/commun…
图3.1中显示的网站当前提供Linux、Mac、Windows和Java Jar的下载选项:

image.png

JAR版本如果你想要一个轻量级的工具且不需要安装,它是一个很好的选择。你可以通过命令行使用Java运行JAR文件,命令如下:

java -jar -Xmx4g /path/burp.jar

其中,-Xmx4g标志表示你为Burp Suite分配了4GB的RAM。/path/burp.jar应替换为你下载的JAR文件所在的路径。在撰写本文时,Burp Suite要求使用Java版本17。

否则,下载与你操作系统对应的版本并运行安装程序。

现在,假设你已经下载并安装了Burp Suite,或者正在使用Java JAR文件,让我们来看一下如何启动基本工具:

  1. 启动Burp Suite后,在图3.2中显示的第一个屏幕上,你将点击“Next”,接受一个临时文件,因为社区版无法打开已保存的项目或保存到磁盘。

image.png

  1. 在下一个屏幕上,如图3.3所示,你可以选择使用Burp默认设置或从配置文件加载。点击右下角的“Start Burp”按钮,使用默认值启动Burp Suite:

image.png

  1. Burp Suite将打开到“Proxy”标签页,如图3.4所示:

image.png

  1. Burp Suite现在包含一个内嵌浏览器,比设置Burp Suite使用常规浏览器更为简便。点击“Open Browser”按钮启动内嵌的Chrome浏览器。

现在,Burp Suite正在运行,且内嵌浏览器已经打开。你通过内嵌浏览器浏览的任何页面都会通过Burp Suite进行处理。

根据你的情况,可能需要一些其他的配置步骤。接下来,我们将介绍你可能需要的一些基本配置。

默认情况下,Burp Suite在你的机器上使用8080端口。如果你需要将8080端口用于其他用途,或者你的Web服务器或其他应用程序正在使用8080端口,那么你可以在代理设置中更改端口:

  1. 要更改端口,进入“Proxy”标签页并选择“Options”。
  2. 然后点击“Proxy Listeners”以高亮显示它。
  3. 点击“Edit”按钮弹出窗口,允许你更改端口或其他代理设置,如下图3.5所示:

image.png

在将代理更改为机器上可用的端口后,点击“OK”按钮。

  1. 你需要重启内嵌浏览器。

如果你的Web应用程序仅限于特定浏览器,而不是Chrome,则按照以下步骤设置你选择的浏览器通过Burp Suite发送数据:

a. 打开浏览器的代理设置。

b. 如果你找不到这些设置,可以在浏览器设置中搜索代理。

c. 将这些设置更改为指向Burp Suite。IP地址应为127.0.0.1,端口是Burp Suite的监听端口,默认情况下是8080。在Firefox中,这些设置的示例如图3.6所示:

image.png

d. 请注意,“No proxy for”文本框为空。通常,默认情况下此设置会排除127.0.0.1或localhost。如果需要,确保删除这些排除项。

e. 点击保存设置。

当使用非Burp Suite内嵌浏览器的浏览器时,必须安装Burp Suite证书以进行加密通信(例如HTTPS)。

以下步骤将引导你完成此过程:

  1. 要下载证书,请浏览到Burp Suite的位置:http://127.0.0.1:8080(如果你配置了不同的端口,请在URL中更改端口)。
  2. 点击右上角的“CA Certificate”按钮。
  3. 将此文件保存到你的计算机中。

请查看以下图3.7:

image.png

  1. 然后,进入你的浏览器设置并导入该证书。具体操作可能有所不同,但大多数现代浏览器的操作方式类似。首先,在设置中搜索证书,如图3.8所示:

image.png

  1. 然后选择“管理证书”选项。

  2. 当弹出窗口显示时,选择“导入...” 如图3.9所示:

image.png

  1. “导入...”选项将打开一个向导来引导你。出现选项时,选择下载的文件
  2. 当被要求选择证书类型时,选择“受信任的根证书”。
  3. 然后点击“确定”,浏览器将设置为使用Burp Suite。请参见下图3.10:

image.png

注意:有一种情况会导致Burp Suite失败。如果网站使用证书钉扎(certificate pinning),应用程序将识别到不正确的证书并失败。很少有网站使用证书钉扎,因此这种情况很少发生。

使用Burp Suite社区版

现在Burp Suite已经设置完成,你可以开始使用它了。

在代理标签页中找到的Web应用程序代理是基本组件。默认情况下,拦截功能是开启的。当拦截功能开启时,Burp Suite会停止所有请求,在你点击“Forward”之前,浏览器中不会显示任何内容,点击“Forward”后请求才会发送到服务器。点击“Intercept”按钮可以关闭拦截功能。当拦截功能关闭时,所有请求将被记录在历史记录中,但浏览器会正常工作。当拦截关闭时,按钮上会显示“Intercept is off”,按下该按钮将重新开启拦截功能。请参见下图:

image.png

如果你希望Burp Suite保持历史记录,但不想修改请求,那么可以关闭拦截功能并浏览Web应用程序。

Burp Suite会在代理工具的HTTP历史记录标签中保持你发送的每个请求的历史记录。

浏览完Web应用程序后,切换到“Target”标签,你将看到你访问过的所有URL的列表,以及一个包含你在访问过程中发现的每个页面的树状图。如果有任何被动的漏洞发现,Burp Suite会在最右侧识别并显示它们。请参见下图3.12:

image.png

Scope标签允许你设置参与的范围,可以用来限制历史记录并防止任何敏感页面被记录。范围还限制了自动化内容发现、扫描和测试。

你也可以通过右键点击“Target”标签中的URL,然后点击“Add to scope”来设置范围,如图3.13所示:

image.png

Repeater工具允许你反复发送相同的请求而不做任何修改。要将请求发送到Repeater标签页,请右键点击“Target | Site Map”标签或“Proxy | HTTP History”标签中的任何请求,然后从菜单中选择“Send to Repeater”。也可以通过快捷键Ctrl+R访问该功能。请参见下图3.14:

image.png

请求可以快速重新发送并进行修改。在Repeater窗口中,会显示你发送的每个请求的历史记录,可以通过顶部的箭头按钮进行导航,如图4.15所示。请求会发送到右上角的Target。修改Host头部只会改变头部信息,而不会改变请求发送的目标位置。

image.png

在Repeater标签页中的请求上右键点击,可以让你快速更改HTTP方法和编码。请参见下图3.16:

image.png

另一个内置的Burp Suite工具是Intruder工具。这个工具允许你在参数、头部,甚至URL的一部分中枚举一组选项。在社区版中,它的请求速率受到限制;通常,如果你想发送超过100个请求,它基本没有用。与Repeater类似,你可以通过右键点击一个请求并选择“Send to Intruder”来访问Intruder工具。

你将看到的初始屏幕类似于图3.17所示的样子:

image.png

上面高亮显示的项目代表了Burp Suite建议用于枚举的参数。这些可能是你需要的,也可能不是。点击“Clear”按钮以移除自动选择的参数,然后使用鼠标高亮你想要枚举值的位置,并点击“Add”来选择你的位置。选择好要枚举的参数后,确保攻击类型正确。如果只高亮了一个值,使用“Sniper”攻击类型最好。如果高亮了多个值,Sniper攻击将在枚举值列表时,保留一个值,其余值将为空。请参见下图3.18:

image.png

要将相同的值发送到多个参数,请使用Battering ram

Pitchfork为每个参数提供不同的有效载荷列表。因此,这对于使用已知的用户名和密码列表是一个不错的选择,例如当你知道用户名X对应密码Y时。

Cluster bombs将遍历所有可能的组合。

选择攻击类型后,让我们查看下图中的Payload标签,配置攻击选项。

image.png

Payload标签可用于设置要迭代的列表。如果存在多个有效载荷,选择Payload Sets以在它们之间切换。最常见的类型是列表和数字。

你可以通过“加载”按钮从文件中加载列表,或者逐个输入它们。Burp Suite还提供了一些内置列表供你使用。在下拉菜单中的Add from list,你可以找到这些内置的列表。

Payload type选择为“数字”时,你需要选择起始和结束数字,以及计数的增量。

Resource PoolOptions提供了关于线程和从攻击中提取数据的高级选项。点击Start Attack开始攻击。

Sequencer工具将在第11章“会话管理”中详细介绍。

Extender标签允许我们为Burp Suite添加扩展。点击BApp Store查看已发布的扩展。列表可以按评分或受欢迎程度排序。Detail列显示该扩展是否仅对专业版用户可用。如果点击某个扩展,你可以查看其详细信息。请参见下图3.20:

image.png

一些扩展需要Python或偶尔的Ruby才能运行。运行这些扩展的独立库可以在Extender标签的Options标签中设置,如图3.21所示:

image.png

Jython独立库用于在Java中运行Python,可以通过以下链接下载: www.jython.org/download.ht…

JRuby,类似地,作为一个独立文件用于从Java运行Ruby,可以通过以下链接下载: www.jruby.org/download

Autorize扩展、retire.jsHTTP Smuggler扩展和JSON Web Token Attacker是受欢迎的社区扩展,你可能会考虑使用。Autorize扩展将在第11章“授权实践”中进一步讨论。

OWASP ZAP

OWASP ZAP是第二大最受欢迎的Web应用程序代理。许多功能与Burp Suite类似,本节将详细讨论它们的差异。OWASP ZAP项目可以通过以下链接下载:www.zaproxy.org/download/

以下是可用的选项,见图3.22:

image.png

下载适用于你的操作系统的版本后,运行安装程序并启动ZAP。当ZAP启动时,你可以选择Manual ExploreAutomated Scan。选择Manual Explore以开始使用Web应用程序代理功能。请参见下图3.23:

image.png

有一个选项可以让ZAP启动Chrome或Firefox。在首次使用时,你可能会看到屏幕上显示一个错误,提示找不到浏览器,如下图所示:

image.png

然后,尝试更新ZAP以确保你拥有最新的Web驱动程序。更新选项可以在Help标签下找到,选择Check for Updates,如图3.25所示:

image.png

然后,你可以使用搜索栏查找Web驱动程序。它们可能需要从市场中安装,如图3.26所示:

image.png

如果这不起作用,你必须在Web浏览器中配置代理,以通过ZAP。这与Burp Suite类似,找到代理设置并将其更改为匹配ZAP端口。

OWASP ZAP包括一个DAST工具。点击Automated Scan将启动此DAST工具。输入URL,然后点击Attack。发现的URL将如图3.27所示显示:

image.png

可以点击加号图标,打开一个包含可能有用的不同工具的菜单。

image.png

Forced Browse是著名的DirBuster工具,用于通过指定的词表枚举内容。

每个工具都有一个选项,可以在Tools标签下的Options选择中找到。请参见下图:

image.png

尝试不同的工具和选项将帮助你了解它们及其工作原理。OWASP ZAP中的标准工具包括Active Scan、API、Fuzzer和Forced Browse。

结论

在不断变化的Web应用程序安全环境中,拥有合适的工具至关重要。本章中,我们探索了Web代理的世界,重点介绍了两个著名工具的基本功能:Burp Suite社区版和OWASP ZAP(Zed Attack Proxy)。我们开始了理解这些代理如何帮助安全专业人员和开发人员识别和检测Web应用程序漏洞的旅程。

在下一章中,Web代理将被广泛应用于识别和利用Web应用程序漏洞。