前言
Burp Suite 是一款非常优秀的抓包工具之一,渗透测试必备神器,本章不介绍最最最基本的抓包配置等等,只介绍常用功能。
环境
物理机: 192.168.2.213
靶 机: 192.168.2.123
K a l i : 192.168.2.161
Proxy
问题描述
物理机无法抓靶机流量包,Kali能抓靶机流量包,但告知你必须要用物理机去抓到靶机流量包,怎样办?
问题解决
在Proxy->Options->Proxy Listeners->Add 添加代理侦听
设置绑定端口:随便设置 我设置为8080,设置绑定地址:我设置的是全网卡,直接ok选择yes后退出
不抓本地包,所以去掉第一个选项卡
配置靶机中浏览器代理为物理机中的ip,端口为刚才设置的8080
抓包成功,当然强大的burp也能抓手机包,本篇不介绍
options
只介绍Response Modification功能
设置用于执行自动响应的修改。可以使用这些选项通过自动重写应用程序响应的HTML来完成各种任务。 下列选项在数据删除客户端控件可能是有用的
有些网页中是把表单隐藏了的
Unhide hidden form fields:显示隐藏的表单
Prominently highlight unhidden fields:高亮显示这些字段
有些表单是禁止输入内容的
Enable disabled form fields:启用禁用的表单
比如你输入密码框长度不能超过多少位,这个就可以突破
Remove input field length limits:移除输入字段长度限制
比如是否按正确的格式去输入
Remove JavaScript from validation:从验证中删除JavaScript
这个具体实际作用在哪里我也不知道
Remove secure flag from cookies:从cookies中删除安全标志
secure flag如图所示
导出项目
最上面的选项卡Burp->Save copy of projec
再下一步就是选择保存位置和文件名称,点击保存就完成了
导入项目
写的够详细了,就不介绍了
Target
site map
当你抓取到了流量包后,会在target模块中生成站点地图,它采用树状的层次结构显示信息。
站点又分为两类:黑色和灰色
黑色:浏览器真正的对一个url发起了请求,服务器对它返回了响应信息
灰色:从页面中的url爬网爬出来的,并没有对该url的资源发生真正的访问一次。
内容区域 | 信息描述 |
---|---|
左边 | 站点层次目录 |
中上 | 此站点具体请求流量包历史 |
中下 | 此流量包具体数据内容(请求包,响应包) |
右上 | 安全提示 |
右下 | 安全建议 |
scope
查看当前站点过滤信息,当你想只查看某一个站点信息或者某个目录的时候,如下图所示选择要显示的站点,发送到scope去。
Include in scope:只查看当前列表中的站点信息=白名单
Exclude from scope:排除掉列表中的站点信息=黑名单
site map filter
单击filter哪一栏,会弹出过滤器规则,当你勾选好过滤规则后,只需要点击其他空白处,就会自动开始过滤
Show only in-scope items:仅显示范围内的站点(此处需搭配scope使用) 勾选后入图所示
Show only requested items:仅显示真正发起请求的站点
Show only parameterizend requests:仅显示参数化的请求 也就是 过滤掉html,htm这类站点
Filter by search term:按关键词筛选 比如我只看url地址中包含了dvwa关键字
结果入图所示
Filter by MIME type:按文件类型筛选
Filter by status code:按状态码筛选
Filter by file extension:按文件扩展名筛选
show only:展示asp,aspx,jsp,php等扩展名
Hide:不展示js,gif,jpg,png,css等扩展名
Filter by annotation:
Show only commented items:仅显示注释的项目
给url添加注释
添加完注释后
Show only highlighted items:仅显示高亮的项目
点击host进行高亮设置
当你选乱的情况下,在Filter下面show all;hide all那一栏点击Revert changes:还原更改
Spider
它提供爬虫功能,帮助来爬取网站目录结构
右键选择要爬取的主机或者分支发送到spider,它就会自动开始爬取网站
如果遇到需要验证的表单,burp会自动弹出,知道就填上,提交选Submit form,忽略选Ignore form
control
在Spider->Control可以看见爬取的状态
Requests made:已经发送的请求
Bytes transferred:传输字节
Requests queued:请求的队列数量
Forms queued:正在排队的表单数量
点击Spider is running 后,暂停爬取,再次点击继续爬取
Clear queues:清除队列
options
Spider->Options->Application Login 到申请登陆功能这里查看
默认选择Prompt for guidance即需要身份验证的时候就提示
Don’t submit login forms:不要进行表单提交身份验证
Handle as ordinary forms:普通形式处理
Automatically submit these credentials:自动提交这些凭据 勾选后 它将自动将username和password里面的数据提交进表单
其他功能默认就行
Scanner
在进行scanner(漏洞扫描)前,先使用spider功能,这样可以最大限度发现漏洞
右键选择分支或者主机,选择主动扫描,没有搞懂被动扫描有什么用
这时会弹出主动扫描向导
最后一个选项Remove items with the follwing extensions:以下扩展名的不扫描。没必要扫这些勾选上
直接Next->Ok就开始进行扫描
Scan queue
此处查看扫描队列的详细进度
Issues颜色级别
High:红色 Medium:橙色 Low:黄色 Information:深灰色
Issue activity
此功能是查看具体安全报告信息
上面一部分
Action | Issue type | Host | Path | Insertion point | Severtity | Confidence |
---|---|---|---|---|---|---|
行为 | 问题类型 | 主机 | 路径 | 插入点 | 严重程度 | 确信程度 |
Confidence(信任度由高到低): Certain>Firm >Tentative
下面一部分
给出漏洞修补建议,即漏洞细节和漏洞背景,还有一如既往的请求包和响应包
options
Attack Insertion Points
change parameter locatons:更改参数的位置
这些都勾选上,比如url里面的内容放到cookie,逐一检查
第二个划红线的意思是发现隐蔽的命令注入点,如url中的base64编码,解码后发现是xml的值或者json,ajax等客户端对象存储的数据
Active Scanning Engine
Active Scanning Optimization
Scan speed:扫描速度
扫描仔细度:Thorough > Normal > Fast
Normal:正常速度 Fast:快 Thorough:彻底扫描
Scan accuracy:扫描精度
Normal:正常精度 Minimize false negatives:最小漏判(追求扫描最多漏洞数量时选择) Minimize false positives:最小误报(追求扫描结果准确性时选择)
Intruder
Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder 方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL 注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证系统;枚举;操纵参数;拖出隐藏的内容和功能;会话令牌测序和会话劫持;数据挖掘;并发攻击;应用层的拒绝服务式攻击。
在请求包或者响应包都能右键Send to Intruder
positions
在positions选项卡下可以看见burp默认标记了一些变量
先Clear$掉清除变量,这里演示爆破用户名和密码,点击右边的Add$分别将admin和password设置为变量,后面再攻击的时候它将循环替换此处变量内容,从而达到暴力破解
这里的攻击类型有四种分别是:Sniper(狙击手)、Battering ram(攻城槌)、Pitchfork(杈子)、Cluster bomb(集束炸弹),稍后会讲,在攻击前先设置Payloads
如果你要爆破后台的话,将url作为变量也未尝不可以,一句话任何内容都可以设置为变量
payloads
选择不同的类型下图中的payload设置也会不同,常用的类型Simple list
后面的攻击类型的字典我都会用下图
你可以手动添加内容,如上图所示,按回车或者点击Add。或者点击Load从文件中选择一个字典,或者选择burp内置的字典。
也可以对payload加工变形,点击Add添加变形类型
仅介绍几个 设payload 有 name admin 两个
Add prefix:添加前缀 如添加user后 payload为:username,useradmin
Add suffix:添加后缀 如添加1234后 payload为:name1234,admin1234
Match/replace:匹配/替换 如Match regex:m Replace with:6 后
payload为:na6e,ad6in
Payload Options设置好后就可以点击Start Attack
然后介绍几个payload type
Numbers
Brute forcer
它是将最小字符到最大字符直接从攻击字符中随便挑选几个字符,比如我这里设置的是4个字符,那么它就会随便挑选4个字符,将所有情况都会尝试,是一种非常暴力的攻击,从图中可以看出有3359232种情况
Sniper(狙击手)
此类型先将列表中的内容,先替换变量1的值,不改变变量2的值。然后尝试完后,再将列表中的内容替换变量2的值,不改变变量1的值。有第三个变量的话,以此类推。
Battering ram(攻城槌)
此类型是将列表中的内容替换所有变量
Pitchfork(杈子)
此类型将会设置两个Payload Sets 两个列表中的内容按顺序成对替换
Payload1设置
Payload2设置
可以看出payload1比payload2内容多了一行,前面说过是成对出现,所以你猜开始攻击后会怎么提交payload?
所以没有匹配内容后就停止发包了
Cluster bomb(集束炸弹)
此类型是真的全面,举例payload1 有username,admin。payload2有password,passwd,攻击的payload为username password、username passwd、admin password、admin passwd
payload1 和 payload2不变,依然使用上次的设置,开始攻击
此类型和Sniper(狙击手)是经常使用的
Filter
当请求过于杂而多时,这时候筛选器就登场了,设置好后点击其他任意位置后,开始自动筛选
实战演示
列子1
此处题目来自于攻防世界
截断靶机请求包,发送进intruder
选择Cluster bomb攻击类型,设置好变量,配置payload
这年头谁还没有个字典呢,开始攻击
经过漫长的等待后终于跑完了
知识点补充:通过响应内容的长度可以作为一个特征来发现那个是正确的密码,或者通过响应的状态码,点击length可以进行升序或者降序排列。
升序排列后如下图所示,既然用户名正确,哪就慢慢往下找看有没有正确的密码了
仔细看这独一无二的响应码437,其实一般爆破成功后,length一筛选马上就能发现那个秀儿,成功拿到flag
列子2
靶机DVWA前面步骤都大同小异,已经知道登录名和密码了,payload就没必要设置那么多了,直接跳到最后查看结果部分
可以看到状态码也都一样,length也都一样
直接查看验证正确的响应包
查看其他的响应包
仔细查看有一处不一样就是Location,一个是index.php,一个是login.php 这两个刚好都是5个字符,所以筛选出含有index.php的结果,这时候就会将我们想要的结果筛选出来
Repeater
此模块我一般称之为自定义发包器,可以手动发送单个请求包。从而查看响应包中的结果来进入测试
老规矩,随便选择一个请求包,右键发送到Repeater
来到Repeater模块,具体测试内容可以自己添加或者删除都行
右键在请求头中可以看到有很多选择
选择Change request method(改变请求方式)后,即POST变成GET,GET变成POST,入图所示,当POST变成GET点击GO,响应包的内容明显跟POST请求的响应包不一样
选择Change body encoding之前请求包必须是POST方式,GET方式无效
当然也可以生成CSRF poc强大到令人发指2333
选择后新打开CSRF Poc窗口,注意在burp v1.7.32中在浏览器测试我这里已经失效,如果要测试copy html,保存为html文件后,来打开测试
选择Copy as curl command,会复制curl命令,在记事本中粘贴下来,在kali的命令行中使用命令
curl是一个非常强大的命令,它会向服务器发起http或者ftp等等请求,然后反馈服务器响应
Sequencer
Sequencer(定序器)是一种用于分析数据项的一个样本中的随机性质量的工具。你可以用它来测试应用程序的session tokens(会话tokens)或其他重要数据项的本意是不可预测的,比如反弹CSRF tokens,密码重置tokens等。
下面演示如何来测试PHPSESSID的随机性,想详细了解session的作用参考这篇文章session的作用
而且计算机基本都是采用伪随机数算法,即不会做到一个真正现实世界中的随机,理论上来讲只要测试数据量够大,就能找到一个生成的seesion cookie的循环周期,来预测下一个seesion cookie。所以此模块就是评估生成的随机数质量怎么样
测试DVWA的session
清除cookie
我这里是测试dvwa的seeion,所以先到登陆页面将cookie清除掉,选择Delete All后
删除站点
Target->site map来到站点地图后,选择dvwa站点后右键,delete host,选择yes删除
抓取set-cookie请求包
清除掉cookie和删除掉站点后,重新进入dvwa的登陆界面,此时burp会重新记录到请求包
到Proxy->HTTP history可以看到历史请求,点击filter输入set-cookie,只看设置cookie的响应包过滤完后,找到响应包发送进sequencer
选择测试的cookie
burp会自动识别可用的cookie,security是安全级别设置,不是我们要测试的,所以选择PHPSESSID。如果burp没有识别出来,点击手动配置
手动选择好后,点击ok即可,点击Start live capture(开始实时捕获)开始测试
查看分析结果
发送的中途你就可以直接点击开始分析,当然数据量越大,得到的结果更准确
可以看到随机性质量结果的是excellent(优秀)
FIPS(美国联邦信息处理标准),其提供了密码模块评测、验证和最终认证的基础,所以只要通过了他们的验证标准,加密安全都是高的。可以看到session的评估质量远远高出及格线
Decoder
用来编码的加密解密,没有什么可以介绍的。直接网上找一个在线加密解密我都感觉比这个强不少
Comparer
比较器,顾名思义比较两次数据之间的区别
将dvwa中的登陆请求包发送进Repeater模块后,选择发送后,在响应包中右键send to Comparer,这次是正确的用户名和密码
这次输入错误的用户名和密码,一样发送到比较器
它这个是同一个内容分成了多个窗口而已,第一个窗口选择第一个或者第二个,那么第二个窗口必定要选择不同的,不然自己跟自己比较吗?选择按内容比较
下面是比较结果,当然你也可以比较两个项目的不同
Alerts
此模块是消息提醒,有一个好处就是看代理服务是否开启
Extender
Burp在软件中提供了支持第三方拓展插件的功能,方便使用者编写自己的自定义插件或从插件商店中安装拓展插件。
在BApp Store中,根据受欢迎程度,排名等等筛选出自己喜欢的扩展功能,不多介绍
总结
burp是一款安全中不可多得的神器,也是从事安全人士必须掌握的一款工具,总之一句话burp牛逼。