src挖洞笔记分享_上

本文仅供学习参考,如任何人利用文中手段进行非法攻击与本人无关

红队企业信息收集

信息收集

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.查询企业信息

查询方式:可以通过企业名称直接搜索,类似爱企查等企业信息查询平台

操作步骤:在攻击面管理平台输入企业名称即可查询相关信息

  1. 系统与证书验证

证书验证:通过查看系统证书可以确认企业归属,证书信息是最直接的验证方式

系统筛选:需要使用筛选功能区分相似系统,确保找到目标企业的真实系统

  1. 域名与APP筛查

筛查范围:包括企业域名、APP、公众号等数字资产

筛查要点:需要仔细筛选,区分相似但不完全相同的资产

  1. 邮箱的作用

钓鱼攻击:收集到的企业邮箱可用于发送钓鱼邮件

多途径利用:可以通过手机邮箱等多种方式发送钓鱼邮件

  1. 源码泄露与审计

审计机会:如果发现企业源码泄露,可以进行代码审计

随机性:能否发现泄露源码具有一定运气成分

  1. 人员信息收集

爬虫收集:可以使用爬虫技术收集企业人员姓名信息

信息转换:将中文姓名转换为拼音形式便于后续利用

  1. 名字爬取与爆破

爆破技术:将收集到的姓名转换为拼音后可用于系统口令爆破

工具使用:可以使用文字转拼音工具快速完成姓名转换

  1. 工具使用与子域名爆破

推荐工具:

OneForAll:功能强大的子域收集工具

水泽:GitHub开源子域名爆破工具

Nemo:综合性的资产收集工具

灯塔魔改版:增强版资产探测工具

使用方法:工具通常提供详细说明文档,按照文档操作即可

子域名工具
  1. 灯塔系统安装与使用

系统安装要求:

操作系统支持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. 任务管理

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与红队收集方法相似但目标不同
    敏感信息需谨慎处理
    测试系统漏洞可延伸至正式系统
网络安全资产收集方法
  1. 无备案IP资产收集
  • 全端口爆破:针对只有IP没有备案的目标资产,首先必须进行全端口爆破扫描
  • 目录扫描:爆破完成后需扫描可能隐藏系统的目录路径
  • C段扫描:通过IP的C段扫描方法寻找关联资产,特别是政务网环境
  1. 资产识别技巧
  • logo识别:通过页面logo或图标识别系统类型(如锐捷路由器、海康威视监控等)
  • 指纹识别:搜索特定设备的指纹特征(如工控系统、园区管理系统等)
  • 标题检索:使用公司名称或缩写作为关键词检索页面body内容
  1. 政务网资产特点
  • 网络特性:政务网IP的C段通常都是政务网资产,具有高度关联性
  • 内网互通:多数政务网内部互通,除非省级有特殊隔离规定
  • DNS查询:进入内网后可通过DNS查询确定所属单位
  1. 特殊资产类型处理
  • 工控系统:通常不会部署在外网,但可能包含摄像头等物联网设备
  • 小程序资产:部分小程序可能直接使用IP而非域名
  • 通用系统:如监控设备可直接搜索C段或政务网时段
  1. 测试环境注意事项
  • 漏洞利用:测试环境发现的漏洞必须写入报告,不能留到下次测试
  • 数据安全:不下载敏感数据可降低被发现风险
  • 接口测试:测试环境接口可能在正式环境同样存在
  1. 资产搜索工具方法
  • 精准搜索:子域名推荐使用汉特(Hunter)等工具
  • 模糊搜索:使用百度等搜索引擎通过公司名/缩写查找
  • 耐心要求:模糊搜索需要较大耐心和技巧
  1. 绕口令漏洞挖掘
  • 价值说明:绕口令漏洞可能包含重要数据,在护网行动中价值较高
  • 实例分享: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

  1. 弱口令爆破思路

四种爆破方式:

用户名固定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")

  1. 环境变量配置

关键变量:

IP_CLCELL: 客户端IP检测标识

TP_ACCEPT_LANGUAGE: 多语言支持配置(字幕显示"th-Cs, th :g-2.?")

SEC_FETCH_SITE: 跨域请求安全控制

配置注意: 需检查qpa-version扩展兼容性(PPT显示版本4.3.1)

  1. 新功能特性

核心改进:

支持在压缩文件中单行匹配搜索结果(字幕强调"View all matches in a line")

提升模板引擎解析效率(PPT显示"Highlights from the Chrome 118 update")

问题修复:

解决FLEX_FELFLX布局兼容性问题

