Drollery Medieval drollery of a knight on a horse

🏆 欢迎来到本站: https://xuchangwei.com/希望这里有你感兴趣的内容

flowery border with man falling
flowery border with man falling

Safe: 04-信息安全工具使用-渗透必备工具

渗透测试必备工具

主要内容:

  • Wireshark 使用简介
  • Burp 安装与配置
  • Burp 代理和浏览器设置
  • Burp 漏洞扫描及检测模块
  • Burp Target 模块
  • Burp Intruder模块
  • Burp Repeater模块
  • Burp Comparer 模块及其它模块
  • Burp 实现手机抓包

BurpSuite

BurpSuite 概述

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。

Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。BurpSuite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作。

下载地址:
免费版本:https://portswigger.net/burp/communitydownload

Burp Suite可执行程序是java文件类型的jar文件,免费版的可以从免费版下载地址进行下载。免费版的Burp Suite会有许多限制,很多的高级工具无法使用,如果想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有:

  1. Burp Scan
  2. 工作空间的保存和恢复
  3. 拓展工具,如Target Analyzer, Discover Content 和 Task Scheduler

核心功能是抓包、3-4个核心模块,不用追求最新版。

java 环境安装

Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,需要提前Java可运行环境。

下载 https://www.oracle.com/java/technologies/downloads/#java8

  • windows 安装java

    分别创建jdk目录:

    d:\Program Files\Java\jdk1.8.0_144\
    d:\Program Files\Java\jre\
    

    环境变量:

    右键“我的电脑”>属性>高级系统设置>

    JAVA_HOME=JDK的安装目录
    PATH=%JAVA_HOME%\bin 
    CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    
  • mac 安装java

    openjdk1.8: https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk#zulu
    jdk 11 17 20 : https://www.oracle.com/java/technologies/downloads/

    查看当前版本

    /usr/libexec/java_home -V
    

    `~/.bash_profile` 配置:

    export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
    export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
    export JAVA_17_HOME=$(/usr/libexec/java_home -v17)
    export JAVA_20_HOME=$(/usr/libexec/java_home -v20)
    
    alias java8='export JAVA_HOME=$JAVA_8_HOME'
    alias java11='export JAVA_HOME=$JAVA_11_HOME'
    alias java17='export JAVA_HOME=$JAVA_17_HOME'
    alias java20='export JAVA_HOME=$JAVA_20_HOME'
    
    # default to Java 20
    java17
    

    生效

    source ~/.bash_profile
    
从命令行启动Burp Suite

这时,你只要在cmd里执行

java -jar /your_burpsuite_path/burpSuite.jar

即可启动Burp Suite,或者,
你将Burp Suite的jar放入class_path目录下,直接执行java -jar burpSuite.jar也可以启动。
注意:your_burpsuite_path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的jar文件名
称一致。

如果提示未激活,参考下文:
https://blog.csdn.net/LUOBIKUN/article/details/87457545

设置JVM内存大小

如果Java可运行环境配置正确的话,当你双击burpSuite.jar即可启动软件,这时,Burp Suite自己会自动分配最大的可用内存,具体实际分配了多少内存,默认一般为64M。

当我们在渗透测试过程,如果有成千上万个请求通过Burp Suite,这时就可能会导致Burp Suite因内存不足而崩溃,从而会丢失渗透测试过程中的相关数据,这是我们不希望看到的。因此,当我们启动Burp Suite时,通常会指定它使用的内存大小。一般来说,我们通常会分配2G的内存供Burp Suite使用,如果你的电脑内存足够,可以分配4G;如果你的电脑内存没那么大,你也可以分配128M。当你给Burp Suite分配足够多的内存时,它能做的工作也会更多。

指定Burp Suite占用内存大小的具体配置方法是在启动脚本里添加如下命令行参数:

java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar

其中参数-Xmx指定JVM可用的最大内存,单位可以是M,也可以是G,如果是G为单位的话,则脚本内容为:

java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar

更多关于JVM性能调优的知识请阅读 Oracle JVM Tuning

Burp Suite代理和浏览器设置

Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量,通过拦截,Burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。

Snipaste_2023-05-20_22-49-27.jpg

在日常工作中,我们最常用的web客户端就是的web浏览器,我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过Burp Suite代理的流量数据进行处理。

下面我们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。

IE设置

当Burp Suite 启动之后,默认分配的代理地址和端口是127.0.0.1:8080,我们可以从Burp Suite的proxy选项卡的options上查看。如图:

Snipaste_2023-05-20_23-09-04.png

现在,我们通过如下步骤的设置即可完成IE通过Burp Suite 代理的相关配置。

  • 启动IE浏览器
  • 点击【工具】菜单,选择【Internet】选项
  • 打开【连接】选项卡,点击【局域网设置】,进行代理设置。
  • 在代理服务器设置的地址输入框中填写127.0.0.1,端口填写8080,点击【确定】,完成代理服务器的设置。
  • 这时,IE的设置已经完成,你可以访问 http://burp 将会看到Burp Suite的欢迎界面。
FireFox设置

与IE的设置类似,在FireFox中,我们也要进行一些参数设置,才能将FireFox浏览器的通信流量,通过Burp Suite代理进行传输。详细的步骤如下:

  • 启动FireFox浏览器,点击【应用程序】菜单,点击【设置】。
  • 在新打开的about:preferences#advanced窗口中,最下面【网络设置】,我们将会看到FireFox连接网络的设置选项。
  • 点击【设置】,在弹出的【连接设置】对话框中,找到“http代理”,填写127.0.0.1,端口填写8080,最后点击【确认】保存参数设置,完成FireFox的代理配置。
Snipaste_2023-05-20_23-16-07.png
  • 扩展插件

    当然,FireFox浏览器中,可以添加FireFox的扩展组件,对代理服务器进行管理。

    • FoxyProxy
    • Proxy Swither
Google Chrome设置

Google Chrome使用Burp Suite作为代理服务器的配置步骤如下:

  1. 启动Google Chrome浏览器,在地址栏输入chrome://settings/,回车后即显示Google Chrome浏览器的配置界面
  2. 点击底部的【系统】,找到"打开你计算机的代理设置"点击。
  3. 当然,你也可以直接在搜索框中输入“代理”,回车后将自动定位到代理服务器设置功能。
  4. windows系统下将会弹出IE浏览器的代理设置,此时,按照IE浏览器的设置步骤,完成代理服务器的配置即可。
手机抓包代理
  1. 手机和电脑接入同一个WIFI,在电脑上确认WIFI的IP地址,即代理地址
#win0
ifconfig # 无线局域网ipv4地址
Snipaste_2023-05-20_23-28-52.png
  1. 在手机上进行代理设置
- 设置页面,点击打开WLAN来进行网络设置。
- 打开WLAN后,点击这里已经连接上的wifi网络
- 打开了网络详情页面,可以看到代理设置
- 默认是无代理的。我们点击下拉框后,选择‘手动’,手动来设置代理,可以看到多出了主机名和端口选项
- 在主机名和端口填写对应burpsuite的监听地址。如192.168.1.35:8080
- 最后面的选项可以不填,这是填写不希望使用代理来上网的网址。
所有填写后,点击右上角的确定按钮就可以了
Snipaste_2023-05-20_23-29-29.png
  1. 在burp上进行代理设置,与手机设置相同的代理地址
Snipaste_2023-05-20_23-30-24.png
  1. 手机浏览器访问 http://burp 下载证书并在手机上安装,即可对手机进行抓包

注意:很多主流APP内置防护,禁止burp抓包,所以可能存在抓不到包的情况。

准备完毕,剩下就是burpsuite抓包测试了。

不同手机可能有差异,不一定成功,所以这里我使用了手机模拟器

如果是用的手机模拟器,步骤:
参考:youtube: https://www.youtube.com/watch?v=klklh5IvrBg
1安装配置模拟器android-studio:

  • 下载 android-studio: https://developer.android.com/studio
  • 安装 android-studio,一路默认,下一步,中间需要翻墙下载包。
  • android-studio配置 参考:https://www.bilibili.com/read/cv17728065/
    • 安装sdk:打开Preference –> Appearance&Behavior –> System Settings –> Android SDK。在SDK platform中可以看到你所下载的安卓版本,我这里安装的api22 和33。SKD tools安装Layout Inspector

2解决代理不显示问题

  • android-studio配置
    • 模拟器中显示代理:打开Preference –> Tools –> Emulator 取消勾选Launch in a tool window
    • 重启android-studio

3下载有漏洞的安卓应用InsecureBankv2

Snipaste_2023-05-28_07-43-05.png
  • 启动应用,账号密码admin/admin,serverip使用主机地址。需要提前启动server服务
Snipaste_2023-05-28_08-53-00.png
cd Android-InsecureBankv2/AndroLabServer
> python app.py
The server is hosted on port: 8888

#提前安装好对应模块
python -m ensurepip --user --default-pip
python -m pip install --user --upgrade pip
python -m pip install web.py
python -m pip install flask
python -m pip install sqlalchemy
python -m pip install simplejson

4ca证书安装

  • 导出ca证书为burp.cer,再把证书拖拽到虚拟手机里
Snipaste_2023-05-28_08-21-27.png
  • 虚拟手机中加载证书:Setting –> Security & location –> Encryption & credentials –> Install from SD card –> Downloads 找到burp.cer 双击安装
Snipaste_2023-05-28_08-37-44.png
  • 安装证书时要设置set lock,Continue without fingerprint –> PIN –> 随便设置一个,如,1234 –> DONE

5手机代理

  • Settings设置,手动代理这里要和burpsuite监控地址一致。如127.0.0.1:8080,Apply应用生效。
Snipaste_2023-05-28_08-45-18.png

打开浏览器访问https://baidu.com 还是无法抓包,手机还得装 JustTrustMe.apk / VirtualXposed_0.20.3.apk。

使用Burp Suite代理

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

本章主要讲述以下内容:

  • Burp Proxy基本使用
  • 数据拦截与控制
  • 可选项配置Options
  • 历史记录History
Burp Proxy基本使用

通过前面的学习,我们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢的当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。一般使用Burp Proxy时,大致涉及环节如下:

  1. 首先,确认JRE已经安装好,Burp Suite可以启动并正常运行,且已经完成浏览器的代理服务器配置。
  2. 打开Proxy功能中的Intercept选项卡,确认拦截功能为“Interception is on”状态,如果显示为“Intercept is off”则点击它,打开拦截功能。
