• 简介
    • Burp Suite 是一个广泛使用的网络安全测试工具,由 PortSwigger 开发,主要用于渗透测试和 Web 应用程序的安全评估。它包含一系列工具,可以帮助测试 Web 应用程序的漏洞,例如 SQL 注入、XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等。
  • 应用场景
    • 安全审计、渗透测试、安全研究
  • 版本
    • 社区版、专业版

主要功能

拦截代理(Proxy)

  • 用于拦截和修改客户端与服务器之间的 HTTP/HTTPS 请求和响应。可以实时分析并更改数据包内容。
    Pasted-image-20241204205023
  • 将请求包转到其他模块进行配合
    Pasted-image-20241206005839
  • 对抓到的包进行筛选
    • 可筛选特定的状态码和扩展格式,支持正则表达式的形式对包中包含的内容进行筛选。
      Pasted-image-20241206012124
  • 进行高亮显示,即将请求包复制成CURL的请求格式
    Pasted-image-20241206012402

爬虫(Crawler 或 Spider)

  • 自动扫描 Web 应用程序,发现隐藏链接和输入点。有助于全面覆盖测试范围。
    Pasted-image-20241204205237

扫描器(Scanner)

  • 自动扫描目标应用的漏洞。提供详细的风险报告,包括发现的漏洞类型和位置。
    Pasted-image-20241204205812

侵入点测试器(Intruder)

  • 用于自动化测试,尝试多种输入组合,发现漏洞。常用于暴力破解、参数篡改等测试。
    Pasted-image-20241204210131

Repeater(重放器)

  • 对特定的请求进行反复编辑和重新发送,观察响应的变化。适合用于精确调试和漏洞验证。
    Pasted-image-20241204210347

解码器(Decoder)

  • 用于编码和解码数据(如 Base64、URL 编码等)。帮助分析和测试序列化漏洞。
    Pasted-image-20241204210613

扩展(Extender)

  • 支持加载自定义插件(通过 Burp Extender API),扩展 Burp Suite 的功能。支持多种编程语言(如 Python、Java 等)。
    Pasted-image-20241204210700

Logger(记录器)

  • 自动记录通过 Burp Suite 代理发送的每个 HTTP 请求和接收到的响应。包括客户端和目标服务器之间的完整交互。
    Pasted-image-20241204212902

目标(Target)

  • 提供目标站点的整体结构视图。帮助用户识别测试范围,记录所有交互和发现。
    Pasted-image-20241204213031

comparer(对比)

  • 测试不同的输入值(如修改参数、Cookie)对服务器响应的影响。确定特定输入是否导致漏洞行为(如未授权访问)分析请求变化
  • 对比不同框架之前的区别,来判断有漏洞的包。
    Pasted-image-20241206010904

设置Burp Suite代理实现抓包

  • Burp Suite是通过流量经过他的代理端口来实现抓取HTTP包的,属于被动抓包的方式,可以通过设置代理来实现抓取特定的包

查看Burp Suite代理端口

Pasted-image-20241206013125

配置全局代理

  • 即计算机中的所有包都能被捕获到,可在系统网络中的代理设置,端口设置为8080即可(Burp Suite的代理端口)
    Pasted-image-20241206013241

浏览器设置代理

  • 有两种方式一种是设置浏览器自身的代理,另一种是使用插件来时间特定网页使用代理。这里使用插件来设置。
    • 先设置代理端口
      Pasted-image-20241206013929
  • 设置情景模式选择刚刚创建的模式,特定域名走Burp Suite代理
    Pasted-image-20241206013623
  • 如果提示网页不安全,则导入证书
    • 导出证书
      Pasted-image-20241206020747
  • 双击导入证书,设置为信任的
    Pasted-image-20241206020843

外部设备走代理端口

  • 必须外部设备和本机同一网段,或者说之间能通讯

首先查看本地IP地址

Pasted-image-20241206014646

外部设备配置

  • 这里用模拟器替代,需要设置桥接模式才能和本机同一网段
    Pasted-image-20241206014845

配置端口代理

  • 在无线网络右上角✏️设置手动,主机名为本机IP,端口为代理端口
    Pasted-image-20241206015059

导入证书

  • 在Burp Suite导出der格式证书,后缀改为cer格式传到设备安装
    Pasted-image-20241206020116
  • 随便设置个名称安装即可
    Pasted-image-20241206020314

测试结果

  • 能正常抓取
    Pasted-image-20241206020356

验证码爆破

配置相关环境

  1. 下载jar扩展和验证码识别脚本
  2. 安装验证码脚本所需的python库