优化PATH路径处理逻辑(PPT出现多次"FaTH 新功能问题"提示)

  1. 常量定义规范

系统常量:

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传输编码

信息收集技术
  1. FOFA搜索引擎使用

语法结构:body="手机号" && country="US" 表示搜索美国地区包含手机号的网页

数据限制:会员支持显示一年内数据,点击"all"查看所有结果

典型应用:共找到5,600,530条匹配结果(实际显示139,551条)

  1. 字典生成技术

推荐工具:瞎子编写的字典生成插件

生成依据:

姓名、手机号等敏感信息

可自定义生成规则

应用场景:结合第一节课的信息收集内容使用

  1. 实战案例演示

示例特征:

HTTP/1.1 200响应

Cloudflare网络服务(ASN 13335)

包含特定HTML结构

识别要点:

注意响应头中的Server字段

观察Transfer-Encoding等协议特征

  1. 常见错误排查

典型错误:控制器不存在(app\mobile\controller\Lo1)

调试方法:

检查调用堆栈(Call stack)

验证环境变量(Environment Variables)

查看请求数据(Request Data)

  1. 网络协议分析

关键字段:

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8

安全标识:

CF-Ray追踪码

服务器时间戳(Date字段)

菠菜公司示例
  1. 菠菜公司示例弱口令爆破
    1)验证码复用漏洞
    漏洞特征: 验证码可以重复使用,系统未设置失效机制
    利用方法: 获取有效验证码后,可在多次爆破尝试中重复使用
    实例演示: 使用"test123/123456"组合成功爆破出未激活账号
    2)信息收集方法
    企查查查询: 获取公司全称、联系电话等基本信息
    公众号采集: 通过文章底部收集小编联系方式
    数据组合: 将收集的电话、QQ、姓名拼音等组合生成字典
    3)爆破实战过程
    字典构建: 包含常用密码(如123456)、姓名全拼/简写、TOP300姓氏
    爆破策略:
    先固定账号爆破密码
    再固定密码爆破账号
    结果分析: 成功爆破出多个未激活账号,验证系统脆弱性
  2. 弱口令爆破思路总结
    1)常见爆破策略
    固定账号法: 针对admin/root等常见管理员账号爆破密码
    固定密码法: 使用123456/000000等弱密码爆破账号
    枚举用户法: 当系统存在用户回显差异时可先枚举有效用户
    2)行业特定字典
    教育系统: teacher/student+学号,密码常用身份证后六位
    企业系统:
    员工工号(需分析编号规则)
    姓名拼音组合(全拼+简写)
    IoT设备: admin/admin123等厂商默认凭证
    3)加密处理应对
    逆向分析: 通过JS代码查找加密函数
    AI辅助: 将加密代码提交GPT等工具分析
    变通方案: 当密码加密时,固定加密密码爆破用户名
    4)实战经验总结
    信息深度挖掘: 学号/工号等编号规则往往成为突破口
    验证码处理: 注意观察是否可复用或存在逻辑缺陷
    权限利用: 即使测试账号也可测试系统功能漏洞
    高危提醒: 护网行动中弱口令漏洞占比极高,需重点检测
    字典优化: 推荐使用插件生成包含姓名、日期、特殊组合的复合字典
系统识别方法
  1. 国外系统的识别特征
    不适用性:国外系统通常不符合中文姓名的处理需求
    识别难点:需要特殊框架来处理中文特有的需求
  2. 洛伊系统的典型特征
  • 界面识别
    UI特点:具有独特的界面设计风格,老版本特征明显
    视觉标识:绿色图标是洛伊系统的显著标志
    快速识别:经验丰富者可以"一看就知道",无需深入检查
  • 登录配置
    默认设置:系统常保留默认账号密码
    安全问题:后台配置文件未修改会导致直接暴露登录凭证
    二次开发:系统可能经过二次开发(二开)
  1. 框架识别技术
    后续内容:常用框架识别方法将在后续课程中详细讲解
    API漏洞:找不到特定路由时可能涉及API接口漏洞问题
  2. 实践技巧
    经验积累:通过多次实践("挖多了")可以培养快速识别能力
    版本判断:通过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、图片、媒体、字体等

安全建议:

在漏洞标记为已解决前,建议不要请求公开报告

公开请求不会加快提交转换过程