Snipaste_2023-05-20_23-34-18.png
  1. 打开浏览器,输入你需要访问的URL(以 https://baike.baidu.com/ 为例)并回车,这时你将会看到数据流量经过Burp Proxy并暂停,直到你点击【Forward】,才会继续传输下去。如果你点击了【Drop】,则这次通过的数据将会被丢弃,不再继续处理。
  2. 当我们点击【Forward】之后,我们将看到这次请求返回的所有数据。(默认不开启)
Snipaste_2023-05-20_23-35-19.png
  1. 当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括以下四项:
Snipaste_2023-05-20_23-36-01.png
(1)Raw:这是视图主要显示web请求真实格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。你可以通过手工修改这些信息,对服务器端进行渗透测试。
(2)Params:这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数,渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。
(3)Headers:这个视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好。
(4)Hex:这个视图显示Raw的十六进制内容,你可以通过hex编辑器对请求的内容进行修改。

默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的(无意义),你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。

所有流经Burp Proxy的消息,都会在 http history 记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,进行进一步的测试。如下图所示:

Snipaste_2023-05-20_23-37-57.png
数据拦截与控制

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

  • Forward 的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。
  • Drop 的功能是你想丢弃当前拦截的消息,不再forward到服务器端。
  • Interception is on/off 表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。
  • Action 的功能是除了将当前请求的消息传递到Scan、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。
Snipaste_2023-05-20_23-42-41.png
  • Comment 的功能是指对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。
Snipaste_2023-05-21_00-12-40.png
  • Highlight 的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便与其他的请求消息相区分。

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

可选项配置Options

当我们打开可选项设置选项卡Options,从界面显示来看,主要包括以下几大板块(涉及https的功能不包含在本章内容里,后面会一章专门叙述):

  • 客户端请求消息拦截
  • 服务器端返回消息拦截
  • 服务器返回消息修改
  • 正则表达式配置
  • 其他配置项
  • 客户端请求消息拦截

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

    Snipaste_2023-05-21_00-17-08.png

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

    1. 如果intercept request based on the follow rules被选中,则所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调整规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【Remove】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:
    Snipaste_2023-05-21_00-19-21.png
    1. 添加拦截规则时,共包含4个输入项。
    Boolean opertor表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;
    
    Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数、cookies、头部或者内容、状态码、MIME类型、HTML页面的title等。
    
    Match relationship表示此条规则是匹配还是不匹配。
    
    Match condition代表输入的关键字。当我们输入这些信息,点击【OK】按钮,规则即被保存。
    
    1. 如果Automatically fix missing被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URL编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。
    2. 如果Automatically update Content-Length被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值。
  • 服务端返回消息拦截

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

    Snipaste_2023-05-21_00-22-45.png

    它的功能主要包含intercept response based on the follow rules和Automatically update Content-Length header when the response edited两个选项,其功能分别与客户端请求消息拦截中的intercept request based on the follow rules、Automatically update Content-Length header when the request edited相对应。

  • 服务器返回消息修改

    服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面如下:

    Snipaste_2023-05-21_00-26-53.png

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

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

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

正则表达式配置

正则表达式:https://www.runoob.com/regexp/regexp-tutorial.html

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

Snipaste_2023-05-21_00-41-22.png

当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。

例如,当我们要替换所有请求消息中的参数邮箱地址为 [email protected] 时,可以参考下图的设置填写输入项并保存验证。

([\w]+(\.[\w]+)*\%40[\w]+(\.[\w]+))
[email protected]
Snipaste_2023-05-21_00-43-56.png
其他配置项

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

Snipaste_2023-05-21_00-51-04.png

自上而下依次的功能是

  • 指定使用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” 每次连接结束后关闭连接。
  • 请求消息头中脱掉Proxy-* 浏览器请求消息中,通常会携带代理服务器的相关信息,此选项主要用于清除消息头中的代理服务器信息,防止被服务端识别到从而禁止产生交互。
  • 解压请求消息中的压缩文件 某些应用在与服务器端进行交互时,会压缩消息体,勾选此选项,则Burp Suite 会自动解压消息体
  • 解压返回消息中的压缩文件 大多数浏览器支持压缩的消息体,勾选此选项,则Burp Suite 会自动解压被服务器端压缩的消息体
  • 禁用http://burp
  • 允许通过DNS和主机名访问web接口 即允许通过域名或主机名访问Burp Suite
  • 不在浏览器中显示Burp Suite错误 在我们使用Burp Suite时,如果发生了Burp Suite自身的错误,会在浏览器中显示,如果勾选了此项,则不会在浏览器中显示此类错误。
  • 禁用日志到历史和网站地图中 此选项的作用是阻止记录日志到历史和网站地图,在某些情况下可能有用,比如说,通过上游服务器进行认证或者做正则表达式替换时,为了降低内存的消耗,减少日志的储存,你可以勾选此项。
  • 拦截功能开始设置。这个选项主要用来配置intercept功能的生效方式,分为总是生效、 总是失效 、从上一次的BurpSuite中恢复设置3种方式。
历史记录History

Burp Proxy的历史记录由HTTP history和WebSockets history(用不到)两个部分组成。

Snipaste_2023-05-21_00-55-02.png

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

Snipaste_2023-05-21_00-55-55.png
Snipaste_2023-05-21_00-56-31.png

当我们在某一条历史记录上单击,会在下方的消息详解块显示此条消息的文本详细信息。当我们在某条消息上双击,则会弹出此条消息的详细对话框。

Snipaste_2023-05-21_00-59-25.png

我们可以点击对话框右上方的【Previous】、【Next】按钮,浏览上一条或下一条消息的内容,也可以修改Raw的请求参数,然后执行多种【Action】操作。

Snipaste_2023-05-21_01-00-09.png

历史消息列表中主要包含请求序列号、请求协议和主机名、请求的方式、URL路径、请求参数、Cookie、是否用户编辑过消息、服务器端返回的HTTP状态码等信息。通过这些信息,我们可以对一次客户端与服务器端交互的HTTP消息详情做出准确的分析,同时,在下方的详情视图中,也提供基于正则表达式方式的匹配查找功能,更好的方便渗透测试人员查找消息体中的相关信息。

Snipaste_2023-05-21_01-01-01.png

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

Snipaste_2023-05-21_01-01-46.png

按照过滤条件的不同,筛选过滤器划分出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种匹配方式是指与关键字匹配上的将不再显示。
  • 按照文件类型过滤:通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅显示哪些,另一个是不显示哪些。如果是仅显示哪些,在show only的输入框中填写显示的文件类型,同样,如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。
  • 按照注解过滤:此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。
  • 按照监听端口过滤:此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,搭配中间件、数据库等漏洞使用。

SSL和Proxy高级选项

在前一章,我们已经学习了HTTP消息如何通过Burp Proxy进行拦截和处理,本章我们将继续学习HTTPS协议消息的拦截和处理。

HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密。基于HTTPS协议这些特性,我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。

本章包含的主要内容有

  • CA证书的安装
  • CA证书的卸载
  • Proxy监听设置

我们都知道,在HTTPS通信过程中,一个很重要的介质是CA证书,下面就我们一起来看看Burp Suite中CA证书的安装。

CA证书的安装

一般来说,Burp Proxy代理过程中的CA主要分为如下几个步骤(以win7下IE9为例):

  • 首先打开Burp Proxy监听端口和IE的代理服务器设置。其次,你的IE浏览器中没有安装过Burp Suite的CA证书,如果已经安装,请先卸载证书。详细的卸载方法请参考CA证书的卸载章节。
  • 启动浏览器,在地址栏输入http://burp 并回车,点CA进入证书下载页面
Snipaste_2023-05-21_01-05-39.png
  • 本地安装。点击上图所示的证书下载,另存为到本地目录。双击导入证书,一直点"下一步"。
  • 浏览器上安装证书
    • 点击浏览器上的【工具】菜单,打开【Internet选项】。
    • 在弹出的证书对话框中,点击【内容】-【证书】。
    • 在弹出的证书对话框中,选中【受信任的根证书颁发机构】,点击【导入】。
    • 点击【下一步】,选择步骤3保存的证书文件,进行下一步操作。
    • 指定证书的存储位置,如图
Snipaste_2023-05-21_01-07-39.png
  • 点击【下一步】,直至完成。这时,会提示安全警告,点击【是】,提示导入完成。
    • firfox 找到隐私与安全中“证书”,“查看证书”选择导入证书。
  • 重启浏览器,CA证书即配置完成。
CA证书的卸载

CA证书的卸载的通常有两种方式,第一种方式在上一章节CA证书安装中的第6步,找到需要卸载的证书,点击【删除】即可。我们这里主要描述第二种删除方式,主要是为了解决在第一种方式的基础上删除按钮失效或者证书列表里看不到的证书也一起删除的方法。

  1. win+r键,输入mmc,会弹出管理控制台。
  2. 点击【文件】菜单,打开【添加/删除管理单元】
  3. 找到证书,点击【添加】按钮
  4. 在弹出的对话框选中【计算机账户】,点【下一页】,点击【完成】,会在控制台根节点下多了一个证书的节点,点【确定】。
  5. 打开CA证书所在的位置,选择删除即可,burp证书在中间证书颁发机构 PortSwigger CA。
  6. 这时,再返回到IE浏览器的证书列表里,则不会再看到被删除的证书了。

除了IE之外,其他的浏览器如FireFox、Chrome、Sarifa等都证书的安装和卸载基本类似,操作时可以以IE的CA证书安装作为参考。

Proxy监听设置

当我们启动Burp Suite时,默认会监听本机地址(127.0.0.1)的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。特别是当我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器端通信的数据流量,这种情况下,我们会使用自定义的Proxy监听设置,而不会使用默认设置。

Proxy监听设置

Snipaste_2023-05-21_01-51-42.png

当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。

Snipaste_2023-05-21_01-52-45.png

Proxy监听设置主要包含3块功能:
1.端口绑定模式:Binding绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP地址分仅本地回路、所有接口、指定地址三种模式,在渗透测试中,无论你选择哪种模式,你需要明白一点,当你选择的非本地回路IP地址时,同局域网内的其他电脑也可以访问你的监听地址。

2.Request Handling(请求处理)主要是用来控制接收到Burp Proxy监听端口的请求后,如何对请求进行处理的,即使用burp再次转发。

Snipaste_2023-05-21_01-53-50.png

其具体配置可分为:主机名/域名的转发、端口的转发、强制使用SSL和隐形代理4个部分。当我们配置了主机或域名的转发,则所有的请求会转发到指定的主机或域名上;如果我们配置了端口的转发时,所有的请求都会被转发到这个端口上。同时我们可以指定,通过Burp Proxy的消息是否强制使用SSL,如果设置了此项,则请求若是http协议,经Burp Proxy代理后将转换为https协议。隐形代理主要是用于测试富客户端(能完成很多功能的客户端,如qq)应用或者是非浏览器代理方式的应用,当我们设置了它,访问这些应用时,将通过非代理的方式,直接连接Burp Proxy的监听端口。

3.SSL证书 这些设置控制呈现给SSL客户端的服务器SSL证书。可以解决使用拦截代理时出现的一些SSL问题:
(1)可以消除浏览器的SSL警报,并需要建立SSL例外。其中,网页加载来自其他域的SSL保护的项目,可以确保这些正确的加载到浏览器,而不需要为每个域手动接受代理的SSL证书。
(2)可以解决SSL证书连接到服务端应用程序无效的问题, 有下列选项可供设置:

a. 使用自签名证书(Use a self-signed certificate ) —— 一个简单的自签名SSL证书呈现给您的浏览器,它总是会导致SSL警告。

b. 生成每个主机的CA签名证书(Generate CA-signed per-host certificates)—— 这是默认选项。在安装时,Burp创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用。当你的浏览器发出的SSL连接指定主机,Burp生成该主机的SSL证书,由CA证书签名。您可以安装Burp的CA证书作为浏览器中的受信任的根,从而使每个主机证书没有任何警报。

c. 生成与特定的主机名CA签发的证书(Generate a CA-signed certificate with a specific hostname)—— 是类似于前面的选项;不同的是,Burp会生成一个主机证书与每一个SSL连接使用,使用指定的主机名。

d. 使用自定义证书(Use a custom certificate)—— 此选项可以加载一个特定的证书(PKCS#12格式)呈现给浏览器。如果使用应用程序需要一个特定的服务器证书(例如,与给定的序列号或证书链),客户端应该使用这个选项。

Burp Target

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

本章的主要内容有:

  • 目标域设置 Target Scope
  • 站点地图 Site Map
  • Target 工具的使用
目标域设置 Target Scope

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

  • 限制站点地图和Proxy历史中的显示结果
  • 告诉Burp Proxy拦截哪些请求
  • Burp Spider抓取哪些内容,2.0版本后改为在site map中右击选择工具箱tools中的发现目录Discover content
  • Burp Scan自动扫描哪些作用域的安全漏洞
  • 在Burp Intruder和Burp Repeater中指定URL

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

Snipaste_2023-05-21_01-58-27.png

Include in scpoe:包含作用域,过滤想要的数据
Exclude from scope:不包含作用域,过滤不想要的数据

高级设置(use advanced scope control):

Snipaste_2023-05-21_01-59-04.png
Snipaste_2023-05-21_01-59-32.png

从上图的添加规则对话框中我们可以看出,规则主要由协议、域名或IP地址、端口、文件名4个部分组成,这就意味着我们可以从协议、域名或IP地址、端口、文件名4个维度去控制哪些消息出现在包含或去除规则的列表中。

站点地图 Site Map

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

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

Snipaste_2023-05-21_02-00-52.png

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

Snipaste_2023-05-21_02-01-40.png

同时,我们也可以将某个域直接加入Target Scope中。

Snipaste_2023-05-21_02-02-09.png

除了加入 Target Scope外,从上图中,我们也可以看到,对于站点地图的分层,可以通过折叠和展开操作,更好的分析站点结构。

Target工具的使用

Target 工具的使用的使用主要包括以下部分:

  • 手工获取站点地图
  • 站点比较
  • 攻击面分析

当我们手工获取站点地图时,需要遵循以下操作步骤:

1、设置浏览器代理和Burp Proxy代理,并使之能正常工作。
2、关闭Burp Proxy的拦截功能。
3、手工浏览网页,这时,Target会自动记录站点地图信息。

手工获取站点地图的方式有一个好处就是,我们可以根据自己的需要和分析,自主地控制访问内容,记录的信息比较准确但是可能不够全面。与自动抓取相比,则需要更长的时间,如果需要渗透测试的目标是一个大型系统,则对于系统的功能点依次操作一遍所需要的精力和时间对渗透测试人员来说付出都是很大的。

攻击面分析是Burp Suite 交互工具(Engagement tools)中的功能,这里我们先看看Analyze Target使用。

1.首先,我们通过站点地图,打开Analyze Target,如图所示。

Snipaste_2023-05-21_02-03-58.png

2.在弹出的分析界面中,我们能看到概况、动态URL、静态URL、参数4个视图。

Snipaste_2023-05-21_02-04-21.png

3.概况视图主要展示当前站点动态URL数量、静态URL数量、参数的总数、唯一的参数名数目,通过这些信息,帮助我们对当前站点的总体状况有粗线条的了解。

4.动态URL视图展示所有动态的URL请求和应答消息,跟其他的工具类似,当你选中某一条消息时,下方会显示此消息的详细信息。

Snipaste_2023-05-21_02-05-00.png

5.静态URL视图与动态URL视图类似,如图:

Snipaste_2023-05-21_02-05-21.png

6.参数视图有上中下三部分组成,上部为参数和参数计数统计区,你可以通过参数使用的次数进行排序,对使用频繁的参数进行分析;中部为参数对应的使用情况列表,记录对于的参数每一次的使用记录;下部为某一次使用过程中,请求消息和应答消息的详细信息。

Snipaste_2023-05-21_02-06-12.png

在使用攻击面分析功能时,需要注意,此功能主要是针对站点地图中的请求URL进行分析,如果某些URL没有记录(未点击、未爬取到),则不会被分析到。

同时,在实际使用中,存在很多站点使用伪静态,如果请求的URL中不带有参数,则分析时无法区别,只能当做静态URL来分析。

Discover Content

通过前一章的学习,我们了解到,存在于Burp Target中的站点信息,我们可以直接传送到Burp Spider中进行站点信息的爬取。

在burp1.7版本中,存在一个独立模块,命名是Burp Spider。而在burp的2.0版本后,该模块被整合至交互工具(Engagement tools)中,命名是Discover Content。

这一章我们重点来学习Discover Content的使用,主要包含三个方面:

  • 控制(Control)
  • 配置(Config)
  • 站点地图(Site Map)

Discover Content的功能主要使用于大型的应用系统测试,它能在很短的时间内帮助我们快速地了解系统的结构和分布情况,下面我们就先来看看控制(Control)。

控制(Control)

Discover Content 控制界面由发现会话状态(Discovery Session Status)和排列任务(QueuedTasks)两部分组成。

点击一下 "Session is not running" 就开始爬取操作

Snipaste_2023-05-21_02-07-41.png
配置(Config)

Discover content 配置界面由Target、Filenames、File Extensions、Discovery Engine四部分组成。

  • Target(目标)
Start directory:开始目录
Discover:爬取对象的类型
Recurse Subdirectories:递归子目录
Snipaste_2023-05-21_02-08-45.png
  • Filenames(文件名)

通常默认就行

配置Burp用于生成要测试的文件名的源。
Built-in short file list:内置短文件列表
Built-in short directory list:内置短目录列表
Built-in long file list:内置长文件列表
Built-in long directory list:内置长目录列表
Custom file list:自定义文件列表
Custom directory list:自定义目录列表
Names observed in use on target site:在目标站点上观察到的使用中的名称
Derivations based on discovered items:基于已发现项目的推导
Snipaste_2023-05-21_02-09-30.png
  • File Extensions(文件扩展名)

本项设置会控制发现会话如何向正在测试的文件中添加文件扩展名。
测试这些扩展文件:asp, aspx, htm, html, jsp, php
测试所有在目标站点上监测到的扩展文件,除了以下这些:class, com, doc, exe, gif, gz, jar, jpeg,jpg, mp3, mpeg…
在发现的文件上测试这些变体扩展名:bac, BAC, backup, BACKUP, bak, BAK, conf, cs …
测试没有扩展名的文件

Snipaste_2023-05-21_02-10-19.png
  • Discovery Engine(发现引擎)

这些设置用来控制发现站点内容时发出HTTP请求的引擎,保持默认配置即可。

Snipaste_2023-05-21_02-11-03.png
站点地图(Site Map)

爬取完成后形成的站点地图,和Target模块中的站点地图类似。

Burp Scan

Burp Scan的功能主要是用来自动检测web系统的各种漏洞,我们可以使用Burp Scan代替我们手工去对系统进行普通漏洞类型的渗透测试,从而能使得我们把更多的精力放在那些必须要人工去验证的漏洞上。

Burp Scan这个功能模块的作用是扫描,可以用作Web应用程序的扫描器,是Pro版独有的,社区版则不带有此功能。2.0版本以后,burp取消Scanner模块,Scan功能集成在Dashboard(控制台)模块中。

Snipaste_2023-05-21_02-12-02.png

本章的主要内容有:

  • 启动方法
  • 被动扫描
  • 主动扫描
  • 导出扫描报告
启动方法

1、Burp 控制台(Burp Dashboard):捕获按钮开启,实现被动爬取和审计。

  • Live passive crawl from Porxy (all traffic):被动爬虫 。 开启后在Target的站点地图中就可以看到了。
  • Live audit from Porxy (all traffic):审计
Snipaste_2023-05-21_02-12-44.png

2、创建新扫描(New scan)

Snipaste_2023-05-21_02-13-10.png

3、右键-Scan选项
可以从站点地图中添加,也可以从http history 中添加。

Target:Site map

有Scan下又有2个scan:

  • Passively scan this branch 初始扫描
  • Actively scan this branch 主动扫描
Snipaste_2023-05-21_02-13-47.png

HTTP history:

Snipaste_2023-05-21_02-14-14.png
被动扫描

在Dashboard控制台模块下,有关于爬虫和审计两个功能的设置:

  • Live passive crawl from Proxy:实时被动爬虫(探测路径)
  • Live audit from Proxy:实时审计(审计漏洞)
Snipaste_2023-05-21_02-14-58.png

当使用被动扫描时,Burp几乎不额外构造请求进行爬虫和扫描,它根据用户浏览网页进行常规请求,对已经存在的请求和响应进行简单分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生产环境的检测。一般来说,下列这些漏洞在被动模式中容易被检测出来:

  1. 提交的密码为未加密的明文(可用DVWA演示)
  2. 不安全的Cookie的属性,比如缺少的HttpOnly和安全标志
  3. cookie的范围缺失
  4. 跨域脚本包含和站点引用泄漏
  5. 表单值自动填充,尤其是密码
  6. SSL保护的内容缓存
  7. 目录列表
  8. 提交密码后应答延迟
  9. session令牌的不安全传输
  10. 敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏
  11. 不安全的ViewState的配置
  12. 错误或者不规范的Content-type指令

虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前面说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。

主动扫描

在Dashboard控制台模块下,点击New scan,进行扫描配置。

会遵循 robot 协议的。

Snipaste_2023-05-21_02-16-01.png

当使用主动扫描模式时,Burp 会向应用发送新的请求并通过payload验证漏洞。这种模式下的操作,会产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:

  1. 客户端的漏洞,像XSS、Http头注入、操作重定向;
  2. 服务端的漏洞,像SQL注入、命令行注入、文件遍历。

对于第一类漏洞,Burp在检测时,会提交一下input域,然后根据应答的数据进行解析。在检测过程中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人工测试,以达到检测漏洞的目的。 对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说SQL注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。Burp在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,以达到高准确性的漏洞扫描报告。

  • 扫描配置
    • Scan details 扫描细节
    Snipaste_2023-05-21_02-17-11.png
    Scan Type:扫描类型,分为 Crawl and audit 和 Crawl,即爬虫和审计,或者只爬虫。
    
    URLs to Scan:扫描目标URL
    
    Detailed scope configuration:详细的范围配置,通过 Included URL prefixes(包括URL前缀)和Excluded URL prefixes(不包括URL前缀)来配置扫描。
    
    Use advanced scope control:使用高级的范围控制,如果勾选,将配置Included URLs(包含的URL)和Excluded URLs(不包含的URL)来配置扫描。
    

    点击 Add,弹出配置窗口:

    Snipaste_2023-05-21_02-18-26.png
    Protocol:HTTP、HTTPS、Any 三个选项
    Host or IP range:输入正则表达式、IP范围或者留白
    Port:输入正则表达式或者留白
    File:输入正则表达式、IP范围或者留白
    
    • Scan configuration 扫描配置:保持默认。
    • Application login 应用登录:如果扫描过程中需要登录,用于配置 username 和 password。
    Snipaste_2023-05-21_02-19-27.png
    • Resource pool 资源池
    Snipaste_2023-05-21_02-19-57.png

    Create new resource pool 创建新的资源池

    1.Name:自定义
    2.Maximum concurret requests:最大并发请求,默认配置为 10
    3.Delay between request:请求之间延时
    4.add random variations:添加随机变化,请求和请求之间的间隔是随便变换的
    5.miliseconds:毫秒
    
  • 开始扫描

    1.点击New scan,在弹框中输入url

    Snipaste_2023-05-21_02-20-48.png

    2.Site map会展示该url的目录结构

    Snipaste_2023-05-21_02-21-11.png

    3.Dashboard会展示扫描的进度与问题总计

    • isuues:高中低和infomation 4个等级
    Snipaste_2023-05-21_02-21-35.png
导出扫描报告

1.在target->site map,选择某个url,右侧issues按ctrl+a全选,右键,点击Report selected issues

或在dashboard点View details在Issue activity中全选右键,点击Report selected issues

Snipaste_2023-05-21_02-22-13.png

2.选择报告格式
HTML:生成HTML格式的报告,以便在浏览器中打印或查看。
XML:生成XML格式的报告,适合导入其他工具或报告框架。

3.选择漏洞明细包含内容(保持默认配置)

问题背景 – 问题的标准描述,对于所有相同类型的问题都是相同的。
修复建议 – 标准的修复建议,对于所有相同类型的问题都是相同的。
参考内容 – 漏洞的补充说明。
问题详情 – 对于某些类型的问题,详情中包含有关特定问题的一些其他自定义信息,请注意某些可能适用于特定问题实例的详细信息。
修复细节 – 对于某些类型的问题,此处说明了进一步的修复细节,从这里也能看到问题的某些固定特征。
漏洞分类 – 基于"常见漏洞举例(Common Weakness Enumeration)"对漏洞做了简单的分类。
Snipaste_2023-05-21_02-23-31.png

4.请求消息和应答消息设置(保持默认配置)
以下选项可用于请求(requests)和响应(responses):
不包括任何消息 – 报告不包含任何有关HTTP的信息。
包含相关摘录 – 报告将工具内结果中突出显示的部分以及相关的HTTP信息包含在内。
包括完整 – 报告将包含完整的HTTP信息,可能包含与问题无关的部分。可以将每条消息限制为指定的
最大长度,以防止报告中呈现过大的消息而导致报告急剧膨胀。

Snipaste_2023-05-21_02-24-05.png

5.选择报告包含哪些漏洞(全选)

Snipaste_2023-05-21_02-24-24.png

6.指定报告存放位置、名称等属性
点击select file,选择路径,输入文件名称,例如:report.html,点击next,导出完成。(这一步记住,一定要加后缀名.html)

Snipaste_2023-05-21_02-25-05.png

Burp Intruder

Burp Intruder作为Burp Suite中一款功能极其强大的自动化测试工具,通常被系统安全渗透测试人员被使用在各种任务测试的场景中。本章我们主要学习的内容有:

  • Intruder使用场景和操作步骤
  • Payload类型与处理
  • Payload 位置和攻击类型
  • 可选项设置(Options)
  • Intruder 攻击和结果分析
Intruder使用场景和操作步骤

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

1. 标识符枚举:Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如,用户名,文件ID和账户号码。

2. 提取有用的数据:在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间的昵称和年龄。

3. 模糊测试:很多输入型的漏洞,如SQL注入,跨站脚本和文件路径遍历可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由于的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,可以通过设置Payload,通过Burp Intruder自动化地对Web应用程序进行模糊测试。

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

  1. 确认Burp Suite安装正确并正常启动,且完成了浏览器的代理设置。
  2. 进入Burp Proxy选项卡,关闭代理拦截功能。有没有这步都行
  3. 进行历史日志(History)子选项卡,查找可能存在问题的请求日志,并通过右击菜单,发送到Intruder。
Snipaste_2023-05-21_02-27-06.png
  1. 进入 Intruder 选项卡,打开Target和Positions子选项卡。这时,你会看到上一步发送过来的请求消息。
Snipaste_2023-05-21_02-27-49.png
  1. 因为我们了解到Burp Intruder攻击的基础是围绕刚刚发送过来的原始请求信息,在原始信息指定的位置上设置一定数量的攻击载荷Payload,通过Payload来发送请求获取应答消息。默认情况下,Burp Intruder会对请求参数和Cookie参数设置成Payload position,前缀添加 $ 缝合,如上图红色标注位置所示。当发送请求时,会将$标识的参数替换为Payload。
  2. 在Position界面的右边,有【Add $】、【Clear $】、【Auto $】、【Refresh】四个按钮,是用来控制请求消息中的参数在发送过程中是否被Payload替换,如果不想被替换,则选择此参数,点击【Clear $】,即将参数前缀$去掉。
  3. 当我们打开Payload子选项卡,选择Payload的生成或者选择策略,默认情况下选择“Simple list",当然你也可以通过下拉选择其他Payload类型或者手工添加。 接下来在Payload Options中加载字典。
Snipaste_2023-05-21_02-28-56.png
  1. 此时,我们再回到Position界面,检查一下要爆破的参数是否正确,确认无误后,在界面的右上角,点击【Start attack】,发起攻击。
Snipaste_2023-05-21_02-29-24.png
  1. 此时,Burp会自动打开一个新的界面,包含攻击执行的情况、Http状态码、长度等结果信息。
Snipaste_2023-05-21_02-29-53.png
  1. 我们可以选择其中的某一次通信信息,查看请求消息和应答消息的详细。
Snipaste_2023-05-21_02-30-23.png
  1. 很多时候,为了更好的标明应答消息中是否包含有我们需要的信息,通常在进行攻击前,会进行Options选项的相关配置,使用最多的是正则表达式匹配(Grep - Match)。
Snipaste_2023-05-21_02-30-42.png
  1. 同时,结果选项卡中所展示的列我们是可以进行指定的,我们可以在菜单Columns进行设置。
Snipaste_2023-05-21_02-31-07.png
  1. 最后,选择我们需要的列,点击【Save】按钮,对攻击结果进行保存。
Snipaste_2023-05-21_02-31-39.png
  1. 当然,保存之前我们也可以对保存的内容进行设置。
Snipaste_2023-05-21_02-31-59.png

以上这些,是Burp Intruder一次完成的操作步骤,在实际使用中,根据每一个人的使用习惯,会存在或多或少的变动。而每一个环节中涉及的更详细的配置,将在接下来的章节中做更细致的阐述。

遇到一个登录网页(账号+密码),通常怎么测试:

  • 测试账号有没有枚举
    • 输入一个不可能存在的账号,看看和存在账号的输出,通过提示不同来确定账号一定是存在的,那么就仅密码爆破就可以了
  • 测试有没有锁定策略
    • 有锁定次数就不能爆破了
  • 开始爆破

不能爆破的场景:

  • 账号有锁定机制
  • 有图形验证码,且正确有效。而像登录不成功就不更换图形验证码就不算有效的验证码。
  • 有短信验证码,且正确有效(4位纯数字的短信验证码可以爆破)
  • 在想要爆破的请求包中,存在其它变化的参数(token)
Payload类型与处理

在Burp Intruder的Payload选项卡中,有Payload集合的设置选项,包含了经常使用的Payload类型,共18种。

Snipaste_2023-05-21_02-33-55.png

他们分别是:

  • 简单列表(Simple list) ——最简单的Payload类型,通过配置一个字符串列表作为Payload,也可以手工添加字符串列表或从文件加载字符串列表。其设置界面如下图
Snipaste_2023-05-21_02-34-38.png

在此操作界面上,选择的Payload列表中,已经预定义了一组简单Payload列表,包括XSS脚本、CGI脚本、SQL注入脚本、数字、大写字母、小写字母、用户名、密码、表单域的字段名、IIS文件名和目录名等等,极大地方便了渗透测试人员的使用。

  • 运行时文件(Runtime file) ——指定文件,作为相对应Payload位置上的Payload列表。其设置界面如下图:
Snipaste_2023-05-21_02-35-16.png

当我们如上图所示,指定Payload type使用的类型为Runtime file时,下方的Payload Options将自动改变为文件选择按钮和输入框,当我们点击【select file】选择文件时,将弹出图中所示的对话框,选择指定的Payload文件。运行时,Burp Intruder将读取文件的每一行作为一个Payload。

  • 自定义迭代器(Custom iterator)——这是一款功能强大的Payload,它共有8个占位,每一个占位可以指定简单列表的Payload类型,然后根据占位的多少,与每一个简单列表的Payload进行笛卡尔积(集合相乘的结果),生成最终的Payload列表。例如,某个参数的值格式是username@@password,则设置此Payload的步骤是:

位置1,选择Usernames

Snipaste_2023-05-21_02-36-20.png

接着,指定位置2,输入值@@

Snipaste_2023-05-21_02-36-47.png

最后指定位置3,选择Passwords

Snipaste_2023-05-21_02-37-10.png

当我们开始攻击时,生成的Payload值如图所示

Snipaste_2023-05-21_02-37-38.png
  • 字符串替换(Character substitution)——顾名思义,此种Payload的类型是对预定义的字符串进行替换后生成新的Payload。比如说,预定义字符串为ABCD,按照下图的替换规则设置后,将对AB的值进行枚举后生成新的Payload。
Snipaste_2023-05-21_02-38-12.png

生成的Payload如下图所示,分别替换了上图中的a和b的值为4与8

Snipaste_2023-05-21_02-38-35.png
  • 大小写替换(Case modification)——对预定义的字符串,按照大小写规则,进行替换。比如说,预定义的字符串为Peter Wiener,则按照下图的设置后,会生成新的Payload。
Snipaste_2023-05-21_02-39-10.png

生成的Payload如下

Snipaste_2023-05-21_02-39-33.png

生成规则由上而下依次是:

No change(不改变,使用原始字符串)
To lower case(转为小写字母)
To upper case(转为大写字母)
To Propername(首字母大写,其他小写)
To ProperName(单词首字母大写,其他不改变)

在实际使用中,可以根据自己的使用规则进行勾选设置。

  • 字符块(Character blocks)——这种类型的Payload是指使用一个给出的输入字符串,根据指定设置产生指定大小的字符块,表现形式为生成指定长度的字符串。它通常是用来绕过应用防火墙(WAF)。
Snipaste_2023-05-21_02-40-33.png

Base string是指设置原始字符串,Min length是指Payload的最小长度,Max length是指Payload的最大长度,Step是指生成Payload时的步长。如上图的配置后,生成的Payload如下图所示:

Snipaste_2023-05-21_02-40-56.png
  • 数字类型(Number)——这种类型的Payload是指根据配置,生成一系列的数字作为Payload。它的设置界面如下:
Snipaste_2023-05-21_02-41-48.png

Type表示使用序列还是随机数,From表示从什么数字开始,To表示到什么数字截止,Step表示步长是多少。如果是随机数,则How many被激活,表示一共生成多少个随机数。Base表示数字使用十进制还是十六进制形式,Min integer digits表示最小的整数是多少,Max integer digits表示最大的整数是多少,如果是10进制,则Min fraction digits 表示小数点后最少几位数,Max fraction digits表示小数点后最多几位数。

  • 日期类型(Dates)——这种类型的Payload是指根据配置,生成一系列的日期。界面如下
Snipaste_2023-05-21_02-43-00.png

其设置选项比较简单,没有什么特别复杂的,不再赘述。至于日期格式,可以选择Burp自己提供的样例格式,也可以自定义。

  • 暴力字典(Brute forcer)——此类Payload生成包含一个指定的字符集的所有排列特定长度的有效载荷,通常用于枚举字典的生成,其设置界面如下:
Snipaste_2023-05-21_02-43-34.png

Character set 表示生成字典的数据集,从此数据集中抽取字符进行生成。Min length表示生成Payload的最小长度,Max length表示生成Payload的最大长度。

  • 空类型(Null payloads)——这种负载类型产生的Payload,其值是一个空字符串。在攻击时,需要同样的请求反复被执行,在没有任何修改原始请求的场景下此Payload是非常有用的。它可用于各种攻击,例如应用层Dos、或保持活会话令牌、资源竞争等。
Snipaste_2023-05-21_02-44-24.png

在配置Payload生成方式时,它有两个选项,我们可以指定生成(Generate)多少Payload,也可以设置为一直持续攻击(Continue indefinitely)

  • 字符扮演者(Character frobber)——这种类型的Payload的生成规律是:依次修改指定字符串在每个字符位置的值(不做特殊说明的情况下就是指十进制),每次都是在原字符上递增1个该字符的ASCII码。
Snipaste_2023-05-21_02-44-59.png

执行后生成的Payload如下图所示:

Snipaste_2023-05-21_02-45-19.png
  • 用户名生成器(Username generator)这种类型的Payload主要用于用户名和email帐号的自动生成,其设置界面如下图:
Snipaste_2023-05-21_02-45-49.png

如上图所示,我设置了原始值为magedu,然后执行此Payload生成器,其生成的Payload值如图所示

Snipaste_2023-05-21_02-46-33.png
Payload位置和攻击类型

首先我们来看看Payload位置(Payload positions)选项卡的设置界面:

Snipaste_2023-05-21_02-47-17.png

从上图中我们可以看出,Payload位置的设置是基于Http请求的原始消息作为母板,使用一对 § 字符来标记出Payload的位置,在这两个号直接包含了母板文本内容。 当我们已经把一个Payload在请求消息的特殊位置上时标明后,发起攻击时,Burp Intruder 就把一个Payload值放置到给出的特殊位置上,替换 § 符号标示的整个位置。如上图中的参数id后面的 § 符号之间的标明的是Payload位置1,name后面的 § 符号之间标明的是Payload位置2,这个值对应于Payload设置中的Payload set的值。 我们可以在消息编辑器中间对Payload位置进行编辑,它主要是由右侧的四个按钮来控制的。

- 【Add §】——在当前光标的位置添加一个Payload位置标志
- 【Clear §】——清除所有Payload位置标志或者清除选中的Payload位置标志
- 【Auto §】——对消息内容中可能需要标志的参数做一个猜测,标志为Payload位置,自动设置完
   之后再做人工的选择,确定哪些位置是需要传入Payload的。目前Burp支持自动选择的参数类型有:
   1.URL请求参数
   2.Body参数
   3.cookie参数
   4.复合型参数属性,比如文件上传时候的文件名
   5.XML数据
   6.JSON数据
   虽然Burp默认是支持自动标志这些类型的参数作为Payload位置,但如果是针对于像XML或JSON的节点属性值的,还是需要手工指定。
- 【Refresh】——刷新消息内容中带有颜色的部分

在消息编辑器的上方,有一个下拉选择框:Attack Type(攻击类型)。Burp Intruder支持使用 Payload进行多种方式的模拟攻击,目前有以下四种:

  • 狙击手模式(Sniper)——它使用一组Payload集合,依次替换Payload位置上(一次攻击只能使用一个Payload位置)被 § 标志的文本,没有被 § 标志的文本将不受影响,对服务器端进行请求,通常用于测试请求参数是否存在漏洞。
  • 攻城锤模式(Battering ram)——它使用单一的Payload集合,依次替换Payload位置上所有被 §标志的文本,而没有被 § 标志的文本将不受影响,对服务器端进行请求。与狙击手模式的区别在于,如果有多个参数且都为Payload位置标志时,使用的Payload值是相同的,而狙击手模式只能使用一个Payload位置标志。
  • 交叉模式(Pitchfork)——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
  • 集束炸弹模式(Cluster bomb) 它可以使用多组Payload集合,在每一个不同的Payload标志位

置上(最多20个),依次遍历所有的Payload。它与交叉模式的主要区别在于,执行的Payload数据是Payload组的乘积。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起四次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为A和D,第三次使用的Payload分别为B和C,第四次使用的Payload分别为B和D。

可选项设置(Options)

可选项设置主要包括请求消息头设置、请求引擎设置、攻击结果设置、grep match、grep extract、grep payloads以及重定向设置。在使用中,可以在攻击前进行设置,也可以在攻击过程中做这些选项的调整。

  • 请求消息头设置(Request Headers)——这个设置主要用来控制请求消息的头部信息,它由Update Content-Length header和Set Connection: close两个选项组成。其中Update Content-Length header如果被选中,Burp Intruder会在每个请求中添加或更新Content-Length头作为该次请求的HTTP体长度参数的正确值。这个功能通常是应用在向HTTP请求体中插入可变长度的Payload时,如果没有指定正确的值,则目标服务器可能会返回错误,比如可能会对一个不完整的请求做出响应,或者可能会无限期的等待请求继续接收数据。Set Connection: close如果被选中,表示Burp Intruder在每个请求消息中添加或更新值为“关闭”的连接头,这将更迅速的执行。在某些情况下(当服务器本身并不返回一个有效的Content-Length或Transfer-Encoding头),选中此选项可能允许攻击。
Snipaste_2023-05-21_02-56-05.png
  • 请求引擎设置(Request Engine)——这个设置主要用来控制Burp Intruder攻击,合理地使用这些参数能更加有效地完成攻击过程。它有如下参数:Number of threads并发线程数,Number of retries on network failure 网络失败时候重试次数,Pause before retry重试前的暂停时间间隔(毫秒),Throttle between requests 请求延时(毫秒),Start time开始时间,启动攻击之后多久才开始执行。
Snipaste_2023-05-21_02-57-12.png
  • 攻击结果设置(Attack Results)——这个设置主要用来控制从攻击结果中抓取哪些信息。它的参数有:Store requests / responses 保存请求/应答消息,Make unmodified baseline request 记录请求母板的消息内容,Use denial-of-service mode使用Dos方式,Store full

payloads存储所有的Payload值。

Snipaste_2023-05-21_02-57-50.png
  • Grep Match——这个设置主要用来从响应消息中提取结果项,如果匹配,则在攻击结果中添加的新列中标明,便于排序和数据提取。比如说,在密码猜测攻击,扫描诸如“密码不正确”或“登录成功”,可以找到成功的登录;在测试SQL注入漏洞,扫描包含“ODBC”,“错误”等消息可以识别脆弱的参数。
Snipaste_2023-05-21_02-58-49.png

其选项有Match type表示匹配简单的字符串还是正则表达式,Case sensitive match是否大小写敏感,Exclude HTTP headers匹配的时候,是否包含http消息头。

  • 重定向(Redirections)——这些设置主要是用来控制执行攻击时Burp如何处理重定向,在实际使用中往往是必须遵循重定向,才能实现你的攻击目的。例如,在密码猜测攻击,每次尝试的结果可能是密码错误会重定向响应到一个错误消息提示页面,如果密码正确会重定向到用户中心的首页。
Snipaste_2023-05-21_03-00-47.png
Intruder 攻击和结果分析

一次攻击的发起,通常有两种方式。一种是你在Burp Intruder里设置了Target,Positions,Payloadsand Options,然后点击【Start attack】启动攻击;另一种是你打开一个之前保存的预攻击文件,然后点击【Start attack】启动攻击。无论是哪种方式的攻击发起,Burp都将弹出攻击结果界面。在攻击的过程中,你也可以修改攻击配置,或者做其他的操作。攻击结果的界面如下图所示:

Snipaste_2023-05-21_03-01-46.png

从上图我们可以看出,其界面主要有菜单区、过滤器、Payload执行结果消息记录区、请求/响应消息区四大部分组成。

  • 菜单区——包含Attack菜单、Save菜单、Columns菜单。 Attack菜单主要用来控制攻击行为的,你可以暂停攻击(pause)、恢复攻击(resume)、再次攻击(repeat)。Save菜单主要用来保存攻击的各种数据,Attack 保存当前攻击的副本,下次可以从此文件进行再次攻击;Resultstable保存攻击的结果列表,相当于图中的Payload执行结果消息记录区数据,当然你可以选择行和列进行保存,只导出你需要的数据;Server responses 保存所有的服务器响应消息;Attackconfiguration保存当前的攻击配置信息。 Columns菜单主要用来控制消息记录区的显示列,如果某个列被选中,则在Payload执行结果消息记录区显示,反之则不显示。
  • 过滤器——可以通过查询条件、服务器响应的状态码、注释过Payload执行结果消息记录区的信息 进行过滤。
  • Payload执行结果消息记录区,又称结果列表(Results Table),记录Payload执行时请求和响应的所有信息,它包含的列有:
请求序列——显示请求的序列号,如果配置了记录未修改的请求消息母板,则会在第一个进行记录。

Payload位置——狙击手模式下会记录 Payload值——如果有多个Payload,则存在多个列

HTTP 状态码——服务器响应状态码

请求时间——执行攻击的时间

响应时间——开始接受到响应时间,单位为毫秒。

响应完成时间——响应完成的时间,单位为毫秒。

网络错误——Payload执行时是否发生网络问题

超时情况——等待应答响应过程中,是否发生网络超时

长度——响应消息的长度

Cookie——任何的Cookie信息

重定向——如果配置了重定向,则显示

注释——消息记录的注释信息

请求/响应消息区——参考Proxy章节的相关叙述。

在对攻击结果的分析中,你可以通过单击任一列标题(升序排序,降序排序和未排序)重新排序表的内容。有效的应答通常可以通过以下存在差异的内容进行判断:

1、不同的HTTP状态代码
2、不同长度的应答
3、存在或不存在某些表达式
4、错误或超时的发生
5、用来接收或完成响应时间的差异

比如说,在URL路径扫描过程中,对不存在的资源的请求可能会返回“404未找到”的响应,或正确的URL会反馈的“200 OK”响应。或者在密码猜测攻击,失败的登录尝试可能会产生包含“登录失败”、“200 OK”等关键字的响应,而成功的登录可能会生成“302 XXX”的响应,或不同的“200 OK”响应页面。

每一个渗透测试人员,对Burp Intruder 攻击结果的分析方式可能会存在差异,这主要源于个人水平的不同和经验的不同。在实战中,只有慢慢尝试、积累(经验、口令字典),才能快速的对攻击结果进行分析从而获取自己关注的重要信息。

Burp Repeater

Burp Repeater作为Burp Suite中一款手工验证HTTP消息的测试工具, 通常用于多次重放请求获取响应和手动修改请求消息后对服务端返回的响应进行分析 。本章我们主要学习的内容有:

  • Repeater的使用
  • 可选项设置(Options)
Repeater的使用

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

Snipaste_2023-05-21_03-08-48.png

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

Snipaste_2023-05-21_03-09-22.png

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

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

可选项设置(Options)

与Burp其他工具的设置不同,Repeater的可选项设置菜单位于整个界面顶部的菜单栏中,如图所示:

Snipaste_2023-05-21_03-11-02.png

其设置主要包括以下内容:

  • 更新Content-Length:这个选项是用于控制Burp是否自动更新请求消息头中的Content-Length。
  • 解压和压缩(Unpack gzip / deflate ) 这个选项主要用于控制Burp是否自动解压或压缩服务器端响应的内容。
  • 跳转控制(Follow redirections) 这个选项主要用于控制Burp是否自动跟随服务器端作请求跳转,比如服务端返回状态码为302,是否跟着应答跳转到302指向的url地址。 它有4个选项,分别是永不跳转(Never),站内跳转(On-site only )、目标域内跳转(In-scope only)、始终跳转(Always),其中永不跳转、始终跳转比较好理解,站内跳转是指当前的同一站点内跳转;目标域跳转是指target scope中配置的域可以跳转。
  • 跳转中处理Cookie(Process cookies in redirections ) 这个选项如果选中,则在跳转过程中设置的Cookie信息,将会被带到跳转指向的URL页面,可以进行提交。
  • 视图控制(View) 这个选项是用来控制Repeater的视图布局。
  • 其他操作(Action) 通过子菜单方式,指向Burp的其他工具组件中。

Burp Decoder

Burp Decoder的功能比较简单,作为Burp Suite中一款编码解码工具,它能对原始数据进行各种编码格式和散列的转换。其界面如下图,主要由输入域、输出域、编码解码选项三大部分组成。

Snipaste_2023-05-21_03-13-12.png

输入域即输入需要解码的原始数据,此处可以直接填写或粘贴,也可以通过其他Burp工具的上下文菜单中【Send to Decoder】;输出域即对输入域进行解码的结果显示出来,无论是输入域还是输出域都支持文本与Hex两种格式。其中编码解码选项中,由解码选项(Decode as)、编码选项(Encode as)、散列(Hash)三个构成。实际使用中,可以根据场景的需要进行设置。对于编码解码选项,目前支持URL、HTML、Base64、ASCII、16进制、8进制、2进制、GZIP共八种形式的格式转换,Hash散列支持SHA、SHA-224、SHA-256、SHA-384、SHA-512、MD2、MD5格式的转换,更重要的是,对于同一个数据,我们可以在Decoder的界面,进行多次编码解码的转换。如下图所示:

Snipaste_2023-05-21_03-13-53.png

Burp Comparer

Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别。使用中的场景可能是:

1、枚举用户名过程中,对比分析登陆成功和失败时,服务器端反馈结果的区别。
2、使用 Intruder 进行攻击时,对于不同的服务器端响应,可以很快的分析出两次响应的区别在哪里。
3、进行SQL注入的盲注测试时,比较两次响应消息的差异,判断响应结果与注入条件的关联关系。

其界面如下图:

Snipaste_2023-05-21_03-14-52.png

对于Comparer的使用,主要有两个环节组成,先是数据加载,然后是差异分析。 Comparer数据加载的方式常用的有:从其他Burp工具通过上下文菜单转发过来、直接粘贴、从文件加载三种方式。当加载完毕后,如果你选择了两次不同的请求或应答消息,则下方的比较按钮将被激活,可以选择文本比较或者字节比较。如下图:

Snipaste_2023-05-21_03-15-24.png

如果点击了【words】或者【bytes】,则进入比对界面,页面自动通过背景颜色显示数据的差异。如下图:

Snipaste_2023-05-21_03-15-56.png

其中,文本比较(words)是指通过文本的方式,比如说以HTML的方式,比较两次内容的差异;而字节比较(bytes)是指通过16进制的形式,比较两次内容的差异。如下图,注意不同内容的颜色标注。

Snipaste_2023-05-21_03-16-32.png

Burp Suite应用商店

Burp在软件中提供了支持第三方拓展插件的功能,方便使用者编写自定义插件或从插件商店中安装拓展插件。Burp扩展程序可以以多种方式支持自定义Burp的行为,例如:修改HTTP请求和响应,自定义UI,添加自定义扫描程序检查以及访问关键运行时信息,包括代理历史记录,目标站点地图和扫描程序问题等。本章讲述的主要内容有:

  • 应用商店插件的安装使用(BApp Store)
  • 管理和加载Burp 插件(Extension)
  • 其他选项设置(Options)
应用商店插件的安装使用

在Burp Extender 面板中,有一个BApp Store模块,这就是Burp的应用商店,内容是提供各种Burp的插件。 默认情况下,当你点击【BApp Store】模块时,界面列表会显示插件明细,若你的网络环境是通过代理访问外网的,则需要在【User options】->【Connections】->【Upstream Proxy Servers】进行设置,具体如下图所示:

Snipaste_2023-05-21_03-17-41.png

其中代理服务器的host和port为你本地的网络环境访问外网的代理主机和端口。如果你的网络设置没有问题,则应用商店的界面显示大体如下:

Snipaste_2023-05-21_03-18-00.png

从图中我们可以看出,左边为各个插件的应用列表,当选中某个插件后,右侧显示的为该插件的描述信息和安装信息。如果我们需要使用某个插件,则点击右侧下方的【install】按钮,进行安装。

[[Snipaste_2023-05-21_03-18-44.png

此时,安装按钮置为灰色,同时显示为【installing】,右下角也显示安装中,如上图。安装完成后,界面会显示重新安装【Reinstall】和插件评分按钮【Submit rating】,作为插件商店的用户推荐。

Snipaste_2023-05-21_03-19-14.png

安装完毕后,在Burp Extender的Extension页面中,会自动显示已加载的插件列表。通过插件列表的管理,我们可以对插件进行后期的维护。

Snipaste_2023-05-21_03-19-42.png

当然,除了从应用商店自动安装插件外,我们也可以下载插件,进行手工安装。如下图:

Snipaste_2023-05-21_03-20-20.png

当我们点击图中1处的手工安装按钮,则弹出插件安装文件存储的盘符,选择指定的插件文件,点击打开即可进行安装。

管理和加载Burp 插件(Extension)

从上一节我们已经了解到,安装完成的插件,都会显示在插件列表中。

Snipaste_2023-05-21_03-21-11.png

如果我们想对某个插件的配置信息进行编辑,则如上图中所示,选中插件,其下方的【Details】标签页会显示插件的拓展信息,如:拓展的插件类型(java/Python/Ruby)、插件的文件名、存储的位置。

除了【Details】标签页外,【Output】和【Errors】两个页面分别可以设置此插件的标准输出和错误信息输出信息。
Snipaste_2023-05-21_03-22-02.png

从上图中我们可以看出,日志信息的输出有三种方式:
a)系统控制台输
b)存储到指定的文件中
c)Burp的界面输出

默认情况下,会选择Burp的界面输出。在实际应用中,我们可以根据自己的需要,对日志的存储方式进行调整。

扫描工具

主要内容:

  • 长亭科技 Xray 正向及反向漏洞检测
  • 漏洞扫描原理及 X-Scan 使用
  • Web漏洞扫描 AppScan 安装配置及扫描
  • Web漏洞扫描 AWVS 安装配置及扫描
  • 系统漏洞扫描-Nessus使用,漏洞扫描器评估方案
  • 完成一个企业漏洞扫描报告编写

应用漏洞:web漏洞,扫描目标是URL
主机漏洞:操作系统、数据库、中间件、网络协议,扫描目标是IP

X-Scan

下载地址: https://www.onlinedown.net/soft/1498.htm

X-Scan是国内最著名的综合扫描器之一,它完全免费,是不需要安装的绿色软件、界面支持中文和英文两种语言、包括图形界面和命令行方式。主要由国内著名的民间黑客组织“安全焦点”完成,从2000年的内部测试版X-Scan V0.2到目前的新版本X-Scan 3.3-cn都凝聚了国内众多黑客的心血。最值得一提的是,X-Scan把扫描报告和安全焦点网站相连接,对扫描到的每个漏洞进行“风险等级”评估,并提供漏洞描述、漏洞溢出程序,方便网管测试、修补漏洞。

X-Scan扫描器采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,xscan软件还支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程操作系统类型及版本,标准端口状态及端口BANNER信息,CGI漏洞,IIS漏洞,RPC漏洞,SQL-SERVER、FTP-SERVER、SMTP-SERVER、POP3-SERVER、NT-SERVER弱口令用户,NT服务器NETBIOS信息等。扫描结果保存在/log/目录中,index_*.htm为扫描结果索引文件。对于一些已知漏洞,我们给出了相应的漏洞描述、利用程序及解决方案,其它漏洞资料正在进一步整理完善中,您也可以通过作者网站的“安全文献”和“漏洞引擎”栏目查阅相关说明。

X-Scan扫描器安装说明:
华军软件园提供的X-Scan为3.3 简体中文版,由于软件功能的特殊性可能存在报毒现象,请大家自行选择,解压后直接运行“xscan_gui.exe”即可启动。

Win7无法运行X-scan解决办法:
X-scan在XP运行是没任何问题的,如果在win7系统出现了npptools.dll丢失的情况,那么下载“npptools.dll”,然后将其放置到X-scan文件夹下即可,注意一定要你X-scan的文件夹,不是system32文件夹。

X-Scan扫描器使用教程

参考:https://www.onlinedown.net/soft/1498.htm

对于老操作系统适用。

AppScan

入门

安全是为了保护您的宝贵资产。您的组织拥有的一些最重要的资产是以信息的形式存在的,例如知识产权、战略计划和客户数据。保护这些信息对于您的组织继续运营、保持竞争力和满足监管要求至关重要。

介绍

AppScan on Cloud ( ASoC ) 是一种 SaaS 解决方案(Software-as-a-service:软件即服务),可满足所有应用程序安全测试需求。它将Security的所有测试功能整合到一个服务中,为所有技术提供统一的体验。ASoC可以使用动态和静态技术扫描Web、移动和桌面应用程序。

  • 动态 (DAST) 分析 黑盒扫描

ASoC为生产、登台和开发环境的 Web 应用程序执行安全扫描。对于开发环境,它借助私有站点扫描技术来扫描开放 Internet 无法访问的应用程序。请参阅动态 (DAST) 扫描

  • 静态 (SAST) 分析 白盒扫描

ASoC对 Web 和桌面应用程序执行安全扫描。其静态分析包括智能发现分析 (IFA) 和智能代码分析(ICA)。IFA 可以显着减少对安全发现进行分类的手动工作,使其仅关注积极的、高价值的问题。ICA 有助于减少或完全避免其他技术所需的复杂配置,自动提高扫描精度。请参见静态 (SAST) 扫描

  • 交互式 (IAST) 分析

使用安装在应用程序上的代理,ASoC通过监控所有合法和恶意的交互,在运行期间识别应用程序中的安全漏洞。该过程是“被动的”,即 IAST 不发送自己的测试,因此可以无限期运行。请参阅交互式 (IAST) 监控

  • 开源分析

ASoC识别应用程序中使用的开源软件包,报告具有已知漏洞的软件包,并提供补救建议。开源测试可以单独运行,也可以作为静态扫描的一部分运行。请参阅开源测试

ASoC具有启用其所有功能的 Web UI。但是,也可以使用 IDE 和自动化系统插件,因此如果不需要,则不需要与服务本身进行交互。例如,开发人员可以留在自己的集成开发环境 (IDE) 中,而无需在 IDE 和浏览器之间来回切换。IDE 插件还支持使用 Web UI 无法进行的代码交互。

为了补充其功能,ASoC还公开了一组全面的 REST API,用于驱动ASoC 中的操作。这使得ASoC非常适合集成到自动化环境中。客户可以使用 REST API 组成自己的工作流,而不是绑定到ASoC工作流。

ASoC有助于安全策略合规性。通过使用预定义的策略或定义自定义策略,可以轻松识别哪些应用程序不合规并需要注意。通过根据定义的策略进行过滤,可以确定问题修复的优先级。根据特定策略进行过滤有助于优先修复针对特定合规性的修复,而不是迷失在问题的海洋中。

ASoC还允许您运行个人扫描,它出现在应用程序的扫描列表中,但其扫描数据不会与应用程序的其余部分结果合并。这使开发人员能够运行扫描,而不会在整个应用程序数据中发现出现的问题。因此,在将代码推送到主代码流之前,可以检查个人扫描的结果是否存在关键问题。

ASoC有助于利用所有扫描功能来扫描多种类型的应用程序、管理整个组织的安全合规性以及自动化安全扫描操作。

注册及使用

试用
注册账户
电子邮箱验证申请免费试用
申请免费试用
点击 OK, 跳转到试用界面进入主页
创建扫描
DAST
扫描演示站点扫描结果
SAST
下载演示文件并上传扫描结果域验证

xray

Xray安装及使用

一款半开源的功能强大的安全评估工具,支持主动扫描和被动扫描。

使用文档: https://docs.xray.cool/
下载地址: https://github.com/chaitin/xray/releases https://download.xray.cool/

注意:xray 不开源,直接下载构建的二进制文件即可,仓库内主要为社区贡献的 poc,每次 xray 发布将自动打包。

基础爬虫模式进行扫描(主动扫描)

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

  • xray 的基础爬虫不能处理 js 渲染的页面,如果需要此功能,参考其它版本
xray webscan --basic-crawler http://testphp.vulnweb.com --html-output vuln.html

打开 vuln.html 查看扫描报告

第一次运行会生成一些配置文件,再次扫描就行。

代理模式进行扫描(被动扫描)

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

不同系统安装证书: https://docs.xray.cool/#/tutorial/webscan_proxy

1.使用命令生成证书

xray genca

2.需要在本机和浏览器中分别安装证书。本机安装直接点击证书进行安装即可,浏览器选择右上角 - 设置选项

3.选择 隐私与安全-查看证书-导入 对应的证书 ca.crt
4.设置代理 `vim config.yaml` 配置要监听的地址,默认监听所有地址

  • mitm 中 restriction 中 hostname_allowed 增加 xxx.com

5.浏览器设置代理
浏览器中选择扩展->寻找更多附加组件-> 搜索 FoxyProxy
FoxyProxy Standard 插件 安装地址:https://addons.mozilla.org/zh-CN/firefox/addon/foxyproxy-standard/

FoxyProxy 配置

1.点击添加按钮
2.设置转发地址为 127.0.0.1 , 端口为 7777
3.开启代理
选择刚才配置好的 xray

开启xray 被动扫描

xray webscan --listen 127.0.0.1:7777 --html-output dvwa-vul.html

运行 DVWA

docker run -d --name dvwa -p 8080:80 -p 33060:3306 sagikazarmark/dvwa

在DVWA中进行操作和访问,之后打开 dvwa-vul.html 查看漏洞

流量走向

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

         foxyproxy     [ 配置文件中的指定地址 ]
本地浏览器 ---->    Xray ----> 服务器
快速使用

在使用之前,请务必阅读并同意 License 文件中的条款,否则请勿安装使用本工具。
License: https://github.com/chaitin/xray/blob/master/LICENSE.md

  1. 使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描
xray webscan --basic-crawler http://example.com --html-output vuln.html
  1. 使用 HTTP 代理进行被动扫描
xray webscan --listen 127.0.0.1:7777 --html-output proxy.html

设置浏览器 http 代理为 http://127.0.0.1:7777 ,就可以自动分析代理流量并扫描。

浏览器 -> xray

1. Foxy proxy配置:
   1) 代理IP地址:xray所在的IP;
   2) 端口: xray监听端口