pip install ddddocr aiohttp
  1. 导入jar扩展
    Pasted-image-20241210004323

使用步骤

抓取验证码请求包

  1. 选中验证码右键新标签打开,可以看到验证码的照片,刷新一下验证码会有改变(仅只适用于这种类型验证码识别)
    Pasted-image-20241210004546
  2. 刷新一下验证码的网页,抓取获取验证码的请求包,选择发送到扩展验证码部分
    Pasted-image-20241210004842
  3. 打开扩展的页面每获取一下都能改变验证码图片,那就证明获取获取成功了
    Pasted-image-20241210005132

配置验证码识别脚本

  1. 前面已经安装好了库,直接运行。看到running on http:0.0.0.0:8888证明运行成功了
python3 codereg.py

Pasted-image-20241210005337
2. 将识别的地址填入接口,右键模板,根据自身爆破的验证码类型设置,我这里纯数字于是填写纯数字
Pasted-image-20241210185616
3. 将识别的网页接口配置到扩展后,点击获取,然后再测试识别,测试一下能否正常工作。
Pasted-image-20241210185431

抓取登录请求包,设置攻击

  1. 随便输入个账号密码抓取,发送到攻击器
    Pasted-image-20241210185816
  2. 选择集群炸弹,和添加payload位置,这里我就爆破密码和验证码
    Pasted-image-20241210190016
  3. 按照你添加payload的顺序来配置爆破的字典,验证码部分选择为模块
    Pasted-image-20241210190136
  4. 设置资源池
    Pasted-image-20241210190430
  5. 扩展记得开启使用
    Pasted-image-20241210190157
  • 测试结果,payload2是我验证码的部分能正常运作
    Pasted-image-20241210190505

IP伪造技术

  • 简述
    • 当对一个传参点进行测试的时候服务器可能会对IP有请求限制,超过一定限制后将会对IP地址进行封禁,这时候就需要对IP地址伪造来对传参点进行多次测试。
  • 实现的方法
    • 方法一:
      • 通过修改数据包中源IP地址字段来实现如网络层IP数据包中的Source IP Address和应用层中的HTTP请求包中的X-Forwarded-ForClient-IP来实现。但是服务器日志能正常看到请求的IP
    • 方法二:
      • 利用代理中继的方法通过使用代理服务器、CDN、僵尸网络(Tor网络)、匿名网络来转发流量将目标服务器与攻击者隔离,隐藏真实IP。服务器日志看到的是不同IP进行的正常请求

配置python解释环境

  • 后面的扩展都需要python环境,先安装jythonHome | Jython
配置jython
  1. 下载包
    Pasted-image-20241219160918
  2. 选择最新版jar类型的
    Pasted-image-20241219160946
  3. 打开Burp Suite导入,注意路径不能有中文。
    Pasted-image-20241219161437

方法一

  • 这种方式适用于应用层的HTTP协议请求包欺骗,无法欺骗传输层的TCP/IP协议,而服务器的日志记录的访问IP就是基于TCP/IP的真实发送IP。
    • 实现方法利用扩展BurpFakeIP来为请求包中添加X-Forwarded-ForClient-IP来实现,但是一个个添加肯定不太限时,于是就需要到扩展

一、安装扩展

  • 扩展下载地址,导入即可。如果无法使用或者报错要看看自己jython或者扩展路径是不是有中文
    Pasted-image-20241220015830

二、基本使用

  • 在请求包右键扩展选择BurpFakeIP选择一种模式伪造IP
    Pasted-image-20241220020606
  • 配合Intruder使用
    Pasted-image-20241220020731
  • 测试结果
    Pasted-image-20241220020833

方法二

  • 通过获取大量的代理地址或者僵尸网络、肉鸡等,代替客户端发送请求包到服务器,那又要怎么获取如此数量庞大的代理服务器来,那就需要zmap
    • zmap专为大规模扫描设计,可以在较短时间内扫描整个IPv4地址空间。找到指定服务的端口,相较于nmap更专注于扫描而不支持服务检测。而且nmap是对一个网络,zmap是对整个互联网

一、配置安装zmap

通过软件包安装的的zmap版本较低缺乏部分依赖,可通过编译安装来确保功能正常使用,这边使用的是debian系统

  1. 下载相关依赖和源代码,github链接:链接
sudo apt-get update

sudo apt-get install -y build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc pkg-config libunistring-dev git libjudy-dev libjson-c-dev libunistring-dev

git clone https://github.com/zmap/zmap.git
  1. 构建环境
