Post

BurpSuite

BurpSuite

BurpSuite

BurpSuite简介

Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

BurpSuite2021安装及配置

JDK选择及配置

选择

BurpSuite 1.7.x ——Java 8

BurpSuite 2021——java 11

下载

Java 官方下载路径

这是2021年的,所以要下载 Java11,亲测 Java17不能用。

我下的是免装版,安图所示,点击下载即可

image-20220120203032191

Oracle账号和密码:(都是网上搜的,自己也可以去搜)

1
2
3
4
账号:1602404824@qq.com		密码:wf1996ROOT#
账号:908344069@qq.com			密码:Java2019
也可以去下面这个网址找
http://bugmenot.com/view/oracle.com

下载完以后直接解压到要用的文件夹里去就可以了,例如我的是D:/Java/jdk11

配置

因为只是这个软件需要 Java 11 环境,所以可以配环境变量,也可以运行此软件的时候通过 Java 11 的路径来运行

方法一:配环境变量

右键此电脑,单击属性,找到高级属性设置,单击进入系统属性,找到环境变量,单击。

image-20220120204950181

在系统变量中:

  1. 新建变量名:JAVA_HOME,变量值:D:\Java\jdk11(JDK安装路径,就是 Java11文件夹所在位置);
  2. 打开PATH,添加变量值:%JAVA_HOME%\bin;
  3. 和添加变量: %JAVA_HOME%\jre\bin;(没有jre就不用)
  4. (可省略)新建变量名:CLASSPATH,变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

    备注: 中间不要一不小心多按了个空格呀

  5. image-20220120210326740

验证配置

在 cmd 中使用命令 javajava -version查看是否成功安装和配置环境变量,如下图。(我是配的 java17 的环境,所以版本是 17.0.1)

image-20220120210517212

image-20221201031010248

image-20220120210655187

方法二:改路径

将启动软件的 Java 的路径改为 Java11 的绝对路径

如 java -jar name.jar 改为 D:\Java\jdk11\java -jar name.jar

对于此软件具体配置,后面会说

注意:路径中不能有中文和空格

BurpSuite 下载安装及激活

下载

Burp 下载官网

image-20220120212121510

自行下载 Professional 版的 JAR 包

  • 运行CMD,输入面图片内的内容或
  • 新建一个文本文件 改名为 run.bat(前面的名字随便后缀要为.bat)

    里面的内容为

image-20220120220428679

image-20220126173354871

java -Dfile.encoding=utf-8 -javaagent:BurpSuiteCn.jar -Xbootclasspath/p:burploader.jar -jar burpsuite_pro_v2.0.11beta.jar
java -Dfile.encoding=utf-8(定义编码) -javaagent:BurpSuiteCn.jar(汉化补丁的名字) -Xbootclasspath/p:burploader.jar -jar(p:之后是加载器名) burpsuite_pro_v2.0.11beta.jar(burp详细版本及文件名)

双击运行

image-20220120230952428

激活

Burp 注册机下载(也可以自己上网搜)

image-20220120220748625

进入CMD,输入 Java -jar BurpLoaderKeygen.jar(注册机的名字)

image-20220120231706416

image-20220120231751086

image-20220120232030829

image-20220120232056689

成功

汉化下载burpsuite汉化教程

链接:https://pan.baidu.com/s/1VYJGTzbdG5kVqVTVxxbsGQ 提取码:39en