2. xray webscan -- listen 127.0.0.1:7777 --html-output proxy.html
3. 浏览器导入 xray 证书
4. 配置要扫描的域名或IP
  1. 只扫描单个url,不使用爬虫
xray webscan --url http://example.com/?a=b --html-output single-url.html
  1. 手动指定本次运行的插件

默认情况下,将会启用所有内置插件,可以使用下列命令指定本次扫描启用的插件。

xray webscan --plugins cmd-injection,sqldet --url http://example.com
xray webscan --plugins cmd-injection,sqldet --listen 127.0.0.1:7777
  1. 指定输出文件的格式

可以指定将本次扫描的漏洞信息输出到某个文件中:

xray webscan --url http://example.com/?a=b \
--text-output result.txt --json-output result.json --html-output report.html

报告样例:https://docs.xray.cool/assets/report_example.html

其他用法请阅读文档: https://docs.xray.cool

与 Burp 联动

官方文档:https://docs.xray.cool/#/scenario/burp

在实际测试过程中,除了被动扫描,也时常需要手工测试。这里使用 Burp 的原生功能与 xray 建立起一个多层代理,让流量从 Burp 转发到 xray 中。
1.首先 xray 建立起 webscan 的监听

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

2.burp配置
仅http

  • 打开 Proxy 标签页,在 Options 中找到 Proxy Listeners,Edit 编辑当前监听
  • 打开 Request handing 配置代理转发,host 为 xray 地址,port 为 xray 端口,OK 完成