回复功能
  1. 功能测试思路

    核心数据获取:

    需要获取报告ID作为回复目标

    用户ID通常通过cookie自动识别,但测试时需考虑手动获取的情况

    测试方法:

    将报告ID替换为他人ID测试越权回复

    验证系统是否能正确识别并阻止非授权用户的回复操作

    安全边界:

    测试是否可以通过修改ID参数控制发送人身份信息

    检查系统对伪造用户ID的防御机制

  2. 测试注意事项

    细粒度验证:

    需要测试所有相关子功能的完整性

    包括但不限于:消息发送、附件上传、身份验证等环节

    异常场景:

    测试系统对恶意内容上传的防护能力

    验证缩略图等文件上传时的安全过滤机制

  3. 常见测试盲区

    易忽略点:

    跨站点请求伪造(CSRF)防护

    虚拟现实环境下的功能兼容性

    高频请求时的节流机制有效性

    测试技巧:

    使用不同权限账户进行平行测试

    检查日志记录完整性

  4. 测试结果验证

    验证标准:

    确保所有测试用例都有明确的通过/失败标准

    需要验证前端展示与后端数据的一致性

    常见问题:

    400错误可能由参数格式错误引起

    需检查元数据(如/thmbl.png)的访问权限控制

小众功能与漏洞分析

基础操作逻辑:所有功能操作前需先获取报告ID,这是系统设计的首要步骤

关键验证点:通过修改报告ID测试是否存在越权漏洞,这是安全测试的核心方法

  1. 报告ID机制

    功能关联性:所有子功能都依赖报告ID作为操作凭证,包括编辑、删除等敏感操作

    测试发现:实际验证显示修改ID后仍可操作,证明存在越权风险(字幕原文:"你看跟我们的这个ID是一样的。是吧,那我们把这个ID改成别人的,但是那如果操作成功的话")

  2. 功能细粒度分析

    隐蔽风险:部分功能(如CrowdStream可见性设置)存在细粒度权限控制缺陷

    测试要点:需要特别关注ID参数传递过程中的权限校验机制(字幕原文:"所以有些功能它是很细的有些。就会忽略这些功能")

  3. 披露功能分析

    操作前置条件:披露功能同样需要先获取报告ID才能发起请求

    业务逻辑:系统建议在漏洞标记为已解决后才请求披露,这是标准的漏洞管理流程

  4. 编辑与删除功能

    新增发现:测试过程中意外发现隐藏的编辑和删除功能(字幕原文:"你看这里又有一又多出两个功能来编辑")

    测试方法论:强调需要细致测试每个功能点,不能遗漏任何可能的操作入口

  5. 测试案例

    实际案例:演示了通过修改ID参数实现越权访问的具体过程

    修复验证:案例显示系统对前后字符进行了限制,但存在新的绕过方法(字幕原文:"交的漏洞利用方法已经通过重新测试修复,限制前后字符。我使用了新的方法")

  6. 测试注意事项

    测试深度:必须对所有功能进行完整测试链验证,包括看似次要的功能

    记录要求:需要详细记录每个测试步骤和系统响应,这是漏洞报告的关键证据

    边界检查:特别注意参数传递过程中的类型转换和边界值处理

编辑功能
  1. ID控制机制

    ID修改原理:通过修改报告ID可以访问其他用户的报告内容

    测试要点:需要细致测试ID参数是否可以被篡改,验证是否存在越权访问风险

  2. 漏洞利用案例

    CSRF漏洞示例:跨站请求伪造(CSRF)漏洞可导致特定操作被恶意执行

    漏洞状态:已提交2个月但未解决,ID为3113cdh5-135b-ao5?-3h-dana71

    目标信息:虚拟现实测试站点,错误网址包含敏感参数

  3. 付款功能安全

    付款控制:付款功能涉及金额较大(总额$2,500),需要严格控制访问权限

    付款周期:太平洋时间每个工作日上午9点进行汇款

  4. 下载功能风险

    高危漏洞:曾发现通过下载功能越权获取他人身份证信息的漏洞,获利8000元

    控制要点:需要验证下载功能是否使用用户ID或报告ID进行权限控制

  5. 功能安全测试方法

    测试重点:

    识别系统中所有使用ID参数的功能点

    验证ID参数是否可以被篡改

    检查筛选类功能是否会保存操作状态

    风险判断:仅提供筛选但不保存操作的功能通常不存在越权风险

  6. 潜在漏洞位置

    高风险区域:

    个人资料编辑功能

    文件下载功能

    付款记录查看功能

    验证方法:通过数据包分析确认ID参数的使用方式和权限控制机制

个人资料编辑功能

ID控制原理:系统通过用户ID识别并控制个人资料的修改权限

功能实现:

编辑个人简介需要获取用户ID