BurpSuite 快捷启动方式选择

  1. Bat批处理文件启动:run.bat

    {java -jar BurpLoaderKeygen.jar}

  2. Vbs脚本启动:run.vbs

    {set ws=WScript.CreateObject(“WScript.Shell”) ws.Run “run.bat”,0}(要有run.bat文件)

  3. 创建桌面图标:创建桌面图标.bat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    chcp 936
    REM 设置936编码防止某些中文路径导致批处理失效
    @echo off
    setlocal enabledelayedexpansion
    mode con cols=94 lines=30&color 0a&title 创建Burp Suite一键启动脚本快捷方式
    echo [+] 获得当前路径:%~dp0
    set path=%~dp0run.bat
    echo.
    if exist %path% (
    echo [+] 发现Burp一键启动脚本run.bat
    echo.
    echo [+] 启动脚本路劲:
    echo.
    echo [+] %path%
    echo.
    goto :creat
    ) else (
    echo [-] 注意,未发现启动脚本run.bat,请注意是否改名,程序退出... 
    echo.
    pause
    exit
    )
    
    :creat
    echo [+] 开始创建快捷方式...
    echo.
    rem 设置程序的完整路径(必要)
    set Program=%path%
    rem 设置快捷方式名字(必要)
    set LinkName=Burpsuite
    rem 程序工作路径
    set WorkDir=%~dp0
    rem 设置快捷方式说明
    set Desc=BurpSuite一键启动
    rem 设置快捷方式图标
    set icon=%~dp0/Burpsuite.ico
    if not defined WorkDir call:GetWorkDir "%Program%"
    (echo Set WshShell=CreateObject("WScript.Shell"^)
    echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
    echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LinkName%.lnk"^)
    echo oShellLink.TargetPath="%Program%"
    echo oShellLink.WorkingDirectory="%WorkDir%"
    echo oShellLink.WindowStyle=1
    echo oShellLink.Description="%Desc%"
    echo oShellLink.IconLocation="%icon%"
    echo oShellLink.Save)>makelnk.vbs
    echo [+] 桌面快捷方式创建成功!!
    echo.
    makelnk.vbs
    del /f /q makelnk.vbs
    pause
    goto :eof
    :GetWorkDir
    set WorkDir=%~dp1
    set WorkDir=%WorkDir:~,-1%
    pause
    goto :eof
    
  4. 改为 .exe 启动 (我不会)

BurpSuite 2021 可以自己看

配置浏览器代理

用于截断浏览器消息

  1. 打开计算机设置,进入网络和internet,选择代理,找到手动设置代理,启动代理服务器

    • image-20220126211256245
  2. 启动浏览器,输入网址http://burpsuite/进入页面下载CA证书(不安装证书,不能访问 https 页面)

    • image-20220126211557416
  3. image-20220126212307381
  4. 尝试访问 www.baidu.com 若成功访问,则成功。(不过我没成功,我是在受信任的里面,浏览器说找不到)

功能

Proxy

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

intercept

  • Forward表示将截断的HTTP或HTTPS请求发送到服务器。
  • Drop表示将截断的HTTP或HTTPS请求丢弃。
  • Intercept is on 和 Intercept is off 表示开启或关闭代理截断功能。
  • Action表示将代理截断的HTTP或HTTPS请求发送到其他模块或做其他处理。
  • 对Intercept进行 Raw Hex Params Header 切换查看不同的数据格式。

http history

  • HTTP history用来查看提交过的HTTP请求。
  • Filter可以过滤显示某些HTTP请求。点击Filter就可以打开。
  • 对于指定URL可以选中右键点击,执行其他操作。

Websockets history

  • Websockets hlstory与HTTP history功能类似。

Options

  • Options 具有的功能:代理监听设置,截断客户端请求,截断服务器响应,截断Websocket通信,服务端响应修改(绕过JS验证文件上传),匹配与替换HTTP消息中的内容、通过SSL连接Web服务器配置、其他配置选项。
  • 设置 proxy listeners
    • 通过设置 proxy listeners 来截断数据流量,比如设置监听端口等。
    • image-20220126220254321
  • intercept client requests
    • 通过设置 intercept client requests 来截断符合条件的HTTP请求
    • 优先级从上至下
  • intercept server response
    • 通过设置 intercept server response 来筛选出符合条件的HTTP响应
    • 优先级从上至下
  • image-20220126221230676
  • image-20220126221427067
  • image-20220126221623265
  • Miiscellaneous
    • 杂项设置:通过杂项设置对应的请求头等信息