http/https

  • 打开 User options 标签页,然后找到 Upstream Proxy Servers 设置。
  • 点击 Add 添加上游代理以及作用域,Destination host可使用通配符*,如*baidu.com*,proxy host port 填写 xray 地址端口
  • 重新打开xray,xray webscan – listen 127.0.0.1:7777 –html-output proxy-https.html

3.浏览器开启burp代理,访问网站测试。

  • burp 和 xray 为什么要联动

    可以绕过 waf,brup 可以修改请求,一条请求数据很大时,在读到漏洞 poc 之前,有很大无用数据,waf为保证业务稳定会放行。

AWVS

AWVS安装及使用-应用漏洞扫描器

收录的漏洞比xray多。xray 支持用户参与进产品中。

使用docker安装

启动镜像

docker pull xiaomimi8/awvs14-log4j-2022

docker run -it -d -p 13443:3443 xiaomimi8/awvs14-log4j-2022

访问地址:https://your_ip:13443/

登录用户名密码
用户名:[email protected]
密码:Admin123
AWVS版本:211215172

发起扫描
  • 转到“目标”页面以配置要扫描的新网站
  • 地址中输入扫描地址,如dvwa站点 http://124.222.171.19:8081/ , 点击保存
  • Business Criticality 选择优先级最高的 critical;Scan type 选择全量扫描Full Scan
  • 点击"扫描","创建扫描"
  • 扫描完成后,生成报告