修改信息通过ID进行权限验证

特殊功能(如头像/封面修改)需要ID授权

图片上传功能
  1. 上传控制机制
    ID验证:
    头像上传必须验证用户ID
    封面图更换需要ID授权
    技术实现:
    通过请求包中的ID参数控制
    可能结合cookie进行双重验证
  2. 测试方法
    测试要点:
    检查上传请求是否包含用户ID
    验证ID参数修改后的系统响应
    测试cookie与ID的联动控制
    测试工具:
    使用临时邮箱注册测试账号
    通过抓包工具分析请求参数
    八、付款方式控制机制
  3. ID控制原理
    隐私性:付款方式通过用户ID进行控制,确保只能本人查看
    验证方法:可通过输入测试数据验证ID控制机制(如"我们随便输几张")
    异常情况:当系统只有一个地址时,ID控制可能失效
  4. Cookie验证机制
    备用方案:在ID控制不可用时,系统可能转为使用cookie验证用户身份
    技术验证:
    通过检查响应数据包确认验证方式
    搜索地址ID未果时,可确定使用cookie控制
    示例:"返回的页面就有我们这个信息...直接用我们的cookie进行判断"
  5. 系统功能限制
    功能缺陷:当前系统功能较少,主要控制点在于:
    商品ID(但实际作用有限)
    网站核心功能模块
    测试技巧:短期测试时可采用"我们自己生存一个星期就行了"的简化方案
  6. 调试方法
    工具使用:推荐使用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修改尝试
权限控制漏洞测试
  1. ID参数越权测试
    用户ID控制:通过修改did参数实现用户身份控制,如将student ID改为teacher ID
    垂直越权:当student和teacher权限不同时,修改ID会导致权限升级漏洞
    敏感参数识别:需特别关注admin ID、uuid等敏感参数字段
  2. 测试方法
    参数修改:直接修改请求中的vid、did等ID参数值
    URL解码:对编码参数进行解码可暴露敏感信息
    并发测试:通过并发请求检测权限校验漏洞
    十一、功能点测试案例
  3. 点赞功能测试
    文章ID控制:通过修改文章ID参数实现跨用户点赞操作
    视频ID测试:vid参数控制特定视频的点赞行为
    越权验证:修改ID后检查是否能操作非授权资源
  4. 删除功能测试
    删除权限校验:测试删除操作是否校验用户权限
    参数遍历:通过顺序ID尝试访问其他用户数据
    水平越权:相同权限用户间的未授权访问
    十二、安全测试技巧
  5. 敏感信息识别
    关键字监控:重点监控teacher、admin、student等权限相关词汇
    参数分析:检查所有ID类参数是否可预测或可枚举
    数据关联:注意参数间的关联关系(如userID与did的对应)
  6. 测试流程
    请求分析:检查数据包中所有ID参数
    参数修改:逐步修改各ID参数值
    结果验证:确认是否获取未授权数据或权限
    十三、越权漏洞分析
  7. 编辑功能越权风险
    ID获取机制:编辑功能需要获取尺码表对应ID,系统通过ID识别操作对象
    漏洞成因:未校验用户权限与操作ID的归属关系,导致可越权编辑他人数据
    危害示例:修改他人尺码表数据可能影响商品交易准确性
  8. 删除功能漏洞
    漏洞特征:删除功能存在未修复的越权漏洞,危害等级为中级
    漏洞价值:单个删除功能漏洞赏金可达2000元
    测试盲区:多数测试者忽略删除功能的权限校验分析
  9. 评论系统越权
    ID验证缺陷:评论功能本应通过cookie验证用户身份,但实际通过请求头传递用户ID
    攻击方法:修改数据包中的用户ID字段即可冒用他人身份发表评论
    高危场景:若可获取官方账号ID,可能造成权威账号虚假评论

垂直越权原理

  1. 基本概念
    定义:不同权限级别用户间的非法权限跨越
    向上越权:低权限用户访问高权限功能(如普通用户执行管理员操作)
    向下越权:高权限用户访问本应受限的低权限敏感信息(如查看用户密码)
  2. 典型漏洞场景
    密码重置功能:低级用户可能越权重置高级用户密码
    权限修改功能:低级用户可能越权提升自身权限等级
    信息查询功能:管理员可能越权查看普通用户的敏感信息
  3. 测试方法
    测试工具:使用专业越权测试插件(如"侠客"插件)
    测试步骤:
    准备不同权限等级的测试账号
    抓取高权限操作的数据包
    替换为低权限用户的身份凭证
    验证操作是否成功执行
    判断标准:低权限用户成功执行高权限操作即存在漏洞
