补充
- HTTP默认端口:80
- HTTPS默认端口:443
- 域名:
- 协议://子域名(www).主域名(baidu.com):端口
- 例如:http://www.baidu.com
- BP模块的参考资料:
- portswigger.net/burp/documentation/contents
BP基本介绍
- 官网:portswigger.net
- BP主要功能:
- BP主要用来做渗透测试
- 渗透测试的目标:测试网站安全性(移动端、服务器等)
- BP使用的主要技术:拦截、修改HTTP的请求包、自动请求、过滤响应等
- 应用场景:SQL注入(手工注入、盲注)、文件上传(修改HTTP请求包)、XSS(检测、利用XSS漏洞)、CSRF、FUZZ(查找参数、用户名、密码、扫描目录等)、重放攻击、密码爆破、爬取数据、漏洞扫描等
- 其他工具:(仅用于抓包、拦截HTTP请求包)
- BP:是一个渗透测试的套件,包含多种用于做渗透测试的模块
- Fiddler:web调试工具。主要用于抓取HTTP请求和响应包
- Wireshark:网络封包分析工具。可将整个网络通信的数据帧显示出来。
- BP版本:
- 公司使用:
- 企业版:Enterprise Edition
- 个人使用:
- 社区版:Community Edition(免费)
- 专业版:Professional(收费)
- 公司使用:
BP的配置
- BP的主程序的jar包
- JDK
- JRE:Java运行时所需要的环境(但JDK中包含JRE)
- JDK:Java开发工具套件(推荐解压版zip)
- 激活的jar包
- 汉化的jar包
BP模块的大致介绍
- Dashboard仪表盘
- Proxy代理模块:
- 在BP中设置代理。目的:拦截浏览器的HTTP数据包
- 浏览器中设置代理,将HTTP请求发送到BP上,则BP上才会有记录
- Intruder模块:
- 将我们拦截到的请求(例如:一个URL地址),从URL地址或request header请求头或body中选取的某值,将它们选为攻击的字段,在利用准备好的字典进行渗透测试。
- 可用于目录扫描、密码暴力破解、压力测试、FUZZ等
- Repeater重放模块:
- 重新发送HTTP请求、对HTTP请求做单步调试的模块
- Sequencer序列器模块
- Decoder解码器模块
- Comparer比较器模块:对两次HTTP请求的结果进行比较
- Logger:请求日志的HTTP访问的记录
- Extender插件中心:
Proxy模块
浏览器的代理设置
- 将浏览器原来发送给服务器的数据,发送到BP启动的代理服务器中,从而达到对数据包进行操作。
- 设置代理的方式:
- 操作系统级别的代理:win/代理/手动配置代理(设置为BP中的IP:端口)。
- 但会将操作系统的所有的网络数据,都会发送到BP中的8080端口来【指定代理服务器(BP)的ip:端口】
- 在BP中:设置去监听127.0.0.1:8080端口
- 浏览器代理设置:
- 火狐:直接下载插件
- 谷歌:进入开发者模式后安装插件
- 操作系统级别的代理:win/代理/手动配置代理(设置为BP中的IP:端口)。
BP代理设置
- BP\proxy\setting中:默认监听了一个ip和端口(127.0.0.1:8080)
- 监听此端口目的:当启动BP代理服务后,将拦截到的浏览器的HTTP请求发送到BP的这个IP和端口上。
- intercept:拦截
BP拦截HTTPS包
- BP拦截HTTPS包,必须先安装BP的根证书
- 正常情况:使用浏览器直接访问HTTPS网站(服务器)时
- 浏览器首先拿到服务器的证书,通过这个证书验证了身份以后,浏览器与服务器之间会协商一个会话密钥,当浏览器给服务器发送信息时,首先会用此密钥进行加密,服务器收到信息后,在用此会话密钥进行解密。
- 当服务器给浏览器响应消息时,服务器先用此密钥加密发送的信息,浏览器接收到响应消息后,再用此会话密钥进行解密。
- 所以一共进行了2次 加密-解密 过程
- 当在浏览器与服务器之间运行了BP代理服务后,则在一个完整的通信流程中,需一共进行了4次 加密-解密 过程。
- 首先,浏览器与BP经过身份验证后,协商出一把会话密钥。浏览器用会话密钥加密消息后在发给BP,BP收到消息后,在用浏览器与BP协商出的会话密钥进行解密,将变为明文;
- BP再用与服务器协商好的密钥对明文加密后,发送给服务器;服务器收到消息后,在解密。
- 服务器响应消息给BP,服务器将响应消息明文用BP与服务器之间的密钥加密,BP收到消息后,用BP与服务器之间的密钥解密,得到明文。
- BP在用BP与浏览器协商好的密钥对明文进行加密,发送给浏览器,浏览器收到消息后,再用BP与浏览器协商好的密钥解密,得到消息。
- 密钥:BP与浏览器之间有一个会话密钥。BP与服务器之间有一个会话密钥。
- 当用BP对HTTPS包进行拦截时,在未安装证书时,有时会出现请求被浏览器拦截的提示。
- 根本原因:BP软件的证书没有被操作系统信任。【情况类似于假冒网站、中间人攻击一样,是一个不受OS操作系统信任的CA颁发的证书】
- 解决方案:在我们的操作系统中 安装BP公司的根证书:PortSwigger CA
BP拦截手机APP数据
略
BP模块
burp渗透测试流程
- BP的启动配置
- BP的proxy模块:用于运行代理服务器的拦截请求
- BP的target模块:用来记录站点地图和定义作用域
- BP的扫描功能:(scanner与spider模块):用来对网站进行爬取以及检测漏洞。
- 爬虫模块:
- 漏洞扫描模块
- BP的repeater模块:手动的发送HTTP数据
- BP的intruder模块:自动化发起HTTP请求
target模块
- 作用:
- 记录所有经过BP的流量。
- 【即在浏览器和BP设置好代理后,所有经过BP的HTTP流量】
- 区别:
- Proxy模块中/HTTP history:按时间顺序记录所有经过BP的流量,不管BP拦截的开关是否开启(但需提前设置好BP的监听端口127.0.0.1:8080),只要是来到了BP上8080端口的流量都会在HTTP history中出现。【E.G、浏览器中可直接得到访问百度的结果,是因为HTTP请求来到BP后,BP立即将请求发送到百度搜索的服务器,BP再将接收到的响应返回给浏览器;所以在没有开启BP拦截开关的情况下,这些经过BP的流量被记录下来】
- target:按主机或者域名分类记录,对经过的流量进行了归纳和整理,不管BP拦截的开关是否开启。
- Target作用域的设置:【Target/Scope】
- 作用:即设置 记录哪些流量或不记录哪些流量到Site map中
- 白名单:设定拦截(设定的域名)到站点地图中(Site map)
- 黑名单:排除规则,不拦截(设定的域名)到站点地图中【即哪些域名、文件、端口等不记录到站点地图中】
BP扫描功能
-
漏洞扫描工具:AWVS、Appscan、Nessus等
- 本质:基于各种漏洞的特征,在工具中内置了各种探测方式,去发起一个HTTP请求,然后根据响应的结果来分析是否可能存在漏洞。
- 【例如:以简单的SQL注入为例,上述**工具可能会在参数里加上一些特殊的SQL语句,若HTTP的响应结果中有union回显,或者有时间的延迟、或者有报错的输出等,都可以确定为存在漏洞】
- Dashboard仪表盘:
- (New) scan:主动扫描
- (New) live task:被动扫描
- crwal:爬虫
- audit:审计(漏洞检测)
- 本质:基于各种漏洞的特征,在工具中内置了各种探测方式,去发起一个HTTP请求,然后根据响应的结果来分析是否可能存在漏洞。
-
扫描类型:
- 主动扫描:Actively Scan 等价于 Crawl and audit
- crawl and audit:不仅对某网站的链接进行爬取、同时对爬取到的链接进行漏洞检测。【在爬行完后,才可进行漏洞检测[审计]任务】
- crawl:仅爬行【结果:在target模块中生成站点地图】
- 被动扫描:Passively Scan 等价于 Live audit
- live audit:
- 仅对经过proxy、intruder、repeater模块的流量进行漏洞扫描[审计],不进行爬行
- live passive crawl:
- 访问哪些内容,则进行哪些的爬行【即点击哪个网站、便进行哪些爬行】
- live audit:
- 比喻:
- 主动扫描:社区强行上门、挨家挨户的检测核酸【影响范围大】
- 被动扫描:下飞机、高铁、高速路口后,必须做核酸检测,即经过该地方,才做核酸。【即经过BP的proxy、intruder、repeater模块,才会进行漏洞扫描】
- 主动扫描:Actively Scan 等价于 Crawl and audit
Repeater模块
- 用途:【主要用于web漏洞的POC漏洞的验证】
- 用于手工的发起HTTP请求,分析响应
- 下列情况:
- 修改HTTP的请求头、请求体、URL的参数,想要验证漏洞【SQL注入、XSS、越权等漏洞】。此时我们需要手动发起HTTP请求,并分析其响应。
- 重放请求:多次访问同一个地址
- 下列情况:
- 同一个用户是否可以重复注册等,此时我们需要手动发起HTTP请求,并分析其响应。
- 用于手工的发起HTTP请求,分析响应
- 使用方法:
- 数据的来源:
- 手动复制、粘贴
- 其他模块中:右键/send to repeater【ctrl + R】
- 数据的来源:
intruder模块
- 作用:主要用于密码的爆破
- 原理:对HTTP请求的参数名、参数值、路径名、文件名、cookie值等(即插入点)进行修改,发起大量的请求,分析响应的内容,获取特征的数据。
- 本质:
- 自动化发起HTTP请求。
- 基于现成字典或生成字典填入插入点。
- 用途:
- 爆破:猜测用户名、密码等
- 目录扫描功能:寻找参数、目录等
- 枚举商品ID、验证码等
- 模糊测试(FUZZ)等
- intruder攻击模式
- sniper:只能设置一个攻击字段
- Battering ram:可以设置多个攻击字段,但只有一个payload。【将1个payload的值赋给多个攻击字段】
- Pitchfork:可以设置多个攻击字段,也可设置多个payload值的来源。【多个payload的值与多个攻击字段按顺序一 一匹配】
- Cluster bomb:可以设置多个攻击字段,也可设置多个payload值的来源。【交叉验证(笛卡尔积)】
- intruder标记结果
- Grep-Match:若匹配到响应结果中的内容,则会在响应的结果中打上勾(flag标记一下)[Intruder/Options/Grep-Match]
- Grep-Extract:获得上一次响应结果中的内容,并作为本次HTTP请求的内容。[Intruder/Options/Grep-Extract]