选项的说明:

  • Business Criticality:严重最优先扫描
  • Scan Speed: 并发量高低
  • Site Login:一般不用,可用会插入脏数据
  • Scan Type:扫描类型,默认Full Scan 全量扫描。
  • Schedule: Future Scan(定时扫描),Instant(一直扫描)
添加自定义模板

找到"扫描配置文件",选择"添加新配置文件",起个名字。下次在扫描时就可以选择自定义的配置文件了。

Nessus

Nessus是一款C/S架构的漏洞扫描器,主要用来进行主机层面的漏洞扫描,不仅功能全面,而且还可以实时更新漏洞库。

优缺点

  • 优点:世界流行、有完整的漏扫服务、可随时更新漏洞库
  • 缺点:需要付费

Nessus 扫描原理

探测主机:确认扫描目标是否在线
扫描端口:获取目标的信息,如开放端口号、对外提供的服务名称、使用版本、操作系统类型等
漏洞攻击:根据扫描端口获取的信息,使用漏洞模块,针对性的进行攻击,从而判断是否存在漏洞

Nessus 安装及使用-主机漏洞扫描工具

市面上最好用的免费扫描器,免费最多支持16个ip,用尽后重新安装。

  • 首先需要在官网获取激活码

Nessus获取激活码:https://zh-cn.tenable.com/products/nessus/activation-code?tns_redirect=true

  • 之后进入下载页面选择对应的系统版本进行下载