重设密码功能

漏洞特征:密码重置请求未严格绑定用户身份验证

攻击向量:修改请求中的用户ID参数可重置任意账户密码

防护建议:

增加二次身份验证

绑定操作令牌与登录会话

记录敏感操作日志

应用案例
  1. 例题:用户权限越权添加
    案例背景: 使用普通员工账号演示权限越权漏洞,该账号仅有添加用户的基础权限
    漏洞原理: 通过修改用户类型关键字实现权限提升
    将普通用户类型修改为"admin"关键字即可创建管理员账号
    其他可修改的关键字包括:匿名用户、普通用户等
    检测方法:
    重点关注数据包中的权限控制字段
    分析系统功能点的权限校验机制
    测试不同用户类型关键字的修改效果
越权绕过技巧
  1. 状态码绕过
    适用场景: 遇到401/403等权限拒绝状态码时
    方法1-数组绕过:
    将JSON格式参数改为数组形式
    示例:在用户ID参数后添加逗号和其他用户ID
    方法2-参数污染:
    重复添加相同参数但不同值
    示例:userID=1&userID=2
  2. 通配符技巧
    通配符使用:
    在查询参数中使用通配符()查询所有用户
    示例:userID=

    URL编码:
    对特殊符号进行URL编码绕过过滤
    示例:将*编码为%2A
  3. 版本降级攻击
    原理: 测试旧版本接口的权限控制
    操作方法:
    修改API版本号(如v3改为v1/v2)
    检查旧版本接口是否存在越权漏洞
  4. 请求格式修改
    方法1-格式转换:
    在URL后添加/删除.json后缀
    示例:/api/user → /api/user.json
    方法2-请求方法变更:
    切换GET/POST/PUT等HTTP方法
    测试不同方法下的权限校验差异
  5. 请求头绕过
    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
  1. 例题:百度域名CORS请求
  • 跨域限制验证:当尝试从百度域名发起请求时,响应包中没有包含"Access-Control-Allow-Origin"头,说明该域名不允许跨域请求。
  • 空值特性:本地HTML文件的origin值为null,某些靶场环境下空值可以绕过白名单限制。
  1. 例题:复制域名CORS请求
  • 请求实现:通过XMLHttpRequest发送GET请求到目标域名,设置withCredentials为true携带凭证。
  • 响应处理:当状态码为200时,将响应文本显示在页面元素中,否则显示错误状态码。
  1. 例题: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实体编码:&lt;script&gt;alert(1)&lt;/script&gt;

事件处理器:

10)防御方案

输入处理

过滤规则:

移除<script>、javascript:等危险模式

白名单方式允许安全标签(如<b>、<i>)

编码转换:

对< > " ' &等特殊字符进行HTML实体编码

输出控制

上下文敏感编码:

HTML正文使用HTML编码

HTML属性使用属性编码

JavaScript代码使用JS编码

11)典型案例分析

投票系统漏洞

漏洞场景:

投票名称字段未过滤HTML标签

存储后在前台展示时执行脚本

攻击效果:

窃取用户投票凭证

篡改投票结果显示

PDF预览漏洞

触发条件:

网站提供PDF在线预览功能

浏览器使用易受攻击的PDF插件

利用方式:

注:所有测试应在授权环境下进行,实际漏洞利用需遵守法律法规。防御措施应实施纵深防御策略,结合输入验证、输出编码、CSP等多层防护

相关推荐
YANshangqian4 小时前
网页Http远程启动应用工具
网络·网络协议·http
合才科技5 小时前
【要闻周报】网络安全与数据合规 12-13
网络·安全
范小多5 小时前
24小时学会Python Visual code +Python Playwright通过谷歌浏览器取控件元素(连载、十一)
服务器·前端·python
此生只爱蛋5 小时前
【Linux】网络层IP
服务器·网络·tcp/ip
德彪稳坐倒骑驴5 小时前
SQL刷题笔记-我没做出来的题目
数据库·笔记·sql
lingggggaaaa5 小时前
CS配合CrossC2插件,实现MacOS/Linux上线
linux·运维·笔记·安全·macos
wheelmouse77885 小时前
Maven构建配置学习笔记
笔记·学习·maven
盼哥PyAI实验室5 小时前
Python验证码处理实战:从12306项目看验证码识别的技术演进
开发语言·网络·python
DevangLic5 小时前
【怎么在手机上访问部署在电脑上的网页,不在一个局域网】
服务器·学习