Targer

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

scope

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

site map

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

Spider

Spider——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。

Scanner

Scanner[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。

Intruder

教程:Intruder Attack type&Payloads – 拥有上千种姿态的攻击模式

Intruder——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。

target

  • host::url网址
  • port:端口号(Http默认为 80 端口,Https默认为 243 端口)
  • image-20220305212915113

Positions

总共有四种的攻击模式,分别为 sniper(狙击枪)、Battering ram(攻城槌)、Pitchfork(干草叉)、cluster bomb(集束炸弹)

1、Sniper(狙击枪)

第一种攻击模式: Sniper

sniper的特点是只需要指定一个Payload Set,不管你Positions中有几个变数,都是一个Payload Set,但会针对每个变数逐项的替换。 在替换第一个位置变量的时候,第二个是不会动的,也就是替换第一个位置的时候,第二个会是原始值,而测试完第一个位置时,才会测试二个位置。 所以假设尝试替换账号密码,利用Payload内容是11,22,33,aa,bb,cc。进行暴力破解时,会去尝试: admin:11 admin:22 admin:33 admin:aa admin:bb admin:cc 11:password0000 22:password0000… 这样依序下去。

字段中Position的意思是表示第几个变量,因为我们只有设定两个, 账号§admin§就是position 1,而密码§password0000§就是position 2。 demo如下图: 在这里插入图片描述

2、Battering ram(攻城槌)

第二种攻击模式: Battering ram

这种攻击模式实际上比第一种还好理解,也是不管你Positions中有几个变数,都是一个Payload Set。 并且每个变量位置的值都会是一样的。 所以假设尝试替换账号密码,账号内容是11,22,33,aa,bb,cc 进行暴力破解时,会去尝试 11:11 22:22 33:33 aa:aa… 这样依序下去 demo如下图: 在这里插入图片描述 在这里插入图片描述

3、Pitchfork(干草叉)

第三种攻击模式: Pitchfork

不能只输入一个字典,每个变量要有自己的字典文件,也就是说每个变量有一个属于自己的Payload set,但是要注意的是每个Payload set里面的payload个数要一样。 (当然其实payload set不一样也是没关系,还是可以执行,只是多出来的那些payload不会被送出去而已。) 假设两个Position各有自己的Payload Set, Position 1,也就是账号的地方,Payload是11,22,33 Position 2,也就是密码的地方,Payload是aa,bb,cc 尝试结果会是 11:aa 22:bb 33:cc demo如下图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

4、Cluster bomb(集束炸弹)

第四种攻击模式: Cluster bomb

这种方式也是每个变量都要输入字典,但是不会像Pitchfork是一对一的关系,而是每个都会去尝试到,逐项地去尝试一多对的方式。

假设两个Position各有自己的Payload Set, Position 1,也就是账号的地方,Payload是11,22,33 Position 2,也就是密码的地方,Payload是aa,bb,cc 尝试结果会是 11:aa 11:bb 11:cc 22:aa 22:bb … demo如下图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Payload type

介绍完了四种Attack Mode之后,要来提的就是Payload type,虽然我们前面用的Payload type都是Simple list,(实际上最常用的也是Simple list)。不过Burp所支持的Payload type可是相当的多样化。 在这里插入图片描述 在这里插入图片描述

Simple list

首先Simple list可以算是最基本的,用法很简单,可以直接输入按Add,也可以上传文档。 虽然这边我们demo都是手动输入,不过实际上要执行暴力破解等动作,通常Payload一定会是很大量的,用手输入可能会累死,所以实际上都是用选择上传文件的方式。

那至于字典文件要去哪里找,就…自己到处随便用关键词找找,因为满多地方都有各种不同的字典的或是Payload文档。 谈起Payload与字典文件可能又会无限发散,这边就随便放个SecLists让大家参考参考: https://github.com/danielmiessler/SecLists/tree/master/Passwords

Runtime file

Runtime file 是指定文档,让你直接选择文档,每一行就是一个Payload,其实这个跟Simple list直接Load就是一样的意思而已,只是Simple list如果汇入的文档很大,会因为画面要显示出来给你看,所以会跑很久,Runtime file没有要显示给你看,所以没这个问题。 在这里插入图片描述

Custom iterator

Custom iterator这个稍微就有点小复杂了,首先先注意到这边里面也有个Position 1~8

8个都可以输入不同的Payload Set,也就是说八个之间会去做排列组合,但是前后的顺序不会改变, 最后的结果 = position1 + position2 + position3。 为了方便demo,用的是Battering ram攻击模式,Payload的Position: Position 1: 11,22,33 Position 2: aa,bb,cc Position 3: dog,cat

最后执行的payload会是: 11aadog 22aadog 33aadog 11bbdog 22bbdog … 以此类推总共18组payload: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Character substitution

Character substitution 字符替换的意思,也就是你可以设定把某个字符修改成另一个字符,其实可以算还是会从原本Simple list去延伸,所以看到item的地方跟Simple list一样。 跑完原本的Payload之后会做字符的替换。 所以假设我的payload输入abcd,可以看到字符替换的规则有a->4,b->8;所以暴力破解时送完原始的payload abcd之后。有单独把a换成4,有单独把b换成8,也有两个都换的。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Recursive grep

Recursive grep 其实听起来有点复杂,但是其实没那么复杂XD 可是我没好的范例demo。 是从上一次的响应结果中,取得部分特定内容作为下次请求的Payload。

Illegal Unicode

这个我也是第一次发现原来Burp还有这一招,利用Illegal Unicode进行Bypass。 因为不是很理解,让我先默默跳过…

Character blocks

Character blocks,举例,可以插入很多个A,起始要几个,每次增加多少个A,到多少个要停止,通常比较适用在测试overflow。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Number

Number测试数字,这个也算是实际工作上很常用到的,可以设定起始多少到结尾多少,间隔多少数字, 也可以选择十进制与Hex,还有是否要小数点。 在这里插入图片描述 在这里插入图片描述

Datas

如其名,就是用来测时间日期格式的Payload。 在这里插入图片描述

Brute Force

Brute Force是纯粹的暴力破解,这个其实算是我除了Simple与Number以外,可能比较常用到的之一,Payload的产生方式就是Character set中的所有字符排列组合都会试过,那也可以设定最小的长度与最大的长度,不过要注意就是Brute Force很容易一不小心Payload数量就超多的。 在这里插入图片描述

Null payloads

Null payloads 其实就是重复同样的原始请求,没有进行修改,你可能会好奇这样有什么意义?! 那这个就是等到你遇到需要的场景就会知道意义了,通常可能是做观察与搜集数据的时候用,比如要确认一直重复发起一样的请求,是否服务器都会给一样的响应。

Character frobber

Character frobber 会按照顺序去递增每个字符的一个ASCII,感觉这个有点冷门,好像其实是满实用的,用途主要应该是用来确认token的每个字符是否有作用。

Bit flipper
Username generator

用户名生成。

ECB block shuffler

ECB block shuffler 牵扯到加密模式,先不管他。


讲完Payload type之后,Payload下还有两个区块,必须要提一下,姑且不管你有没有要用的,至少先知道。

Payload Processing

是也可以对发出去的Payload进行加工处理,例如可以加入前缀、后缀字符、只截取字符串的某一部分等;后缀常见的可能像是Email结尾的字符,比如@gmail.com之类的。 可以利用match替换,可以反转,可以编码,许多方法可以选择。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Payload Encoding

最下面的Payload Encoding,这边则是勾选的话,Payload如果有match的characters就会进行URL-encode。 在这里插入图片描述

Repeater

Repeater——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。

Sequencer

Sequencer——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。

Decoder

Decoder——是一个进行手动执行或对应用程序数据者智能解码编码的工具。

Comparer

Comparer——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。

This post is licensed under CC BY 4.0 by the author.