Nessus下载链接:https://www.tenable.com/downloads/nessus?loginAttempted=true

安装过程

以Windows为例,下载以后是一个exe文件,双击即可安装。

激活过程
  • 选择 Connect via SSL
  • 选择 Continue,注意不勾 Register Offline
  • 选择 Register for Nessus Essentials 输入之前申请的激活码
  • 设置用户名密码
  • 等待下载插件(墙&插件大),时间比较长,有些需要翻墙
  • 有个圆圈在转在做自我检查,不用管,已经可以扫描了
  • 登录
  • 添加扫描目标
启动服务

访问地址: https://localhost:8834

Mac OS X

  1. 导航到 系统偏好设置 。
  2. 点击 按钮。
  3. 点击 按钮。
  4. 输入您的用户名和密码。
  5. 要停止 Nessus 服务,请单击 停止 Nessus 按钮。-或者- 要启动 Nessus 服务,请单击 启动 Nessus 按钮。

Mac OS X Command Line Operation

# Start
launchctl load -w /Library/LaunchDaemons/com.tenablesecurity.nessusd.plist
# Stop
launchctl unload -w /Library/LaunchDaemons/com.tenablesecurity.nessusd.plist

Windows

  1. 导航到 服务
  2. 名称 列中,单击 Tenable Nessus 。
  3. 要停止 Nessus 服务,请右键单击 Tenable Nessus ,然后单击 停止 。

