Burpsuite

BurpSuite是用于攻击 web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。

Dashboard模块

新建扫描

BurpSuite2021 启用了Dashboard,我们可以直接建立而不用从浏览器打开目标网站。

在这里插入图片描述 在这里插入图片描述

默认情况下是不用设置其他的参数的。

新建实时任务

实时任务,就是每时每刻都在运行的任务,会实时接收burpsuite的数据进行处理,当然这是可以设定特定的数据进入该任务进行处理的。

在这里插入图片描述 在这里插入图片描述在这里插入图片描述

其他的根据情况微调。

Proxy模块

Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端和服务端之间传输的数据。

Proxy基本使用

Burp Proxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢地当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。 一般使用Burp Proxy时,大体涉及环节如下:

  1. 首先,确认JRE已经安装好,Burp Suite可以启动并正常运行,且已经完成浏览器的代理服务器配置。
  2. 打开Proxy功能中的Intercept选项卡,确认拦截功能为“Interception is on”状态,如果显示为“Intercept is off”则点击它,打开拦截功能。

img

  1. 打开浏览器,输入你需要访问的URL(以 http://baike.baidu.com/ 为例)并回车,这时你将会看到数据流量经过Burp Proxy并暂停,直到你点击【Forward】,才会继续传输下去。如果你点击了【Drop】,则这次通过的数据将会被丢失,不再继续处理。

  2. 当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括以下两项:

image.png

  1. Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。你可以通过手工修改这些信息,对服务器端进行渗透测试。

  2. Hex 这个视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。

默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。 所有流经Burp Proxy的消息,都会在http history记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,进行进一步的测试。如下图所示: img

BurpSuite2021新特色

程序新增内置浏览器,可以不用设置浏览器代理,直接从Proxy选项卡下的“Open Browser”就可以使用内置的浏览器就行访问目标,而Burp suite则会默认开始拦截,而且相对于旧版的Burpsuite是直接可以拦截https的网站的。

数据拦截与控制

Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是:

  • Forward的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。
  • Drop的功能是你想丢失当前拦截的消息,不再forward到服务器端。
  • Interception is on表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;
  • Interception is off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。
  • Action的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。

能是指对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。 img

img

除了Intercept中可以对通过Proxy的消息进行控制外,在可选项设置选项卡Options中也有很多的功能设置也可以对流经的消息进行控制和处理。

客户端请求消息拦截

客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:

image.png

主要包含拦截规则配置、错误消息自动修复、自动更新Content-Length消息头三个部分。

如果intercept request based on the follow rules的checkbox被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调节规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【Remove】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:

img

  1. 拦截规则添加时,共包含4个输入项。Boolean opertor表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数, cookies, 头部或者内容, 状态码, MIME类型, HTML页面的title等。Match relationship表示此条规则是匹配还是不匹配Match condition输入的关键字。当我们输入这些信息,点击【OK】按钮,则规则即被保存。=
  2. 如果Automatically fix missing的checkbox被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。
  3. 如果Automatically update Content-Length的checkbox被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值。

服务器端返回消息拦截

服务器端返回消息拦截顾名思义是指拦截服务器端返回的消息的相关配置项,其界面如下:

img

服务器返回消息修改

image.png

自上而下,每一个选择项分别对应的功能是

  • 显示form表单中隐藏字段
  • 高亮显示form表单中隐藏字段
  • 使form表单中的disable字段生效,变成可输入域
  • 移除输入域长度限制
  • 移动JavaScript验证
  • 移动所有的JavaScript
  • 移除标签
  • 转换https超链接为http链接
  • 移除所有cookie中的安全标志

通过服务器返回消息修改可选择项的设置,可以方便渗透测试人员在安全评估过程中突破原有的数据限制,更好、更快地检测服务器端的安全性,但实际上用到的不多。

匹配替换

此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不同之处还在于支持正则表达式语言。

img

针对的是所有请求包,可以把特定字符替换成其他的字符。

当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。例如,当我们要替换所有返回消息中的邮箱地址为t0data@burpsuite.com时,可以参考下图的设置填写输入项并保存验证。

img

img

支持正则表达式匹配!!!

其他配置项

其他配置项主要是杂项设置。其界面如下:

img

自上而下依次的功能是

  • 指定使用HTTP/1.0协议与服务器进行通信 这项设置用于强制客户端采用HTTP/1.0协议与服务器进行通信,一般客户端使用的HTTP协议版本依赖于客户端浏览器,但某些服务器或者应用,必须使用HTTP/1.0协议,此时可勾选此项

  • 指定使用HTTP/1.0协议反馈消息给客户端 目前所有的浏览器均支持HTTP/1.0协议和HTTP/1.1协议,强制指定HTTP/1.0协议主要用于显示浏览器的某些方面的特征,比如,阻止HTTP管道攻击。

  • 设置返回消息头中的“Connection:close” 可用于某些情况下的阻止HTTP管道攻击。

  • 请求消息头中脱掉Proxy-* 浏览器请求消息中,通常会携带代理服务器的相关信息,此选项主要用于清除消息头中的代理服务器信息。

  • 解压请求消息中的压缩文件 某些应用在与服务器端进行交互时,会压缩消息体,勾选此选项,则Burp Suite 会自动解压消息体

  • 解压返回消息中的压缩文件 大多数浏览器支持压缩的消息体,勾选此选项,则Burp Suite 会自动解压被服务器端压缩的消息体

  • 禁用http://burp

  • 允许通过DNS和主机名访问web接口 即允许通过域名或主机名访问Burp Suite

  • 不在浏览器中显示Burp Suite错误 在我们使用Burp Suite时,如果发生了Burp Suite自身的错误,会在浏览器中显示,如果勾选了此项,则不会在浏览器中显示此类错误。

  • 禁用日志到历史和网站地图中 此选项的作用是阻止记录日志到历史和网站地图,在某些情况下可能有用,比如说,通过上游服务器进行认证或者做正则表达式替换时,为了降低内存的消耗,减少日志的储存,你可以勾选此项。

  • 拦截功能开始设置 这个选项主要用来配置intercept功能的生效方式,分为总是生效、 总是失效 、从上一次的Burp Suite中恢复设置3种方式。

历史记录History

Burp Proxy的历史记录由HTTP历史和WebSockets历史两个部分组成。

HTTP历史界面由筛选过滤器、历史记录列表、消息详情3个部分组成。

img

当我们在做产品系统的安全评估过程中,会在HTTP历史中保存了大量的日志记录,为了更友好的消息管理,Burp提供了筛选过滤器功能。当我们点击HTTP历史标签下发的Filter时,将弹出筛选过滤器界面。

img

  • 按照过滤条件的不同,筛选过滤器划分出7个子板块,分别是

  • 按照请求类型过滤 你可以选择仅显示当前作用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前作用域”时,此作用域需要在Burp Target的Scope选项中进行配置,详细请阅读Burp Target相关章节。

  • 按照MIME类型过滤 你可以控制是否显示服务器端返回的不同的文件类型的消息,比如只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其他文本、图片、Flash、二进制文件 8种形式。

  • 按照服务器返回的HTTP状态码过滤 Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。比如,如果你只想显示返回状态码为200的请求成功消息,则勾选2XX。

  • 按照查找条件过滤 此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你可以选择 1.正则表达式 2.大小写敏感 3.否定查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将不再显示。

  • 按照文件类型过滤 通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅仅显示哪些,另一个是不显示哪些。如果是仅仅显示哪些,在show only的输入框中填写显示的文件类型,同样,如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。

  • 按照注解过滤 此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。

  • 按照监听端口过滤 此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,我们很少用到。

现在,我们再看看WebSockets历史选项的功能,从界面上我们可以看出,WebSockets历史所提供的功能和选项是HTTP历史的一个子集,只是因为采用的通信方式的不同,而被独立出来成为一个专门的视图。其功能的使用方式与HTTP历史雷同,此处就不在赘述。

Target模块

Burp Target 组件主要包含站点地图、目标域、Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息,下面我们就分别来看看Burp Target的三个组成部分。

目标域设置 Target Scope

Target Scope中作用域的定义比较宽泛,通常来说,当我们对某个产品进行渗透测试时,可以通过域名或者主机名去限制拦截内容,这里域名或主机名就是我们说的作用域;如果我们想限制得更为细粒度化,比如,你只想拦截login目录下的所有请求,这时我们也可以在此设置,此时,作用域就是目录。总体来说,Target Scope主要使用于下面几种场景中:

  • 限制站点地图和Proxy 历史中的显示结果
  • 告诉Burp Proxy 拦截哪些请求
  • Burp Spider抓取哪些内容
  • Burp Scanner自动扫描哪些作用域的安全漏洞
  • 在Burp Intruder和Burp Repeater 中指定URL

通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音。在Target Scope的设置中,主要包含两部分功能:允许规则和去除规则。

img

其中允许规则顾名思义,即包含在此规则列表中的,视为操作允许、有效。如果此规则用于拦截,则请求消息匹配包含规则列表中的将会被拦截;反之,请求消息匹配去除列表中的将不会被拦截。

img

如果想要设置其他的协议或端口等设置,可点

img

当我们设置了Target Scope (默认全部为允许),使用Burp Proxy进行代理拦截,在渗透测试中通过浏览器代理浏览应用时,Burp会自动将浏览信息记录下来,包含每一个请求和应答的详细信息,保存在Target站点地图中。

站点地图 Site Map

下图所示站点地图为一次渗透测试中,通过浏览器浏览的历史记录在站点地图中的展现结果。

img

从图中我们可以看出,Site Map的左边为访问的URL,按照网站的层级和深度,树形展示整个应用系统的结构和关联其他域的url情况;右边显示的是某一个url被访问的明细列表,共访问哪些url,请求和应答内容分别是什么,都有着详实的记录。 基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取。

img

Repeater模块

Burp Repeater作为Burp Suite中一款手工验证HTTP消息的测试工具,通常用于多次重放请求响应和手工修改请求消息的修改后对服务器端响应的消息分析。

Repeater的使用

在渗透测试过程中,我们经常使用Repeater来进行请求与响应的消息验证分析,比如修改请求参数,验证输入的漏洞;修改请求参数,验证逻辑越权;从拦截历史记录中,捕获特征性的请求消息进行请求重放。Burp Repeater的操作界面如下图所示:

img

请求消息区为客户端发送的请求消息的详细信息,Burp Repeater为每一个请求都做了请求编号,当我们在请求编码的数字上双击之后,可以修改请求的名字,这是为了方便多个请求消息时,做备注或区分用的。在编号的下方,有一个【Send】按钮,当我们对请求的消息编辑完之后,点击此按钮即发送请求给服务器端。服务器的请求域可以在target处进行修改,如上图所示。

img

应答消息区为对应的请求消息点击【Send】按钮后,服务器端的反馈消息。通过修改请求消息的参数来比对分析每次应答消息之间的差异,能更好的帮助我们分析系统可能存在的漏洞。

在我们使用Burp Repeater时,通常会结合Burp的其他工具一起使用,比如Proxy的历史记录,Scanner的扫描记录、Target的站点地图等,通过其他工具上的右击菜单,执行【Send to Repeater】,跳转到Repeater选项卡中,然后才是对请求消息的修改以及请求重放、数据分析与漏洞验证。

Intruder模块

Burp Intruder作为BurpSuite中一款功能极其强大的自动化测试工具,通常被系统安全渗透测试人员被使用在各种任务测试的场景中。

Intruder使用场景和操作步骤

在渗透测试过程中,我们经常使用Burp Intruder,它的工作原理是:Intruder在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会携带一个或多个有效攻击载荷(Payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。Burp Intruder通常被使用在以下场景:

  • 标识符枚举 Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如,用户名,文件ID和账户号码。
  • 提取有用的数据 在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄。
  • 模糊测试 很多输入型的漏洞,如SQL注入,跨站点脚本和文件路径遍历可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由于的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,您可以设置Payload,通过Burp Intruder自动化地对Web应用程序进行模糊测试。

通常来说,使用Burp Intruder进行测试,主要遵循以下步骤:

  1. 确认Burp Suite安装正确并正常启动,且完成了浏览器的代理设置。
  2. 进入Burp Proxy选项卡,关闭代理拦截功能。
  3. 进行历史日志(History)子选项卡,查找可能存在问题的请求日志,并通过右击菜单,发送到Intruder。

img

  1. 进行Intruder 选项卡,打开Target和Positions子选项卡。这时,你会看到上一步发送过来的请求消息。

image.png

  1. 因为我们了解到Burp Intruder攻击的基础是围绕刚刚发送过来的原始请求信息,在原始信息指定的位置上设置一定数量的攻击载荷Payload,通过Payload来发送请求获取应答消息。默认情况下,Burp Intruder会对请求参数和Cookie参数设置成Payload position,前缀添加§符号 , 如上图红色标注位置所示。 当发送请求时,会将标识的参数替换为Payload。

    Attack type选项:

    • Sinper(狙击手):对变量依次进行破解。多个标记依次进行。适合爆破已知用户名但密码未知的情况。
    • Battering ram(攻城锤):对变量同时进行破解,多个目标同时进行。适合爆破用户名与密码一致的情况。
    • PitchFork(鱼叉):每一个变量标记对应一个字典,取每个字典的对应项。适合使用代理IP池的情况。
    • Cluster boom(集束炸弹):每一个变量对应一个字典,并且进行交叉破解,尝试各种组合。适用于爆破用户名+密码的情况。
  2. 在Position界面的右边,有【Add §】、【Clear §】、【Auto §】、【Refersh §】四个按钮,是用来控制请求消息中的参数在发送过程中是否被Payload替换,如果不想被替换,则选择此参数,点击【Clear】,即将参数前缀去掉。

  3. 当我们打开Payload 子选项卡,选择Payload的生成或者选择策略,默认情况下选择“Simple list”,当然你也可以通过下拉选择其他Payload类型或者手工添加。

img

  1. 此时,我们再回到Position界面,在界面的右上角,点击【Start attack】,发起攻击。

img

  1. 此时,Burp会自动打开一个新的界面,包含攻击执行的情况、Http状态码、长度等结果信息。

img

  1. 我们可以选择其中的某一次通信信息,查看请求消息和应答消息的详细。

img

Project Options模块

img

img

img

img

img

User Options模块

img

img

img

BurpSuite扩展插件推荐

  • Autorize —— 强大的越权自动化测试工具
  • Turbo Intruder —— 短时间发送大量请求
  • Software Vulnerability Scanner —— 自动根据版本号查找 CVE
  • Scan Check Builder —— 自定义扫描 payload
  • BypassWAF —— 可帮助绕过WAF
  • Logger++ —— 更强大的请求历史查看器
  • Brida —— 连接 frida 与 burpsuite
  • J2EEScan —— 强大的 J2EE 后台扫描插件
  • sqlmap4burp++ —— 连接 burpsuite 与 sqlmap
  • Knife —— 工具箱、自定义 payload
  • CSRF Token Tracker —— 绕过CSRF限制进行暴力破解
  • JSON Beautifier —— 格式化查看 json
  • Decompressor —— 自动解码和修改 gzip 压缩包
  • Wsdler —— 测试 WSDL 请求

AWVS

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。

这里推荐使用的AWVS虽然不是最新版,但是是最新的破解docker版

安装方法

1、docker中拉取下载镜像

1
docker pull secfa/docker-awvs

2、将docker的3443端口映射到物理机的 3443端口

1
docker run -it -d -p 13443:3443 secfa/docker-awvs

3、https://docker所在服务器的ip:3343

默认用户名和密码:

username: admin@admin.com

password: Admin123

227b2f2bf566fb26bf9afe9c31447e2d.png

使用方法

使用界面

在这里插入图片描述

扫描功能区

在这里插入图片描述

  1. Targets 点击 targets返回目标列表,选择要扫描的url,点击scan开始扫描

在这里插入图片描述

  1. Vulnerabilities 点击Vulnerabilities查看漏洞列表,选择具体的漏洞可以进行右上方的操作

在这里插入图片描述

  1. Reports 点击reports,可以看到扫描结束的报告列表,可以导出为pdf和html格式的

    在这里插入图片描述

设置区

  1. Users(用户管理) 创建子用户

在这里插入图片描述

  1. ScanTypes(扫描类型) 添加自定义扫描类型

在这里插入图片描述

  1. Network Scanner(网络扫描器)

在这里插入图片描述

AppScan

IBM AppScan该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞。

AppScan的下载、安装可参考:https://www.jb51.net/softs/733458.html

个人认为扫描速度比AWVS要慢很多,这里不做过多讲解。

Xray

简介

项目地址:https://github.com/chaitin/xray

长亭科技研发的一款完善的安全评估工具,支持常见 Web 安全问题扫描和自定义 POC,虽然 Github 有项目,但是不开源,只提供社区版本供大家使用。

这里只是进行一个简单使用。

基本使用

代理模式

代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都认为自己直接与对方对话,同时记录该流量,然后修改参数并重新发送请求进行扫描。这种原理和 Burpsuite 的自带的漏扫原理是一样的。

生成 ca 证书

1
2
3
4
5
6
#  生成 ca 证书
./xray genca

# 在当前文件夹生成 ca.crt 和 ca.key 两个文件
ls
ca.crt ca.key config.yaml xray

将生成的 ca 证书导入到需要代理的设备即可,这样就可以方便代理 https 的流量了

启用代理

第一次启动 xray 之后,当前目录会生成 config.yml 配置文件。

监听本地的7777端口,并设置漏洞报告的输出的文件名为:xray-testphp.html

1
./xray webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html

配置代理

Chrome 下的 SwitchyOmega 插件很方便添加各种代理,将xray的代理添加进来,然后浏览器开启 xray 代理即可:

img

开始扫描

使用刚刚设置过代理的 Chrome 浏览器访问:http://testphp.vulnweb.com

然后就可以看到 xray 界面开始输出漏洞信息,在用户和网站交互的时候,期间的连接 xray 都会进行安全检查,然后生成对应的漏洞报告:

下面是几个快速链接,可以点击用于体验更多的漏洞类型的扫描

可以在上面设置的输出格式里面看到对应的漏洞检测结果报告:

img

爬虫模式

爬虫模式是模拟人工去点击网页的链接,然后去分析扫描,和代理模式不同的是,爬虫不需要人工的介入,访问速度要快很多,但是也有一些缺点需要注意。

  • xray 的基础爬虫不能处理 js 渲染的页面
  • 需要首先人工配置登录 cookie,必需的 http 头等,如果登录失败,也不容易发现问题
1
xray webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html

在这个模式下,相当于主动扫描模式,自主分析页面的链接,然后自动探测是否有漏洞。

服务扫描

xray 也支持服务扫描,目前的服务扫描的POC还不够多,目前只有一个 tomcat-cve-2020-1938 ajp 协议任意文件检测poc。

参数配置目前比较简单,支持单个扫描与批量扫描:

1
2
3
4
5
# 快速检测单个目标
./xray servicescan --target 127.0.0.1:8009

# 批量检查的 1.file 中的目标, 一行一个目标,带端口
./xray servicescan --target-file test.file

其中 test.file 的格式为一个行一个 service,如

1
2
10.3.0.203:8009
127.0.0.1:8009

也可以将结果输出到报告中,支持多种格式:

1
2
3
4
5
6
# 将检测结果输出到 html 报告中
./xray servicescan --target 127.0.0.1:8009 --html-output service.html
./xray servicescan --target-file test.file --html-output service.html

# 将检测结果输出到 json 文件中
./xray servicescan --target 127.0.0.1:8099 --json-output service.json

完整的servicescan用法可以使用下面命令查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
./xray servicescan --help
NAME:
servicescan - Run a service scan task

USAGE:
servicescan [command options] [arguments...]

OPTIONS:
--target value specify the target, for example: host:8009
--target-file value load targets from a local file, one target a line
--json-output FILE output xray results to FILE in json format
--webhook-output value post xray result to url in json format
--html-output FILE output xray result to FILE in HTML format

Xray与Rad联动

长亭科技研发的一款浏览器爬虫,rad 爬虫可以动态渲染各种框架的网站并进行请求抓取。

可以配合Rad实现强大的主动扫描。

rad下载地址:https://github.com/chaitin/rad

与xray联动方式

  • 社区版:设置上级代理为xray监听地址 运行xray:

    1
    xray webscan --listen 127.0.0.1:7777 --html-output proxy.html

    运行rad:

    1
    rad -t http://example.com -http-proxy 127.0.0.1:7777
  • 高级版对 rad 进行了深度融合,下载后可以一键使用:

    1
    xray webscan --browser-crawler http://example.com --html-output vuln.html

Xray与Crawlergo联动

crawlergo是一个使用chrome headless模式进行URL收集的浏览器爬虫。它对整个网页的关键位置与DOM渲染阶段进行HOOK,自动进行表单填充并提交,配合智能的JS事件触发,尽可能的收集网站暴露出的入口。内置URL去重模块,过滤掉了大量伪静态URL,对于大型网站仍保持较快的解析与抓取速度,最后得到高质量的请求结果集合。

crawlergo下载地址:https://github.com/Qianlitp/crawlergo

crawlergo_x_XRAY:360 0Kee-Team 的 crawlergo动态爬虫 结合 长亭XRAY扫描器的被动扫描功能 (其它被动扫描器同理)

项目地址:https://github.com/timwhitez/crawlergo_x_XRAY

与Xray联动方式

1、下载xray最新的release, 下载crawlergo最新的release

注意,是下载编译好的文件而不是git clone它的库

2、下载crawlergo_x_XRAY

1
git clone https://github.com/timwhitez/crawlergo_x_XRAY.git

3、把launcher.py和targets.txt放在crawlergo.exe同目录下

4、配置好并启动xray被动扫描(脚本默认配置为127.0.0.1:7777)若修改端口请同时修改launcher.py文件中的proxies

1
xray webscan --listen 127.0.0.1:7777 --html-output proxy.html

5、配置好launcher.py的cmd变量中的crawlergo爬虫配置(主要是chrome路径改为本地路径), 默认为:

./crawlergo -c C:\Program Files (x86)\Google\Chrome\Application\chrome.exe -t 20 -f smart --fuzz-path --output-mode json target

a79d6c745ce01083fc538cd138f8a6c7.png

6、把目标url写进targets.txt,一行一个url

23b7d8b864864a0cdb60c5d38c331d93.png

7、用python3运行launcher.py ( XRAY被动扫描为启动的状态 )

8、生成的sub_domains.txt为爬虫爬到的子域名, crawl_result.txt为爬虫爬到的url

Xray还可以与AWVS、Burpsuite联动,官方文档中有说明,这里就不进行赘述了。

W13Scan

W13scan 是基于Python3的一款开源的Web漏洞发现工具,它支持主动扫描模式和被动扫描模式,能运行在Windows、Linux、Mac上。

功能与Xray相似,具有非常丰富的检测插件,而且是开源的。

项目地址:https://github.com/w-digital-scanner/w13scan

W13Scan也可以使用被动扫描模式,且也可以与爬虫扫描工具进行联动。

Goby

Goby 是一款新的网络安全测试工具,由赵武 Zwell(Pangolin、JSky、FOFA 作者)打造,它能够针对一个目标企业梳理最全的攻击面信息,同时能进行高效、实战化漏洞扫描,并快速的从一个验证入口点,切换到横向。我们希望能够输出更具生命力的工具,能够对标黑客的实际能力,帮助企业来有效地理解和应对网络攻击。

支持多平台、多国语言。

具有丰富的设备规则集(软硬件设备厂商、系统、业务)、轻量级的协议识别(网络协议、数据库协议、IoT协议、ICS协议)、丰富的端口分组(超过300个常见端口)、最新的漏洞框架(及时更新漏洞信息、民间高手POC)、全面的预置密码检查(设备默认账号密码)

最重要的是免费且扩展性强,联动姿势很多。

36f5a72c07f3b44be76b25fcc179e99b.png

OWASP ZAP

OWASP ZAP,全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。

OWASP ZAP的漏洞扫描能力虽然不是很好用,但它有着非常强大的爬虫功能。

Kali Linux内置工具。

w3af

w3af是一种开源web 应用程序安全扫描仪,可帮助开发人员和渗透测试人员识别和利用其 web 应用程序中的漏洞。

w3af能够识别200 多个漏洞,包括跨站点脚本、SQL 注入和操作系统命令。

项目地址:https://github.com/andresriancho/w3af

相关安装流程可参考:https://www.jianshu.com/p/171ab006183a

skipfish

Skipfish是一款轻量级的主动的Web应用程序安全侦察工具。它通过执行递归爬取和基于字典的探测来为目标站点准备交互式站点地图。最终的地图然后用来自许多活动(但希望是不中断的)安全检查的输出来注释。该工具生成的最终报告旨在作为专业Web应用程序安全评估的基础。

Kali Linux内置工具。