本文仅供学习参考,如任何人利用文中手段进行非法攻击与本人无关
红队企业信息收集
信息收集
1)红队与企业的区别
- 权限范围:红队可以对100%控股的子公司进行横向渗透,而企业SRC通常只针对主公司
目标差异:红队主要目标是获取shell权限,企业SRC则以漏洞挖掘为主 - 信息提供:红队通常只给公司名称,企业SRC会提供更详细的资产信息
2)企业查询
- 主要工具:使用爱企查等企业信息平台查询目标公司
- 关键信息:
域名信息(如ebchina.com)
子公司股权结构
备案信息 - 查询技巧:通过100%控股子公司寻找薄弱资产
3)网络空间搜索
猎鹰企业查询
语法使用:domain="baidu.com"或domain.suffix=baidu.com
备案筛选:可选择"只查看该企业"过滤无关结果
注意事项:部分灰黑产网站会使用相似域名进行伪装
站长之家
备案查询:可查找到同一公司备案的多个域名
SEO信息:获取网站权重、收录情况等技术指标
域名年龄:可查看域名注册时间和过期时间
外部资产
logo识别:通过网站图标MD5值(web.icon="54321f7ed27d39375d1e589527efo1cc")搜索相关资产
供应链系统:护网中只要包含公司数据的供应链系统都算有效资产
资产
C段扫描:通过IP后两位变化识别边缘资产
工具选择:
IP收集推荐使用FOFA
子域名收集推荐使用Hunter
护网资产
数据归属:只要系统包含目标公司数据,都算作有效资产分
框架识别:通过URL特征快速识别系统框架(如本例中的洛易框架)
子公司资产
查询方法:通过股权穿透图查找100%控股子公司
资产关联:子公司域名可能不同但备案主体相同
备案企业
备案验证:不同域名但备案企业相同可确认资产归属
系统复用:相同系统在不同子公司部署也是常见现象
网络华为信安
IP搜索:FOFA更适合IP段扫描
域名搜索:Hunter更适合子域名收集
应用案例
例题:子公司资产查询
题目解析
通过微信搜一搜查找公司小程序
在爱企查中查询100%控股子公司
验证子公司域名备案信息
例题:集团公司资产查询
题目解析
通过企业名称直接搜索
分析小程序等移动端资产
验证集团下属各公司关系
技巧
冷门工具:微步在线等工具可补充查询,但免费版有次数限制
多源验证:百度等常规搜索引擎可作为辅助验证手段
经验法则:C段扫描时注意IP后两位变化可能指示新资产
攻击面管理平台
1.查询企业信息
查询方式:可以通过企业名称直接搜索,类似爱企查等企业信息查询平台
操作步骤:在攻击面管理平台输入企业名称即可查询相关信息
- 系统与证书验证
证书验证:通过查看系统证书可以确认企业归属,证书信息是最直接的验证方式
系统筛选:需要使用筛选功能区分相似系统,确保找到目标企业的真实系统
- 域名与APP筛查
筛查范围:包括企业域名、APP、公众号等数字资产
筛查要点:需要仔细筛选,区分相似但不完全相同的资产
- 邮箱的作用
钓鱼攻击:收集到的企业邮箱可用于发送钓鱼邮件
多途径利用:可以通过手机邮箱等多种方式发送钓鱼邮件
- 源码泄露与审计
审计机会:如果发现企业源码泄露,可以进行代码审计
随机性:能否发现泄露源码具有一定运气成分
- 人员信息收集
爬虫收集:可以使用爬虫技术收集企业人员姓名信息
信息转换:将中文姓名转换为拼音形式便于后续利用
- 名字爬取与爆破
爆破技术:将收集到的姓名转换为拼音后可用于系统口令爆破
工具使用:可以使用文字转拼音工具快速完成姓名转换
- 工具使用与子域名爆破
推荐工具:
OneForAll:功能强大的子域收集工具
水泽:GitHub开源子域名爆破工具
Nemo:综合性的资产收集工具
灯塔魔改版:增强版资产探测工具
使用方法:工具通常提供详细说明文档,按照文档操作即可
子域名工具
- 灯塔系统安装与使用
系统安装要求:
操作系统支持Windows/Linux,推荐使用Linux服务器
需预装Docker和docker-compose环境
配置要求:探测过程会产生大量发包,建议使用独立服务器
1)Docker环境安装
Ubuntu安装:
直接执行:apt-get install docker.io docker-compose
CentOS 7安装:
其他系统:参考官方文档https://docs.docker.com/engine/install/
2)ARL安装与启动
安装步骤:
创建目录:mkdir docker_arl
下载安装包:wget https://github.com/TophantTechnology/ARL/releases/download/docker_2.5.4.2/docker_arl.zip
解压并启动:
3)版本选择建议
版本区别:
原版:持续更新,新增漏洞扫描功能
魔改版(ARL-plus-docker):集成爆破工具但停止更新
推荐使用原版以获得最新功能支持
4)相关工具推荐
子域名收集:
OneForAll:https://github.com/shmilylty/OneForAll
水泽(ShuiZe):https://github.com/0x727/ShuiZe_0x727
其他工具:
Nemo:https://github.com/hanc00l/nemo_go
Enscan:https://github.com/wgpsec/ENScan_GO
指纹识别:https://github.com/redtoolskobe/scaninfo
5)系统更新方法
原版更新:
进入arl/docker目录
删除旧容器(数据保存在volume中不受影响)
执行:docker-compose down后重新拉取新版本
魔改版更新:
到项目路径下执行:git pull
重新启动:docker-compose up -d
- 任务管理
1)漏扫工具使用技巧
- 漏扫工具特点:可以直接丢入玉米(目标)进行扫描,生成大字典进行全端口扫描
- 操作流程:
选择目标后直接丢入工具
工具会自动生成扫描字典
可进行全端口扫描
等待扫描完成即可获取结果
2)指纹识别方法
- 指纹识别必要性:
可识别目标使用的通用系统(如OA系统)
国外目标可能指纹较少,国内目标指纹特征更明显 - 操作技巧:
使用nd1工具进行快速打击
可导出子域名进行进一步分析
配合专用工具如"隐私感"进行信息收集
3)信息收集工具:enscan
- 隐私感工具:
专用信息收集工具
需要预先配置:
爱起茶cookie
阿拉丁token - 配置方法:
使用杠v参数生成配置文件
通过抓包获取cookie信息
将cookie填入配置文件 - 功能特点:
可一键收集控股公司信息
支持企业关联查询
4)子域名爆破
- 工具选择:
安特尔(推荐)
其他子域名爆破工具(可能占用内存较大) - 注意事项:
全速扫描可能导致断网
建议在服务器环境运行
可设置并发数为50以降低影响
5)敏感信息收集方法
GitHub搜索
- 搜索技巧:
使用edu.cn等特定域名 - 关键词组合:
"密码"+"edu.cn"
"user"+"/pass"
添加#号搜索注释内容 - 绕过GitHub限制:
使用谷歌搜索site:github.com+关键词
使用特定语法组合
网盘搜索 - 推荐工具:凌风云
- 搜索技巧:
企业名称+关键词(如"员工"、"内部")
筛选特定文件格式
注意甄别EXE文件安全性
语雀搜索 - 搜索方法:
直接搜索企业名称/域名
关键词组合:
"VPN"
"堡垒机"
"AK/sk" - 典型发现:
运维文档中的账号密码
测试系统登录信息
内部系统配置详情
短视频平台搜索 - 操作技巧:
搜索"商家登录教程"等关键词
逐帧查看密码输入过程
注意测试系统与正式系统的关联性 - 典型案例:
美团开店宝账号泄露
腾讯云后台演示视频
各类管理系统默认密码
6)实战技巧总结
- 信息收集流程:
收集主域名和子域名
进行指纹识别
使用漏扫工具扫描
手动验证漏洞 - 注意事项:
SRC与红队收集方法相似但目标不同
敏感信息需谨慎处理
测试系统漏洞可延伸至正式系统
网络安全资产收集方法
- 无备案IP资产收集
- 全端口爆破:针对只有IP没有备案的目标资产,首先必须进行全端口爆破扫描
- 目录扫描:爆破完成后需扫描可能隐藏系统的目录路径
- C段扫描:通过IP的C段扫描方法寻找关联资产,特别是政务网环境
- 资产识别技巧
- logo识别:通过页面logo或图标识别系统类型(如锐捷路由器、海康威视监控等)
- 指纹识别:搜索特定设备的指纹特征(如工控系统、园区管理系统等)
- 标题检索:使用公司名称或缩写作为关键词检索页面body内容
- 政务网资产特点
- 网络特性:政务网IP的C段通常都是政务网资产,具有高度关联性
- 内网互通:多数政务网内部互通,除非省级有特殊隔离规定
- DNS查询:进入内网后可通过DNS查询确定所属单位
- 特殊资产类型处理
- 工控系统:通常不会部署在外网,但可能包含摄像头等物联网设备
- 小程序资产:部分小程序可能直接使用IP而非域名
- 通用系统:如监控设备可直接搜索C段或政务网时段
- 测试环境注意事项
- 漏洞利用:测试环境发现的漏洞必须写入报告,不能留到下次测试
- 数据安全:不下载敏感数据可降低被发现风险
- 接口测试:测试环境接口可能在正式环境同样存在
- 资产搜索工具方法
- 精准搜索:子域名推荐使用汉特(Hunter)等工具
- 模糊搜索:使用百度等搜索引擎通过公司名/缩写查找
- 耐心要求:模糊搜索需要较大耐心和技巧
- 绕口令漏洞挖掘
- 价值说明:绕口令漏洞可能包含重要数据,在护网行动中价值较高
- 实例分享:vivo绕口令漏洞可直接获取400元奖励
- 数据分类:部分绕口令漏洞会包含大量分类数据
弱口令
字典介绍
1)字典内容概述
- 项目结构:包含apiDict、ctfDict、directoryDicts等多个分类字典目录
- 更新记录:
新增百家姓top3000拼音字典(去重后188条)
合并常用手机号码top300+字典
添加CentOS和AIX主机/etc/目录文件列表
更新webshell密码字典(makoto56加强版)
2)用户名字典
- 组成内容:
国内拼音组合用户名字典
青年安全圈ID黑名单(2018-2020)
常用用户名top500列表 - 特点:
数据来源包括GitHub项目Security-Data-Analysis-and-Visualization
分离了ID、博客名、GitHub三个字段
3)密码字典
- 主要内容:
top19576常用密码
某集团弱口令字典
互联网设备默认弱口令 - 使用建议:
遇到不知名设备时可优先尝试默认弱口令
配合用户名字典使用效果更佳
4)专项测试字典
- XSS字典:
包含burp官方210条payload
新增100+条payload
存放路径:easyXssPayload/burpXssPayload.txt - 手机号字典:
测试用手机号码合集
包含top300+常用号码
文件路径:userNameDict/test-phone.txt
5)字典维护说明
- 更新频率:由于作者毕业在即,更新频率会降低
- 协作方式:欢迎其他安全爱好者一起维护
- 项目地址:GitHub上的fuzzDicts项目
- 文件说明:
中文姓名字典包含简写和全拼两种形式
特殊系统文件列表存放在特定目录
常见系统弱口令
1)XXL-JOB任务调度中心
默认凭证:账号admin,密码123456或P@88w0rd
风险:登录后可反弹shell直接接管集群
目录特点:通常不会直接显示在首页,需要通过目录扫描发现
2)K8S控制台
默认凭证:账号admin,密码P@88w0rd或admin123
特点:图形化管理系统,默认K8S无图形界面
风险:可直接接管整个集群
3)Zabbix系统监控
默认凭证:账号admin,密码zabbix
常见场景:经常出现在众测和护网中
漏洞风险:存在多个已知漏洞
4)Grafana漏洞环境搭建
Grafana文件读取漏洞
漏洞编号:CVE-2021-43798
利用方式:通过插件路径遍历读取文件
字典列表:包含多个插件路径如/public/plugins/alertGroups/等
修复建议:升级到最新版本
5)Nacos系统监控
默认凭证:账号nacos,密码nacos
常见场景:内网常见系统
其他漏洞:存在未授权添加用户等漏洞
6)Apache Tomcat
默认凭证:账号admin/tomcat,密码admin/tomcat
爆破技巧:
认证字段为Authorization: Basic base64(用户名:密码)
爆破时需关闭URL编码避免等号被编码
通过返回状态码判断爆破结果
7)ActiveMQ组件
默认凭证:账号admin,密码admin
8)RabbitMQ
默认凭证:账号admin/guest,密码admin/guest
特点:支持匿名访问
9)Druid组件
默认凭证:账号admin,密码123456
常见框架:常与若依系统、Spring Boot一起出现
未授权访问:直接访问监控目录可进入界面
9)若依系统
默认凭证:admin,密码admin123
- 弱口令爆破思路
四种爆破方式:
用户名固定admin爆破密码
密码固定123456爆破账号
先枚举有效用户再爆破密码
国内系统常用账号字典:admin/root/administrator等
手机号爆破:使用test-phone.txt字典枚举有效手机号
响应差异:
有回显:先爆破有效账号再爆破密码
无回显:固定密码爆破账号或通过响应时间差异判断
应用案例
1)例题:弱口令爆破尝试
目标选择:选择国外系统进行测试,避免国内系统备案问题
搜索技巧:使用FOFA搜索语法body="登系"&& country="US"定位目标
结果分析:获得25,503条独立IP,4,503条智能去重后的结果
工具使用:通过Metabase平台进行数据分析,显示年内数据
注意事项:
国外系统连接较慢,可能需要使用代理
国内备案系统风险较高,应避免测试
连接问题:遇到"您的连接不是私密连接"警告
证书问题:服务器证书无效,可能是配置错误或被拦截
2)例题:弱口令登录尝试
框架识别:发现使用ThinkPHP框架的系统
备案检查:首先检查系统是否有备案,国内备案系统风险较高
测试方法:即使发现是国内系统,仍可进行测试验证
测试步骤:
尝试常见用户名如"admin"
测试手机号格式账号
观察系统响应判断有效性
响应分析:
"用户不存在"提示可用于枚举有效用户
错误代码100表示账户不存在
返回格式为JSON:{'error_code':100,'msg':'账户不存在','token':false}
字典选择:
初始字典效果不佳时更换常用字典
注意中国系统使用xss插件可能导致速度变慢
结果判断:
零返回值不一定是登录成功
主要观察系统返回的错误格式和代码
"格式错误"与"用户不存在"是不同的响应类型
ThinkPHP框架介绍
核心版本: ThinkPHP V5.1.41 LTS(长期支持版)
设计定位: 专为API开发设计的高性能PHP框架
版本特性:
提供十年维护周期(字幕提及"十年一为AP开常设计")
优化了搜索性能(字幕提及"boosted search speed")
- 环境变量配置
关键变量:
IP_CLCELL: 客户端IP检测标识
TP_ACCEPT_LANGUAGE: 多语言支持配置(字幕显示"th-Cs, th :g-2.?")
SEC_FETCH_SITE: 跨域请求安全控制
配置注意: 需检查qpa-version扩展兼容性(PPT显示版本4.3.1)
- 新功能特性
核心改进:
支持在压缩文件中单行匹配搜索结果(字幕强调"View all matches in a line")
提升模板引擎解析效率(PPT显示"Highlights from the Chrome 118 update")
问题修复:
解决FLEX_FELFLX布局兼容性问题
优化PATH路径处理逻辑(PPT出现多次"FaTH 新功能问题"提示)
- 常量定义规范
系统常量:
LE3_PAT: 路径基准常量(PPT显示po'ereilotiauliErargt)
CRTDAO_JaNI: 数据库连接标识
开发建议:
常量命名需遵循大写+下划线规范
避免直接修改核心常量(字幕提及"师傅,能一一把说我看一下"的检查请求)
版本号红问题
高危警告:该版本号(4.9.144)存在严重安全漏洞,极易被攻击者利用
典型表现:系统报错显示"控制器不存在"错误(app\mobile\controller\Lo1)
环境特征:常见于HTTP/1.1环境,伴随Transfer-Encoding: chunked等异常响应头
验证方法:通过FOFA引擎搜索body="默号丁机号"&&country="US"可发现大量暴露实例
攻击特征:常出现Cloudflare等CDN特征(Server: cloudflare)
风险等级:京公网备案系统也受影响(备案号11010102005893号)
四、系统防护建议
调试关键:需重点检查Module.php第95行控制器加载逻辑
调用链分析:
Module.php触发异常
Dispatch.php处理失败
App.php第412行路由解析错误
内存特征:异常时内存显示为2{20}~2{30}区间值
检测要点:
Accept头异常:包含test/sbal等非常规MIME类型
存在伪造语言头(zh-CN,zh;q=0.9)
携带base64编码参数(login_pwd=12345o)
防御方案:
升级至安全版本(建议≥5.1.0)
过滤非常规Content-Type
禁用chunked传输编码
信息收集技术
- FOFA搜索引擎使用
语法结构:body="手机号" && country="US" 表示搜索美国地区包含手机号的网页
数据限制:会员支持显示一年内数据,点击"all"查看所有结果
典型应用:共找到5,600,530条匹配结果(实际显示139,551条)
- 字典生成技术
推荐工具:瞎子编写的字典生成插件
生成依据:
姓名、手机号等敏感信息
可自定义生成规则
应用场景:结合第一节课的信息收集内容使用
- 实战案例演示
示例特征:
HTTP/1.1 200响应
Cloudflare网络服务(ASN 13335)
包含特定HTML结构
识别要点:
注意响应头中的Server字段
观察Transfer-Encoding等协议特征
- 常见错误排查
典型错误:控制器不存在(app\mobile\controller\Lo1)
调试方法:
检查调用堆栈(Call stack)
验证环境变量(Environment Variables)
查看请求数据(Request Data)
- 网络协议分析
关键字段:
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
安全标识:
CF-Ray追踪码
服务器时间戳(Date字段)
菠菜公司示例
- 菠菜公司示例弱口令爆破
1)验证码复用漏洞
漏洞特征: 验证码可以重复使用,系统未设置失效机制
利用方法: 获取有效验证码后,可在多次爆破尝试中重复使用
实例演示: 使用"test123/123456"组合成功爆破出未激活账号
2)信息收集方法
企查查查询: 获取公司全称、联系电话等基本信息
公众号采集: 通过文章底部收集小编联系方式
数据组合: 将收集的电话、QQ、姓名拼音等组合生成字典
3)爆破实战过程
字典构建: 包含常用密码(如123456)、姓名全拼/简写、TOP300姓氏
爆破策略:
先固定账号爆破密码
再固定密码爆破账号
结果分析: 成功爆破出多个未激活账号,验证系统脆弱性 - 弱口令爆破思路总结
1)常见爆破策略
固定账号法: 针对admin/root等常见管理员账号爆破密码
固定密码法: 使用123456/000000等弱密码爆破账号
枚举用户法: 当系统存在用户回显差异时可先枚举有效用户
2)行业特定字典
教育系统: teacher/student+学号,密码常用身份证后六位
企业系统:
员工工号(需分析编号规则)
姓名拼音组合(全拼+简写)
IoT设备: admin/admin123等厂商默认凭证
3)加密处理应对
逆向分析: 通过JS代码查找加密函数
AI辅助: 将加密代码提交GPT等工具分析
变通方案: 当密码加密时,固定加密密码爆破用户名
4)实战经验总结
信息深度挖掘: 学号/工号等编号规则往往成为突破口
验证码处理: 注意观察是否可复用或存在逻辑缺陷
权限利用: 即使测试账号也可测试系统功能漏洞
高危提醒: 护网行动中弱口令漏洞占比极高,需重点检测
字典优化: 推荐使用插件生成包含姓名、日期、特殊组合的复合字典
系统识别方法
- 国外系统的识别特征
不适用性:国外系统通常不符合中文姓名的处理需求
识别难点:需要特殊框架来处理中文特有的需求 - 洛伊系统的典型特征
- 界面识别
UI特点:具有独特的界面设计风格,老版本特征明显
视觉标识:绿色图标是洛伊系统的显著标志
快速识别:经验丰富者可以"一看就知道",无需深入检查 - 登录配置
默认设置:系统常保留默认账号密码
安全问题:后台配置文件未修改会导致直接暴露登录凭证
二次开发:系统可能经过二次开发(二开)
- 框架识别技术
后续内容:常用框架识别方法将在后续课程中详细讲解
API漏洞:找不到特定路由时可能涉及API接口漏洞问题 - 实践技巧
经验积累:通过多次实践("挖多了")可以培养快速识别能力
版本判断:通过UI界面可以判断系统的大致版本
条件竞争 (并发)
并发漏洞
1)并发漏洞的定义与原理
- 定义:发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中
核心原理:利用时间差,当大量数据包在同一时间或极短时间内发送到后端时,数据库判断会出现错误 - 典型场景:
共享资源未加锁
关键操作未同步
竞态条件未处理
2)并发漏洞在签到功能中的应用
- 操作流程:
发送签到数据包
后端接收数据包
数据库判断今日是否已签到
返回响应包 - 漏洞触发:
判断机制:数据库通过SQL语句检查签到记录
漏洞成因:同一时间大量请求导致数据库判断失效
结果:所有请求都被判定为未签到,造成重复签到
关键特征:
功能限制为每天/每人只能操作一次
后端缺乏原子性操作或锁机制
3)并发漏洞在点赞功能中的应用
- 相似流程:
发送点赞数据包
后端接收数据包
数据库判断是否已点赞
返回响应包 - 漏洞表现:
同一时间发送多个点赞请求
数据库查询不到点赞记录
导致多次点赞成功
防御缺失:
未使用事务处理
缺乏分布式锁
未实现幂等性设计
turbo-intruder工具
1)工具介绍
功能特点:
支持发送大量HTTP请求
可分析请求结果
适用于内存消耗大的多日攻击
支持无头(headless)模式运行
项目地址:https://github.com/portswigger/turbo-intruder
2)插件下载与安装
官方渠道:
Burp Suite的BApp Store中搜索"turbo-intruder"
直接下载编译好的jar文件(非源代码)
手动安装:
访问GitHub发布页
下载最新release版本(如1.2.0)
在Burp中导入jar文件
3)插件版本与更新
最新版本:1.2.0(预发布版)
常见问题:
版本兼容性提示(即使最新版也可能显示)
建议直接从GitHub下载而非BApp Store
版本对比:
1.0.19:稳定版本
1.2.0:新增功能但可能不稳定
4)使用教程
操作步骤:
捕获目标请求包
右键选择"Send to turbo intruder"
界面会显示请求数据和脚本编辑区
关键区域:
请求编辑区:修改请求参数
脚本选择区:选择攻击脚本
结果展示区:查看响应数据
5)并发脚本选择
推荐脚本:race.py(专为并发测试设计)
其他脚本用途:
大批量爆破(但易触发IP封锁)
参数模糊测试
速率限制测试
脚本位置:examples/目录下
6)脚本配置与参数设置
核心参数:
并发次数:默认30次(可调整)
请求间隔:控制请求发送频率
超时设置:决定等待响应时间
注意事项:
高并发可能导致服务不可用
需要根据目标承受能力调整参数
建议在测试环境先验证效果
抓包测试示例
1)并发漏洞测试方法
测试步骤:
通过抓包工具捕获点赞请求数据包
确认目标数据包后,选择User-Agent头部进行修改
使用并发工具发送修改后的请求
验证方法:
观察点赞数量变化:如果存在并发漏洞,点赞数会异常增加
原始点赞数为46,测试后若变为47则说明漏洞已被修复
2)并发测试操作演示
关键操作:
在抓包工具中选择目标请求
配置并发攻击参数,重点修改User-Agent
启动并发测试并观察响应
注意事项:
测试时需注意服务器可能存在的防护机制
大量并发请求可能导致账号被封禁
3)测试结果分析
结果判断:
通过对比测试前后点赞数量的变化验证漏洞存在性
本案例中点赞数仅增加1,说明系统已修复并发漏洞
失败处理:
当测试不成功时,应检查请求参数是否正确
确认测试环境是否被限制(如IP封禁、账号限制等)
并发存在的地方
1)签到领积分
突破限制原理:通过并发请求可以突破系统"每天只能签到一次"的限制
典型案例:积分商城系统
测试方法:使用Turbo Intruder等工具同时发送多个签到请求
2)领优惠券
正常限制:通常用户只能领取一张优惠券
并发效果:通过并发可以领取多张优惠券
业务影响:可能导致优惠券被大量领取,影响营销活动效果
3)使用优惠券
应用场景:下单时选择优惠券
测试方法:在提交订单时并发请求
验证标准:如果生成多个订单且都使用了优惠券,则漏洞存在
4)取消订单退还优惠券
业务逻辑:取消订单后优惠券应退回
漏洞表现:并发取消可能退回多张优惠券
实际案例:外卖平台曾出现此类漏洞
5)提现
测试点:在确认提现时进行并发测试
风险等级:高危,直接涉及资金操作
6)开发票
漏洞影响:特别是增值税专用发票,可能被用于虚假报销
测试方法:并发开票请求,检查发票编号是否唯一
7)点赞与取消点赞
点赞漏洞:可能导致点赞数异常增加
取消点赞:可能将点赞数刷为负数
业务影响:影响内容热度算法和排名
8)关注与取消关注
关注漏洞:可刷粉丝数量
取消关注:可能导致粉丝数异常减少
典型案例:社交媒体平台的粉丝数操纵
9)收藏与取消收藏
计数机制:类似点赞功能,影响内容热度
应用场景:抖音等短视频平台的收藏功能
10)积分兑换
测试方法:在积分不足时并发兑换请求
验证标准:生成多个兑换订单即存在漏洞
典型案例:中国移动积分商城兑换商品
11)领取试用会员
正常限制:每个用户只能领取一次试用会员
漏洞表现:通过并发可获取多次试用权限
12)抽奖
突破原理:绕过抽奖次数限制
测试方法:在抽奖机会用尽后并发请求
13)直播间礼物
漏洞原理:用少量虚拟币送出大量礼物
高危操作:2000币的礼物通过并发可送出多个
变现风险:可通过自己直播间刷礼物套现
14)直播间竞猜
消耗机制:竞猜消耗积分
测试方法:用少量积分并发参与多次竞猜
15)绕WAF
原理:WAF需要时间分析恶意请求,并发可使其过载
方法:同一时间发送大量恶意请求
效果:类似DDoS攻击,可能使WAF失效
16)文件上传
应用场景:黑白名单校验的文件上传功能
测试方法:并发上传恶意文件
案例:部分靶场存在此类漏洞
17)只能用一次的功能
核心原则:任何"一次性"功能都可能存在并发漏洞
测试思路:对限制使用次数的功能进行并发测试
随机找站测试
1)直播平台介绍
平台定位:以游戏直播为主的弹幕式互动直播平台
用户规模:累计注册用户2亿,日活用户85万人
主要内容:
热门游戏直播(如英雄联盟、王者荣耀、和平精英等)
电竞赛事与游戏赛事直播
手游直播
特色功能:提供高清流畅的互动式直播服务
2)并发测试点讨论
弹幕系统:短时间内发送相同内容的弹幕可能存在并发问题
礼物系统:刷礼物功能是典型的高并发场景
登录系统:签到功能是必测的并发点
关注机制:订阅/关注功能可用来刷粉丝量
举报功能:同一用户可能多次举报同一内容
3)签到功能并发测试
测试重点:验证签到功能是否能防止重复签到
测试方法:模拟多线程并发签到请求
预期问题:可能出现单日多次签到获取额外积分的情况
4)订阅与关注功能并发测试
功能本质:订阅相当于关注功能
测试风险:可能被用来恶意刷粉丝量
测试要点:关注/取消关注操作的并发控制
5)举报功能并发测试
测试特点:举报功能理论上应允许多次举报
测试重点:验证系统是否能正确处理高频举报
潜在问题:恶意用户可能利用并发举报进行骚扰
6)刷礼物与红包并发测试
红包功能:小程序红包和礼物红包都存在并发风险
测试场景:
小额红包高频发送(如5元红包并发发送)
礼物批量赠送
风险后果:可能导致用户用少量资金发送大量红包
7)竞猜功能并发测试
功能特点:需要消耗积分参与竞猜
测试要点:验证积分扣除和竞猜结果的并发一致性
测试方法:模拟多线程同时参与同一竞猜
预期问题:可能出现积分扣除异常或竞猜结果不一致
社交功能:
用户互动:支持商品评价点赞功能,测试发现可连续多次点击
邀请机制:存在邀请好友获得奖励的营销功能,需测试并发邀请是否会产生异常奖励
支付安全:
支付环节需特别测试并发下单是否会导致超额扣款或支付漏洞
优惠券组合使用场景下需验证金额计算准确性
邀请功能测试
1)并发测试原理
测试场景:APP会员功能中,通过邀请新用户输入邀请码可免费获得会员
并发点:在用户输入邀请码的环节可以进行并发测试
预期漏洞:通过并发请求可能突破"一个邀请码只能使用一次"的限制
2)测试方法
操作步骤:
捕获输入邀请码时的网络请求包
使用并发工具同时发送多个相同请求
验证是否获得多次会员权益
漏洞表现:系统错误地将同一邀请码识别为多个有效邀请
库存限制测试
1)测试场景
限制条件:商品库存仅剩1件
测试目标:验证系统是否能正确处理库存不足情况
2)并发测试方法
测试步骤:
在提交订单环节进行并发请求
同时发送多个购买请求
检查是否生成多个订单
漏洞表现:系统生成多个订单,突破库存限制
任务完成测试
1)积分任务测试
任务类型:
每日登录领取积分(手动)
浏览特定页面自动领取积分(含倒计时)
2)并发测试方法
手动任务:
捕获手动领取积分的请求包
并发发送多个请求
自动任务:
捕获倒计时结束时的自动请求包
并发重放该请求
漏洞表现:单次操作获得多次积分奖励
3)悬赏任务测试
测试场景:任务完成最后一步的"确认完成"按钮
并发风险:
并发点击可能导致多次发放奖励
特别是与资金相关的功能风险等级高
货币转换测试
测试原理:平台存在两种可相互转换的货币体系
漏洞机制:通过并发请求实现货币异常增值
示例:多次并发转换会导致"越转越多"
测试方法:
设计并发数据包进行转换操作
监控货币数量变化是否超出预期
云手机功能测试
1)试用时长漏洞
正常流程:新用户可领取15分钟免费时长
漏洞利用:
对领取按钮进行并发操作
实际可获得75分钟(正常值的5倍)
危害评估:通过并发可无限"白嫖"使用时长
2)产品试用限制突破
常规限制:试用产品通常设置购买数量限制
测试方法:
进入订单确认环节
对支付环节进行并发操作
漏洞表现:
生成多个0.1元订单
突破单账号试用数量限制
实现"无限试用"效果
3)通用测试要点
重点测试对象:
货币/积分转换系统
签到奖励机制
任务完成奖励
积分商城兑换
漏洞本质:未对并发请求做有效限制
危害升级:当涉及实际金钱交易时危害更大
越权
水平越权
1)水平越权测试
- 关键方法:测试水平越权最重要的是找到由ID控制的功能点
- 典型场景:购物网站中常见的ID控制功能包括:
收货地址(增删改查)
发票地址(增删改查)
优惠券使用(修改为其他账号的优惠券ID)
提交订单(使用其他用户的地址ID)
订单号(查看他人订单信息)
商品评价(删除他人评价)
2)水平越权简介
水平越权概述
-
定义:当用户A和用户B具有相同权限等级时,若系统仅验证角色权限而未校验数据归属,导致用户A能访问用户B的数据,称为水平越权访问
本质:权限校验不完整,未对数据做细分校验
ID控制的功能点
-
核心特征:通过修改请求中的ID参数来测试越权漏洞
测试重点:所有涉及用户数据操作的功能都应检查ID参数控制情况
-
典型示例:
购物车商品ID
收藏夹商品ID
用户个人信息ID
购物网站案例
-
收货地址:
增删改查测试:尝试增加/修改/删除其他用户的地址ID
实现方式:大部分网站通过地址ID进行数据关联
发票地址:与收货地址类似,测试增删改查操作
收藏功能:通过商品ID控制,测试修改收藏ID
优惠券与订单ID控制
-
优惠券系统:
测试修改优惠券ID为其他用户的券
注意区分自己和他人的优惠券ID
-
订单系统:
测试修改订单ID查看他人订单
测试提交订单时使用他人地址ID
-
其他系统案例
学习管理系统:测试课程ID、用户ID等参数
通用原则:任何系统只要存在ID参数控制的数据访问,都可能存在水平越权风险
防御建议:服务端必须校验当前用户与请求数据的归属关系
3)应用案例
例题:水平越权漏洞
ID控制机制:系统通过项目ID控制各项功能,包括点赞、收藏、公告等功能都需要获取项目ID
URL识别:通过查看URL栏可以明显看到项目ID,这是识别ID控制的最直接方式
功能关联:实现任何功能都需要先获取项目ID,再调用相应功能接口
例题:Bitstamp平台水平越权
ID唯一性:每个项目都有对应的唯一ID,通过点击项目可在URL中查看
公告ID控制:每个公告也对应独立ID,访问公告时会显示在URL中
页面独立性:每个公告都有独立页面,通过不同ID区分
例题:成就功能水平越权
成就ID结构:成就数据采用JSON格式,包含badge_id等标识字段
隐藏成就获取:通过修改用户ID可以尝试获取本应隐藏的成就信息
数据公开性判断:部分成就信息虽然是公开的,但修改ID仍可能获取未授权数据
例题:用户ID修改问题
ID替换测试:将接口中的用户ID替换为其他用户ID进行访问测试
数据泄露风险:如果系统未做权限验证,可能获取其他用户的私有成就数据
功能限制:添加好友、拉黑等功能虽然也使用ID,但属于正常功能范围
例题:报告附件ID控制
报告ID特性:每个报告都有复杂ID字符串,不同于简单的顺序编号
附件访问控制:报告附件通过报告ID进行控制,可能单独获取
越权测试方法:通过互换报告ID测试能否访问其他用户的报告附件
权限验证缺失:如果系统未验证报告所有权,可能导致附件信息泄露
控制台
隐藏报告获取:正常情况下无法查看的报告,可以通过特定方法获取到相关图片和视频内容
漏洞风险:这种非正常获取报告的方式可能存在安全漏洞风险
数据获取方式:
可以通过过滤反转数据网址等方式获取隐藏内容
支持多种文件类型获取:Fetch/XHR、JS、CSS、图片、媒体、字体等
安全建议:
在漏洞标记为已解决前,建议不要请求公开报告
公开请求不会加快提交转换过程
回复功能
-
功能测试思路
核心数据获取:
需要获取报告ID作为回复目标
用户ID通常通过cookie自动识别,但测试时需考虑手动获取的情况
测试方法:
将报告ID替换为他人ID测试越权回复
验证系统是否能正确识别并阻止非授权用户的回复操作
安全边界:
测试是否可以通过修改ID参数控制发送人身份信息
检查系统对伪造用户ID的防御机制
-
测试注意事项
细粒度验证:
需要测试所有相关子功能的完整性
包括但不限于:消息发送、附件上传、身份验证等环节
异常场景:
测试系统对恶意内容上传的防护能力
验证缩略图等文件上传时的安全过滤机制
-
常见测试盲区
易忽略点:
跨站点请求伪造(CSRF)防护
虚拟现实环境下的功能兼容性
高频请求时的节流机制有效性
测试技巧:
使用不同权限账户进行平行测试
检查日志记录完整性
-
测试结果验证
验证标准:
确保所有测试用例都有明确的通过/失败标准
需要验证前端展示与后端数据的一致性
常见问题:
400错误可能由参数格式错误引起
需检查元数据(如/thmbl.png)的访问权限控制
小众功能与漏洞分析
基础操作逻辑:所有功能操作前需先获取报告ID,这是系统设计的首要步骤
关键验证点:通过修改报告ID测试是否存在越权漏洞,这是安全测试的核心方法
-
报告ID机制
功能关联性:所有子功能都依赖报告ID作为操作凭证,包括编辑、删除等敏感操作
测试发现:实际验证显示修改ID后仍可操作,证明存在越权风险(字幕原文:"你看跟我们的这个ID是一样的。是吧,那我们把这个ID改成别人的,但是那如果操作成功的话")
-
功能细粒度分析
隐蔽风险:部分功能(如CrowdStream可见性设置)存在细粒度权限控制缺陷
测试要点:需要特别关注ID参数传递过程中的权限校验机制(字幕原文:"所以有些功能它是很细的有些。就会忽略这些功能")
-
披露功能分析
操作前置条件:披露功能同样需要先获取报告ID才能发起请求
业务逻辑:系统建议在漏洞标记为已解决后才请求披露,这是标准的漏洞管理流程
-
编辑与删除功能
新增发现:测试过程中意外发现隐藏的编辑和删除功能(字幕原文:"你看这里又有一又多出两个功能来编辑")
测试方法论:强调需要细致测试每个功能点,不能遗漏任何可能的操作入口
-
测试案例
实际案例:演示了通过修改ID参数实现越权访问的具体过程
修复验证:案例显示系统对前后字符进行了限制,但存在新的绕过方法(字幕原文:"交的漏洞利用方法已经通过重新测试修复,限制前后字符。我使用了新的方法")
-
测试注意事项
测试深度:必须对所有功能进行完整测试链验证,包括看似次要的功能
记录要求:需要详细记录每个测试步骤和系统响应,这是漏洞报告的关键证据
边界检查:特别注意参数传递过程中的类型转换和边界值处理
编辑功能
-
ID控制机制
ID修改原理:通过修改报告ID可以访问其他用户的报告内容
测试要点:需要细致测试ID参数是否可以被篡改,验证是否存在越权访问风险
-
漏洞利用案例
CSRF漏洞示例:跨站请求伪造(CSRF)漏洞可导致特定操作被恶意执行
漏洞状态:已提交2个月但未解决,ID为3113cdh5-135b-ao5?-3h-dana71
目标信息:虚拟现实测试站点,错误网址包含敏感参数
-
付款功能安全
付款控制:付款功能涉及金额较大(总额$2,500),需要严格控制访问权限
付款周期:太平洋时间每个工作日上午9点进行汇款
-
下载功能风险
高危漏洞:曾发现通过下载功能越权获取他人身份证信息的漏洞,获利8000元
控制要点:需要验证下载功能是否使用用户ID或报告ID进行权限控制
-
功能安全测试方法
测试重点:
识别系统中所有使用ID参数的功能点
验证ID参数是否可以被篡改
检查筛选类功能是否会保存操作状态
风险判断:仅提供筛选但不保存操作的功能通常不存在越权风险
-
潜在漏洞位置
高风险区域:
个人资料编辑功能
文件下载功能
付款记录查看功能
验证方法:通过数据包分析确认ID参数的使用方式和权限控制机制
个人资料编辑功能
ID控制原理:系统通过用户ID识别并控制个人资料的修改权限
功能实现:
编辑个人简介需要获取用户ID
修改信息通过ID进行权限验证
特殊功能(如头像/封面修改)需要ID授权
图片上传功能
- 上传控制机制
ID验证:
头像上传必须验证用户ID
封面图更换需要ID授权
技术实现:
通过请求包中的ID参数控制
可能结合cookie进行双重验证 - 测试方法
测试要点:
检查上传请求是否包含用户ID
验证ID参数修改后的系统响应
测试cookie与ID的联动控制
测试工具:
使用临时邮箱注册测试账号
通过抓包工具分析请求参数
八、付款方式控制机制 - ID控制原理
隐私性:付款方式通过用户ID进行控制,确保只能本人查看
验证方法:可通过输入测试数据验证ID控制机制(如"我们随便输几张")
异常情况:当系统只有一个地址时,ID控制可能失效 - Cookie验证机制
备用方案:在ID控制不可用时,系统可能转为使用cookie验证用户身份
技术验证:
通过检查响应数据包确认验证方式
搜索地址ID未果时,可确定使用cookie控制
示例:"返回的页面就有我们这个信息...直接用我们的cookie进行判断" - 系统功能限制
功能缺陷:当前系统功能较少,主要控制点在于:
商品ID(但实际作用有限)
网站核心功能模块
测试技巧:短期测试时可采用"我们自己生存一个星期就行了"的简化方案 - 调试方法
工具使用:推荐使用BP(Burp Suite)进行数据包分析
排查步骤:
检查响应数据
搜索地址ID字段
确认cookie中的用户标识
判断依据:当找不到地址ID时,可确认使用固定cookie控制
数据包ID测试方法
- 常见ID位置:
URL参数中(如/user?id=123)
POST请求的data字段中(JSON或表单格式)
Cookie头部信息中 - 测试流程:
识别数据包中的用户ID参数
单独修改URL中的ID,保持data不变,观察响应
单独修改data中的ID,保持URL不变,观察响应
同时修改URL和data中的ID为相同值,观察响应 - 结果分析:
若仅修改URL的ID就能获取其他用户信息 → URL参数控制权限
若仅修改data的ID就能获取其他用户信息 → 请求体参数控制权限
需要同时修改两者才能生效 → 系统进行了双重校验
任意修改均无效 → 可能存在其他校验机制 - 请求类型差异:
GET请求:ID通常出现在URL查询参数中
POST请求:ID可能出现在:
URL路径(如/user/123)
表单数据(form-data)
JSON请求体(application/json)
特殊格式处理:
JSON格式需要保持语法正确性
URL编码需注意特殊字符处理
测试时要维持原始数据包结构 - 测试要点:
每次只修改一个变量(科学对照原则)
记录原始值和修改值便于回滚
注意观察响应状态码和错误信息 - 测试用例应包含:
有效ID的合法请求(基线)
修改为相邻ID(如123→124)
越权访问高权限ID(如普通用户→管理员)
异常值测试(如非数字ID、超长ID等) - 安全防御建议:
服务端应对所有ID参数进行权限校验
建议使用会话机制替代显式ID传递
敏感操作应增加二次认证
日志记录所有ID修改尝试
权限控制漏洞测试
- ID参数越权测试
用户ID控制:通过修改did参数实现用户身份控制,如将student ID改为teacher ID
垂直越权:当student和teacher权限不同时,修改ID会导致权限升级漏洞
敏感参数识别:需特别关注admin ID、uuid等敏感参数字段 - 测试方法
参数修改:直接修改请求中的vid、did等ID参数值
URL解码:对编码参数进行解码可暴露敏感信息
并发测试:通过并发请求检测权限校验漏洞
十一、功能点测试案例 - 点赞功能测试
文章ID控制:通过修改文章ID参数实现跨用户点赞操作
视频ID测试:vid参数控制特定视频的点赞行为
越权验证:修改ID后检查是否能操作非授权资源 - 删除功能测试
删除权限校验:测试删除操作是否校验用户权限
参数遍历:通过顺序ID尝试访问其他用户数据
水平越权:相同权限用户间的未授权访问
十二、安全测试技巧 - 敏感信息识别
关键字监控:重点监控teacher、admin、student等权限相关词汇
参数分析:检查所有ID类参数是否可预测或可枚举
数据关联:注意参数间的关联关系(如userID与did的对应) - 测试流程
请求分析:检查数据包中所有ID参数
参数修改:逐步修改各ID参数值
结果验证:确认是否获取未授权数据或权限
十三、越权漏洞分析 - 编辑功能越权风险
ID获取机制:编辑功能需要获取尺码表对应ID,系统通过ID识别操作对象
漏洞成因:未校验用户权限与操作ID的归属关系,导致可越权编辑他人数据
危害示例:修改他人尺码表数据可能影响商品交易准确性 - 删除功能漏洞
漏洞特征:删除功能存在未修复的越权漏洞,危害等级为中级
漏洞价值:单个删除功能漏洞赏金可达2000元
测试盲区:多数测试者忽略删除功能的权限校验分析 - 评论系统越权
ID验证缺陷:评论功能本应通过cookie验证用户身份,但实际通过请求头传递用户ID
攻击方法:修改数据包中的用户ID字段即可冒用他人身份发表评论
高危场景:若可获取官方账号ID,可能造成权威账号虚假评论
垂直越权原理
- 基本概念
定义:不同权限级别用户间的非法权限跨越
向上越权:低权限用户访问高权限功能(如普通用户执行管理员操作)
向下越权:高权限用户访问本应受限的低权限敏感信息(如查看用户密码) - 典型漏洞场景
密码重置功能:低级用户可能越权重置高级用户密码
权限修改功能:低级用户可能越权提升自身权限等级
信息查询功能:管理员可能越权查看普通用户的敏感信息 - 测试方法
测试工具:使用专业越权测试插件(如"侠客"插件)
测试步骤:
准备不同权限等级的测试账号
抓取高权限操作的数据包
替换为低权限用户的身份凭证
验证操作是否成功执行
判断标准:低权限用户成功执行高权限操作即存在漏洞
重设密码功能
漏洞特征:密码重置请求未严格绑定用户身份验证
攻击向量:修改请求中的用户ID参数可重置任意账户密码
防护建议:
增加二次身份验证
绑定操作令牌与登录会话
记录敏感操作日志
应用案例
- 例题:用户权限越权添加
案例背景: 使用普通员工账号演示权限越权漏洞,该账号仅有添加用户的基础权限
漏洞原理: 通过修改用户类型关键字实现权限提升
将普通用户类型修改为"admin"关键字即可创建管理员账号
其他可修改的关键字包括:匿名用户、普通用户等
检测方法:
重点关注数据包中的权限控制字段
分析系统功能点的权限校验机制
测试不同用户类型关键字的修改效果
越权绕过技巧
- 状态码绕过
适用场景: 遇到401/403等权限拒绝状态码时
方法1-数组绕过:
将JSON格式参数改为数组形式
示例:在用户ID参数后添加逗号和其他用户ID
方法2-参数污染:
重复添加相同参数但不同值
示例:userID=1&userID=2 - 通配符技巧
通配符使用:
在查询参数中使用通配符()查询所有用户
示例:userID=
URL编码:
对特殊符号进行URL编码绕过过滤
示例:将*编码为%2A - 版本降级攻击
原理: 测试旧版本接口的权限控制
操作方法:
修改API版本号(如v3改为v1/v2)
检查旧版本接口是否存在越权漏洞 - 请求格式修改
方法1-格式转换:
在URL后添加/删除.json后缀
示例:/api/user → /api/user.json
方法2-请求方法变更:
切换GET/POST/PUT等HTTP方法
测试不同方法下的权限校验差异 - 请求头绕过
Referer头操作:
修改或删除Referer请求头
GUID替换:
将长GUID值简化为0或1
示例:guid=123e4567... → guid=0
cors+xss漏洞
跨域资源共享
1)CORS是什么
定义: CORS(跨域资源共享)是一种浏览器安全机制,用于控制跨域请求的访问权限。
出现场景: 当网页尝试从一个域名请求另一个域名的资源时触发,常见于AJAX跨域请求。
安全作用: 防止潜在的安全风险,如敏感数据泄露。
实现位置: 主要配置在服务端,通过服务器响应头控制跨域权限。
典型组合: 常与XSS攻击配合使用,需要特别注意安全配置。
2)CORS和CSRF的区别
-
本质区别:
CORS: 是一种安全机制,用于限制浏览器跨域请求资源。
CSRF: 是一种攻击技术,欺骗用户执行非预期操作。
-
出现位置:
CORS漏洞: 主要出现在服务端配置不当。
CSRF攻击: 利用用户已登录状态进行攻击。
-
影响范围:
CORS风险: 可能导致敏感数据泄露。
CSRF风险: 可能导致未经授权的操作执行。
-
防御方法:
CORS防御: 正确配置服务器响应头:
Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
Access-Control-Allow-Credentials
CSRF防御: 使用CSRF令牌验证请求合法性。
-
跨域请求机制:
浏览器先发送OPTIONS预检请求
服务器响应允许跨域后才会发送真实请求
非简单请求(PUT/DELETE等)必须经过预检
跨域限制是浏览器的安全策略
3)测试CORS漏洞
例题:CORS漏洞测试
靶场说明:使用PortSwigger官方靶场进行演示,靶场地址为https://portswigger.net/web-security/cors
漏洞特征:网站具有不安全的CORS配置,信任所有来源
测试目标:编写JavaScript代码使用CORS检索管理员的API密钥
利用步骤:
检查浏览器历史记录观察密钥是否通过AJAX请求检索
在Burp Repeater中添加Origin头重新提交请求
构造HTML利用代码并上传到漏洞利用服务器
例题:CORS接口测试
测试方法:
添加Origin请求头测试跨域访问
检查响应头中Access-Control-Allow-Origin的值
测试Access-Control-Allow-Credentials是否为true
漏洞确认:
当响应头包含Access-Control-Allow-Origin: *时存在漏洞
允许任意来源携带凭证访问(Access-Control-Allow-Credentials: true)
可获取敏感信息如API密钥和会话cookie
问题解析
区别:
CORS:安全机制,控制跨域资源访问权限
CSRF:攻击技术,诱使用户执行非预期操作
防范方法:
CORS:正确配置服务器CORS策略
CSRF:使用CSRF令牌验证请求合法性
问题解析
利用代码:
bash
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/accountDetails',true);
req.withCredentials = true;
req.send();
代码解析:
withCredentials设置为true允许携带凭证
请求完成后通过reqListener函数处理响应
可将获取的敏感信息发送到攻击者控制的服务器
CORS
- 例题:百度域名CORS请求
- 跨域限制验证:当尝试从百度域名发起请求时,响应包中没有包含"Access-Control-Allow-Origin"头,说明该域名不允许跨域请求。
- 空值特性:本地HTML文件的origin值为null,某些靶场环境下空值可以绕过白名单限制。
- 例题:复制域名CORS请求
- 请求实现:通过XMLHttpRequest发送GET请求到目标域名,设置withCredentials为true携带凭证。
- 响应处理:当状态码为200时,将响应文本显示在页面元素中,否则显示错误状态码。
- 例题:CORS漏洞利用
- 漏洞特征:该网站存在不安全的CORS配置,信任null origin。
- 利用步骤:
构造包含恶意JavaScript的HTML文件
设置Origin为null
通过AJAX请求获取管理员API密钥
将获取的密钥提交到漏洞服务器 - 关键代码:需要设置withCredentials: true来携带会话凭证。
- 响应验证:成功响应中包含Access-Control-Allow-Credentials: true和Access-Control-Allow-Origin: null头,确认漏洞存在。
自动扫描结果
- 检测机制:系统会自动扫描当前环境中的漏洞,无需手动触发
- 异常情况:扫描过程中出现"洛克佛"(可能是Lockfile的误识别)文件被自动检测到
- 漏洞类型:检测到CORS(跨域资源共享)相关漏洞
- 安全等级:漏洞标记为"Web Security"级别
- 特征识别:系统能够自动识别可信null origin的漏洞情况
- 验证方法:通过发送特定请求包验证漏洞存在性
- 请求特征:使用HTTP/1.1协议,User-Agent显示为特定扫描工具
- 响应分析:系统会自动分析服务器响应中的安全头部缺失情况
- 修复建议:
建议检查服务器CORS配置
需要验证null origin的特殊处理
推荐添加严格的安全头部
关联功能:该漏洞可能影响API接口的安全性
例题: CORS漏洞利用案例
1)漏洞利用原理
- 信任null源: 当网站配置为信任null源时,攻击者可以利用特殊构造的iframe发起跨域请求
敏感信息泄露: 通过精心设计的请求可以获取用户敏感数据,但老师演示案例中未成功返回敏感信息 - 浏览器限制: 演示使用的是Google Chrome浏览器,建议使用Burp Suite内置浏览器进行测试
2)攻击实施过程 - 请求构造:
使用XMLHttpRequest对象发起跨域请求
设置withCredentials属性为true以携带用户凭证
精心设计请求头绕过安全限制 - 响应分析:
观察案例中服务器是否返回预期的敏感信息
3)实战注意事项
环境配置:
推荐使用Burp Suite的浏览器而非Chrome
需要正确配置代理和拦截设置
结果验证:
注意观察服务器响应头和实际返回内容
防御措施:
服务器应严格限制允许的源
避免使用通配符或信任null源
对敏感操作实施CSRF令牌保护
例题:CORS漏洞利用与空源绕过
1)漏洞利用原理
空源信任漏洞:当网站信任"null"源时,攻击者可以通过特殊构造的请求绕过CORS限制
利用条件:目标网站配置了Access-Control-Allow-Origin: null或类似宽松策略
攻击方法:使用<iframe>的sandbox属性生成空源文档,在其中执行跨域请求
2)绕过技术
sandbox属性:通过设置<iframe sandbox>可以创建空源上下文
请求构造:在沙盒iframe中使用XMLHttpRequest发送跨域请求
响应捕获:利用withCredentials=true携带受害者cookie
3)实际攻击演示
代码结构:
关键参数:必须设置withCredentials为true才能携带认证信息
绕过验证:当服务器返回Access-Control-Allow-Origin: null时,攻击成功
4)防御措施
严格源检查:不应信任null源,应明确指定允许的域名
凭证控制:敏感接口不应设置Access-Control-Allow-Credentials: true
正则验证:对Origin头进行严格正则匹配,避免通配符滥用
跨域安全
1)同源策略定义
三要素限制:协议(http/https)、域名、端口号必须完全相同
访问控制:当三要素任一不同时,浏览器会阻止跨域请求
典型场景:https访问http协议、主域名与子域名互访、不同端口间访问
2)空源漏洞利用
iframe特性:空源iframe可以绕过部分同源策略限制
攻击原理:利用<iframe>标签的src属性留空时产生的同源策略例外
payload示例:
bash
<iframe src="javascript:alert(document.domain)"></iframe>
子域安全测试
1)子域验证方法
测试步骤:
构造包含目标子域的请求
观察响应是否存在跨域错误
验证空源iframe的可行性
关键发现:部分子域配置不当会导致同源策略失效
2)COS漏洞利用
漏洞特征:跨域资源共享(CORS)配置错误
攻击向量:
恶意iframe嵌套
空源请求注入
防御措施:严格设置Access-Control-Allow-Origin头
安全测试案例
1)密钥泄露测试
测试流程:
构造特殊payload
通过iframe发起请求
捕获响应中的敏感信息
典型结果:成功获取API密钥等敏感数据
2)日志验证方法
验证步骤:
检查服务器访问日志
确认请求来源
分析请求参数
注意事项:需区分正常流量与攻击流量
应用案例
1)例题:登录后测试跨域
跨域漏洞测试方法
测试步骤:
首先测试百度域名是否允许跨域
测试目标自身域名
尝试使用通配符测试
最后测试子域名
关键发现:子域名1.0允许跨域请求,但带后缀的域名(如.baidu)不允许
利用条件:需要找到存在XSS漏洞的子域名或当前域名进行配合利用
跨域限制特征
域名限制:
主域名:允许跨域
子域名1.0:允许跨域
带后缀域名:禁止跨域
通配符测试:使用*通配符测试失败
空值测试:来源为空值的请求会被拒绝
2)例题:XSS漏洞测试
XSS漏洞检测方法
检测位置:
所有前端输出点
所有请求参数
测试方法:
对标题标签注入测试
对ID参数注入测试
发现store子域名存在可注入参数
验证方式:输入测试payload"he123"后页面有回显
XSS漏洞验证
成功案例:
在store子域名发现两个可注入参数
测试第一个参数成功弹窗
payload修改:
将原本输出long的代码改为弹窗代码
只需修改alert部分即可实现功能
本地测试:HTML文件来源为空值时无法触发漏洞
3)例题:存在网站XSS攻击
跨域与XSS组合利用
利用场景:
子域名存在反射型XSS漏洞
另一域名存在CORS漏洞
攻击步骤:
构造包含XSS payload的URL
通过CORS漏洞向目标域名发送请求
利用子域名的XSS漏洞执行恶意代码
注意事项:需要确保两个漏洞的域名关系符合CORS策略
攻击POC生成
生成方法:
明确漏洞存在位置(子域名XSS+主域名CORS)
构造包含恶意脚本的URL参数
测试不同来源的请求效果
调试过程:
初始POC存在语法错误
通过多次修改优化payload
最终实现跨域请求触发XSS
关键代码:需要在URL中完整包含攻击脚本,并正确处理参数编码
4)XSS漏洞攻击案例
反射型XSS漏洞
漏洞特征:参数中存在未过滤的用户输入导致脚本注入
攻击方式:通过构造特殊URL实现恶意脚本反射执行
典型场景:常见于搜索框、错误页面等动态内容展示区域
防御方法
输入过滤:对用户提交的参数进行严格验证
输出编码:使用HTML实体编码处理动态内容
HTTP头设置:配置Content-Security-Policy策略
5)SSRF攻击技术
超SS地址构造
地址特征:包含特殊协议(如gopher://)的内部系统地址
利用方式:通过服务端请求伪造访问内网资源
典型案例:演示了通过参数注入实现内网探测
防御措施
白名单校验:限制可访问的域名和IP范围
协议禁用:禁止非常用协议请求
错误信息:统一化错误提示避免信息泄露
6)域名重定向漏洞
攻击原理
漏洞成因:未验证的重定向URL参数
利用方法:构造恶意跳转链接实施钓鱼攻击
检测技巧:观察URL中的redirect/to等关键字参数
编码问题
URL编码:演示了%20等编码字符的绕过方式
双重编码:部分系统存在多层解码漏洞
防御建议:严格校验解码后的最终URL
7)反射型XSS漏洞
基本特征
参数控制:通过URL参数注入恶意脚本,如?param=<script>alert(1)</script>
无害测试:使用<h1>等基础HTML标签验证漏洞存在性
触发方式:需要特定参数值触发,不存储在服务器端
检测方法
输入点定位:
URL参数(包括路径和查询字符串)
表单字段(搜索框、评论区等)
HTTP头部(如Referer、User-Agent)
测试payload:
8)存储型XSS漏洞
核心特点
持久化存储:恶意脚本被保存到数据库/文件系统
自动触发:用户访问正常页面时自动执行
高危场景:
用户评论区(含富文本编辑器)
个人资料页(昵称/头像字段)
订单备注/站内信系统
攻击向量
文件上传绕过:
SVG文件包含JS代码:<svg><script>alert(1)</script>
PDF文件嵌入恶意脚本(需浏览器插件支持)
DOM操作滥用:
9)实战检测技巧
测试流程
定位所有用户输入点
注入基础探测payload(如<h1>test</h1>)
验证HTML解析情况
逐步升级为脚本执行测试
常见绕过技术
编码转换:
Base64编码:<script>eval(atob('YWxlcnQoMSk='))</script>
HTML实体编码:<script>alert(1)</script>
事件处理器:
10)防御方案
输入处理
过滤规则:
移除<script>、javascript:等危险模式
白名单方式允许安全标签(如<b>、<i>)
编码转换:
对< > " ' &等特殊字符进行HTML实体编码
输出控制
上下文敏感编码:
HTML正文使用HTML编码
HTML属性使用属性编码
JavaScript代码使用JS编码
11)典型案例分析
投票系统漏洞
漏洞场景:
投票名称字段未过滤HTML标签
存储后在前台展示时执行脚本
攻击效果:
窃取用户投票凭证
篡改投票结果显示
PDF预览漏洞
触发条件:
网站提供PDF在线预览功能
浏览器使用易受攻击的PDF插件
利用方式:
注:所有测试应在授权环境下进行,实际漏洞利用需遵守法律法规。防御措施应实施纵深防御策略,结合输入验证、输出编码、CSP等多层防护