-或者-
要重新启动 Nessus 服务,请右键单击 Tenable Nessus ,然后单击 启动 。

Start or Stop Windows Command Line Operation
Start C:\Windows\system32>net start "Tenable Nessus"
Stop C:\Windows\system32>net stop "Tenable Nessus"

Linux
使用以下命令:

#Start or Stop Linux Command Line Operation

# RedHat, CentOS, and Oracle Linux

Start # /sbin/service nessusd start
Stop # /sbin/service nessusd stop

# SUSE
Start # /etc/rc.d/nessusd start
Stop # /etc/rc.d/nessusd stop

# FreeBSD
Start # service nessusd start
Stop # service nessusd stop

# Debian, Kali, and Ubuntu
Start # /etc/init.d/nessusd start
Stop # /etc/init.d/nessusd stop

官方文档: https://docs.tenable.com/nessus/10_0/Content/Scans.htm

开始扫描
  • 找到 My Scan 点击 New Scan
  • 选择 Advanced Scan , Setting 中 选择
    • BASIC
      • general扫描,Targets 写扫描地址,如 124.222.171.19
    • DISCOVERY
      • host Discovery 中取消 ping 扫描,因为有的主机是禁 ping 的。
      • port scanning 中 range为全端口扫描 1-65535,默认 default 常用端口
  • Save 后 Launch 开始扫描