cd zmap
#进入源代码目录
mkdir build && cd build
#创建构建目录并进入
cmake ..
#向上一个目录构建工具

Pasted-image-20241218212831
3. 编译安装

make
sudo make install

Pasted-image-20241218213038
4. 验证安装

zmap --version

Pasted-image-20241218213242

二、zmap基本命令

  • 可以指定网段,在-的参数后面加网段即可
命令 说明 示例
zmap -p 扫描指定端口可范围的目标 IP 地址 zmap -p 80
zmap -a IP_RANGE 扫描指定的 IP 地址范围 zmap -a
zmap --output-module 指定输出格式,例如 CSV、JSON zmap --output-module=csv --output-fields=saddr
zmap --output-fields 指定输出字段,例如 saddr、port、status zmap --output-fields=saddr,port,status
zmap --output-filter 输出过滤条件,例如只显示成功响应的 IP(默认即使响应的) zmap --output-filter='success=1'
zmap --version 显示 ZMap 版本号 zmap --version
zmap -T THREADS 设置并发连接数 zmap -T 1000
zmap -u -p PORT IP_RANGE 使用 UDP 扫描 zmap -u -p 80
zmap -S PROXY 使用代理 IP zmap -S
zmap -r PORT_RANGE IP_RANGE 随机扫描指定端口范围 zmap -r 1-65535
扫描互联网上的代理端口
  • 80,443用于 HTTP 协议的代理转发,1080为Socks5代理端口
zmap -p 80,443,1080 -o ip_port.txt -T 4

Pasted-image-20241218221326

筛选出可用的地址
  • 这里参考众多大佬的写的脚本找AI改了一个
import requests  # 用于HTTP请求
from concurrent.futures import ThreadPoolExecutor # 用于并发操作

# 测试URL,用于验证代理IP是否可用
TEST_URL = 'http://www.baidu.com'
# 输入文件路径
INPUT_FILE = 'raw_ips.txt'
# 可用代理IP输出文件路径
OUTPUT_FILE = 'ip_prot.txt'
# 最大线程数
MAX_WORKERS = 10

def check_proxy(proxy, test_url, output_file):
"""
检测单个代理是否可用,并立即写入文件。

Args:
proxy (str): 代理地址,格式为 'ip:port'。
test_url (str): 用于验证代理的目标URL。
output_file (str): 可用代理写入的文件路径。
"""
# 设置代理
proxies = {
'http': f'http://{proxy}',
'https': f'https://{proxy}'
}

try:
# 发送请求,设置超时时间为5秒
response = requests.get(test_url, proxies=proxies, timeout=5)
if response.status_code == 200:
print(f'代理IP {proxy} 可用')
# 立即写入文件,防止数据丢失
with open(output_file, 'a') as file:
file.write(f'{proxy}\n')
except requests.RequestException as e:
print(f'代理IP {proxy} 不可用: {e}')

def process_proxies(input_file, output_file, test_url, max_workers):
"""
处理代理列表,使用多线程并发检测代理的可用性。

Args:
input_file (str): 包含代理地址的输入文件路径。
output_file (str): 可用代理写入的文件路径。
test_url (str): 用于验证代理的目标URL。
max_workers (int): 最大并发线程数。
"""
# 读取代理IP文件并去掉逗号
with open(input_file, 'r') as file:
proxies = [line.replace(',', ':').strip() for line in file if line.strip()]

# 使用多线程检测代理
with ThreadPoolExecutor(max_workers=max_workers) as executor:
for proxy in proxies:
executor.submit(check_proxy, proxy, test_url, output_file)

if __name__ == "__main__":
# 调用主函数处理代理列表
process_proxies(INPUT_FILE, OUTPUT_FILE, TEST_URL, MAX_WORKERS)
print(f"检测完成,可用代理已写入文件: {OUTPUT_FILE}")

Pasted-image-20241219162607

三、配置Burp Suite代理插件

设置代理池需要用到Burp Suite的一个扩展,扩展地址:地址

  • 注意路径不能有中文,如果报错就要检查一下是不是jython问题。
    Pasted-image-20241219161837

四、测试使用

  1. 这边原先是筛选的端口为804431080,这边后续过滤出来的包含1080端口SOCKS5协议的,最好就是将他从筛选出来。
    Pasted-image-20241219162900
  2. 攻击器找个传参点跑一下试试
    Pasted-image-20241219163037
  3. 查看结果,因为有可能节点访问不到这个地址,等其他因素,要保证成功发包最好就多次筛选
    Pasted-image-20241219163127
  4. 查看模块,也可以看到有正常运行,设置代理
    Pasted-image-20241219163328