漏洞扫描器使用

主机漏洞扫描器的扫描原理:
  • 原理扫描:准确率高,但是可能会影响系统
  • 版本扫描:准确率低,但是不会影响系统
扫描前的准备工作

基本信息

  • 确认扫描时间
  • 确定扫描方式(探测版本、发送POC)
  • 确定任务类型(特定漏洞扫描、网段扫描、端口服务扫描)

物理条件

  • 网络环境
  • 接入点
  • 配合人员(系统管理员、机房管理员等)

风险提示与告知

  • 占用部分带宽
  • 触发安全防护产品的告警
  • 可能会影响业务稳定性,甚至造成宕机
  • 网段扫描可能涉及未知资产,存在一定业务风险
扫描实施

检查工作

  • 严格按照指定的扫描地址进行配置,避免发生IP地址冲突问题
  • 地址配置完成后,先进行网络可达性的测试(如windows系统使用ping命令),确保网络可达

开始扫描

  • 如果扫描资产数量庞大,可以分批建立和下发任务,避免出现扫描工具卡顿等意外情况
  • 根据前期收集到的信息,排除先前扫描出现异常的资产
  • 可以先扫描1-2个地址,进行网络承载、路由路通的测试
  • 扫描过程中提醒配合人员(如系统管理员)全程关注系统运行情况,一旦出现异常则立即停止扫描,配合进行处置和恢复
扫描收尾工作
  • 扫描任务结束后,可能会出现一些异常现象,具体情况及排查思路如下:
  • 扫描结果无明显漏洞:检查是否存在低危漏洞,若存在,则扫描结果应该准确;若不存在,则可能是被中间的防护设备所拦截
  • 扫描资产减少:网络不稳定、资产未存活、网络不可达都可能导致,可以使用ping命令单独测试网络可达性
  • 扫描任务失败:可能是中间存在防护设备,也有可能是工具故障
  • 扫描进度卡死:可能是中间存在防护设备,也有可能是工具故障

扫描业务场景与漏洞闭环

撰写企业级扫描报告

思考一下
撰写一份企业级扫描报告的难点是什么?
是不知道报告怎么写吗?
还是无法输出一份有效的扫描报告来推动漏洞加固闭环?

扫描器导出的扫描报告都比较好了,难点在于划分漏洞的责任归属完成漏洞修复闭环

扫描业务场景

场景:A公司花钱请B公司开发一套业务系统,开发流程如下:A公司提供服务器,按照开发要求,A公司运维人员在服务器上提前安装了基础纯净的操作系统;B公司开发人员按照需求开发业务系统,开发过程中用到了各类中间件、数据库等内容,开发测试工作完成后,部署在A公司预先准备好的服务器上。业务系统正式上线前,A公司又花钱请了C公司进行安全测试,发现系统存在漏洞。漏洞确认后,A公司提出,既然漏洞是安全人员发现的,就继续交由安全人员来进行修复。请问:A公司提出的请求是否合理?

人员:A公司-运维人员;B公司-开发人员;C公司-安全人员

前端漏洞:

  • 源代码属于商业机密,不应该暴露给安全人员
  • 系统非安全人员开发

后端漏洞:

  • 版本信息、配置信息的漏洞,账号密码是敏感信息,不能给安全人员操作权限

风险点:

  • 打补丁、改配置可能给业务带来影响,不应该给安全人员操作
撰写企业级扫描报告

扫描器导出的扫描报告都比较好了,难点在于划分漏洞的责任归属完成漏洞修复闭环

比如:增加负责人、是否能够修复、修复时间、备注

指导进行漏洞加固

从漏洞本身出发

  • 升级、打补丁
  • 卸载相关中间件或软件
  • 其他临时加固措施

从已有安全措施出发

  • 在主机侧给需要的业务开放白名单
  • 在主机侧设置黑名单
  • 通过防火墙设置策略,可设置至端口级