Skip to content

Junt184/UnauthorizedAccess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

未授权访问靶场(UnauthorizedAccess Lab)

一个面向实战的未授权访问与鉴权绕过练习靶场。通过真实业务中常见的 22 类场景,帮助你系统性地练习识别与利用未授权访问问题,并掌握相应的修复策略。

注意:目前仓库主要提供练习说明与关卡清单,后续将逐步补充每个关卡的示例服务与脚本(计划提供 docker-compose 一键启动的练习环境)。

—— 请仅在合法授权范围内进行安全测试,禁止用于任何非法用途 ——

适用人群

  • 安全测试工程师、渗透测试工程师、红队成员
  • Web 后端、前端、移动端工程师(希望提升鉴权与安全意识)
  • 安全爱好者与学生

先决知识与工具建议

  • HTTP/HTTPS、Cookie/Session、JWT 基础
  • 常见 Web 架构与鉴权模型(RBAC、SSO、Token、Session 等)
  • 基础 SQL 注入、参数污染(HPP/HPF)、Host Header 攻击、IDN/Punycode 知识
  • 建议工具:Burp Suite、ZAP、httpie/curl、jwt-tool、dnspython、字典爆破工具等

快速开始(当前阶段)

  1. 克隆仓库:
  2. 阅读下方关卡概览与详解,按提示在你可合法测试的环境中进行演练。
  3. 后续我们将补齐每个关卡的示例靶场与复现脚本,届时可本地一键启动练习环境。

练习方式建议

  • 每个关卡包含:示例场景、漏洞成因、练习目标、攻击步骤建议、自检标准、修复建议。
  • 建议在演练时保留你的请求与响应(Pcap/HTTP 历史),以及复盘笔记(包括误报/真报判定)。
  • 为了系统化训练,可给每个关卡打分(发现-利用-影响-修复建议四维度)。

漏洞关卡总览

  1. 覆盖注册漏洞
  2. 发送验证码时邮箱可篡改
  3. 验证码多发
  4. 万能密码
  5. 缺省密码
  6. 更新关联邮箱越权
  7. SQL 注入改密码
  8. gettoken 接口未授权
  9. JWT 弱密钥或允许 None 算法
  10. Cookie 特征明显(泄露关键信息)
  11. Druid 未授权访问
  12. 无会话机制导致越权(以不可遍历主键鉴权,但存在主键泄漏接口,如 openid/unionid)
  13. 两个站点鉴权机制复用(跨站点 JWT/令牌复用)
  14. 4 位数邮箱验证码爆破
  15. Session 覆盖
  16. 置空参数绕过
  17. 特殊字符绕过(%20、%0a 等)
  18. Punycode 平行越权(IDN 处理缺陷)
  19. 弱鉴权(可直接修改 userid/username 等)
  20. 邮箱覆盖(非预期字段被修改)
  21. 工单邮箱绕过域后缀限制
  22. 重置密码 Host 污染
  23. 重置密码参数污染

注:以上编号在“详解”部分已统一修正为 1-23,若你已有既定关卡编号,请按需要调整顺序。


漏洞关卡详解

1. 覆盖注册漏洞

  • 示例场景:注册接口写入用户记录时使用 upsert/merge,或按主键更新导致“注册即覆盖”。
  • 漏洞成因:唯一标识(邮箱/手机号/用户 ID)校验不足,注册流程存在“更新逻辑”。
  • 练习目标:通过注册接口覆盖既有账号(重置密码或更改关键字段)。
  • 攻击步骤建议:
    • 抓取注册接口请求,尝试携带已有用户的主键或唯一标识;
    • 观察响应与数据库变更(如邮箱被替换、密码被重置)。
  • 自检标准:可稳定复现覆盖而无需拥有原账号凭据。
  • 修复建议:严格区分“注册(Create)”与“修改(Update)”;对唯一键做强校验与幂等控制;关键字段只允许在受控流程中更改。

2. 发送验证码时邮箱可篡改

  • 示例场景:验证码发送接口的收件邮箱来自前端可控参数,后端未验证与账号绑定关系。
  • 漏洞成因:身份验证与绑定校验缺失。
  • 练习目标:将验证码发送到攻击者控制的邮箱,进而接管目标账号的验证码流程。
  • 攻击步骤建议:
    • 对发送验证码接口(/send-code 或 /captcha/mail)尝试替换邮箱参数;
    • 使用受控邮箱接收验证码、走后续重置流程。
  • 修复建议:验证码发送目标必须从服务端侧的绑定关系获取;对每次发送做限速与风控。

3. 验证码多发

  • 示例场景:同一账户或同一设备短时间内可多次请求验证码,且新旧码并存或覆盖逻辑不合理。
  • 漏洞成因:缺少频率限制、并发控制与状态一致性设计。
  • 练习目标:利用多发逻辑造成验证码预测或干扰真实用户(DoS/社工)。
  • 修复建议:限速、队列、单通道有效码、设备指纹与风险校验;验证码生命周期合理设计(单次有效,使用后失效)。

4. 万能密码

  • 示例场景:登录逻辑存在缺陷(如只校验密码非空、错误地比较哈希、误用测试后门密码)。
  • 漏洞成因:鉴权逻辑实现不严谨或遗留后门。
  • 练习目标:在未知密码情况下通过特定输入(空字符串、固定值、特殊格式)登录成功。
  • 修复建议:完善鉴权逻辑与单元测试;移除任何后门;对登录失败原因与次数做审计与限速。

5. 缺省密码

  • 示例场景:新建用户或特定角色默认分配弱密码(如 123456)。
  • 漏洞成因:安全初始化不足、口令策略缺失。
  • 练习目标:通过默认密码登录目标账号。
  • 修复建议:强制首次登录改密、口令复杂度与历史策略、禁用已知弱默认密码。

6. 更新关联邮箱越权

  • 示例场景:修改个人信息接口允许更新邮箱,但未验证“原邮箱+验证码”。
  • 漏洞成因:关键绑定属性修改缺少二次确认与强鉴权。
  • 练习目标:替换目标账号绑定邮箱为攻击者邮箱。
  • 修复建议:修改绑定邮箱必须走“原邮箱验证 + 新邮箱确认”双向流程,并校验会话归属。

7. SQL 注入改密码

  • 示例场景:密码重置或资料修改接口存在 SQL 注入,可直接 update users set password=...。
  • 漏洞成因:未使用参数化查询,输入未充分校验。
  • 练习目标:通过注入语句修改任意用户密码。
  • 修复建议:参数化、ORM 安全操作、WAF/输入校验、最小权限数据库账号。

8. gettoken 接口未授权

  • 示例场景:公开接口可返回敏感令牌(重置令牌、登录 token)。
  • 漏洞成因:将内部接口暴露为公网或缺少鉴权校验。
  • 练习目标:获取他人 token 并利用完成重置或登录。
  • 修复建议:接口最小暴露、严格鉴权、token 单次有效与短 TTL、绑定设备/会话。

9. JWT 弱密钥或允许 None 算法

  • 示例场景:服务端使用弱密钥(易暴力破解),或错误地接受 alg=none 的无签名 JWT。
  • 漏洞成因:JWT 配置与验证实现不当。
  • 练习目标:伪造合法 JWT(提权或越权)。
  • 攻击步骤建议:
    • 使用 jwt-tool 猜测 HMAC 密钥或测试 alg=none;
    • 构造 role=admin 等载荷后访问敏感资源。
  • 修复建议:强密钥、禁用 none、白名单算法、二次校验(服务端查权限)。

10. Cookie 特征明显(泄露关键信息)

  • 示例场景:Cookie 明文包含 userid/username/role 等,可被篡改导致越权。
  • 漏洞成因:客户端可控信息被直接用于鉴权决定。
  • 练习目标:修改 Cookie 中的身份字段以访问他人资源。
  • 修复建议:对客户端状态做签名或只存会话 ID,服务端二次鉴权与权限校验。

11. Druid 未授权访问

  • 示例场景:/druid/ 监控面板未开启登录保护或使用默认凭据。
  • 漏洞成因:默认配置暴露管理面板。
  • 练习目标:访问监控面板、查看 SQL、JDBC 等敏感信息,进一步横向移动。
  • 修复建议:开启身份认证、限制来源 IP、线上禁用监控面板或网段隔离。

12. 无会话机制导致越权(主键泄漏)

  • 示例场景:业务以不可遍历主键(如 openid/unionid)作为鉴权依据,但存在接口泄漏该主键或可推断。
  • 漏洞成因:把“知道主键”当作“已鉴权”。
  • 练习目标:通过获取/推断他人主键直接访问其资源。
  • 修复建议:主键仅用于标识,不用于鉴权;每次访问必须结合会话/权限校验。

13. 两个站点鉴权机制复用(跨站点 JWT/令牌复用)

  • 示例场景:同集团多个站点使用相同签发密钥或错误接受彼此的令牌。
  • 漏洞成因:SSO/多站点令牌校验边界不清,信任域过大。
  • 练习目标:在站点 A 登录后,携带其令牌访问站点 B 的受限资源。
  • 修复建议:分域密钥、受众(aud)与发行者(iss)严格校验、令牌作用域隔离。

14. 4 位数邮箱验证码爆破

  • 示例场景:验证码只有 4 位、无有效限速/设备绑定。
  • 漏洞成因:验证码复杂度低、风控缺失。
  • 练习目标:对验证码接口进行 0000-9999 爆破绕过验证。
  • 修复建议:6 位以上、带字母混合;限速、滑块/人机校验、错误计数锁定、设备指纹。

15. Session 覆盖

  • 示例场景:在多步修改密码流程中,通过并发与会话切换覆盖验证阶段的会话归属。
  • 攻击示例(A、B 两账户):
    1. 用 A 发起修改密码并完成验证码校验直到最后一步;
    2. 用 B 发起修改密码申请;
    3. 在关键步骤用 B 的 session 替换 A 的 session;
    4. 在最后一步将 A 的密码改为攻击者控制的值。
  • 漏洞成因:流程状态与会话绑定不严,缺少事务化与会话一致性校验。
  • 修复建议:每一步校验会话归属与流程状态,使用一次性令牌绑定同一会话与设备。

16. 置空参数绕过

  • 示例场景:将某个用于鉴权或业务判断的参数置空,后端分支逻辑因此跳过校验。
  • 漏洞成因:后端对空值/缺失值处理不当。
  • 练习目标:删除或置空参数以绕过权限判断。
  • 修复建议:对缺省值做安全默认(fail-safe),服务端重新计算关键信息而非信任客户端参数。

17. 特殊字符绕过(%20、%0a 等)

  • 示例场景:路径或主机名在不同层面解析不一致,导致绕过同源/权限校验。
  • 练习目标:使用编码空格、换行等字符绕过网关或后端路由的校验。
  • 修复建议:统一规范化(canonicalization),在同一层处理并拒绝异常字符;白名单路径。

18. Punycode 平行越权(IDN 处理缺陷)

  • 示例场景:后端将国际化域名(Punycode)误处理为普通英文域名,从而错误信任。
  • 练习目标:利用 tàrget.com(IDN)被处理成 target.com 的缺陷,绕过域名校验。
  • 修复建议:严格使用 IDN 解析库并进行同一性比较,禁止松散字符串比较用于安全决策。

19. 弱鉴权(可直接修改 userid/username 等)

  • 示例场景:客户端可控的身份字段被直接用于资源访问判断。
  • 练习目标:篡改请求中的 userid/username 以访问他人资源。
  • 修复建议:所有资源访问必须在服务端做权限校验(基于会话/角色),客户端字段仅作展示。

20. 邮箱覆盖(非预期字段被修改)

  • 示例场景:个人信息修改接口理论上只允许改简介,但出现邮箱字段并被接受。
  • 漏洞成因:后端未对可修改字段做白名单控制。
  • 练习目标:向该接口提交邮箱参数覆盖绑定邮箱,最终可用“目标邮箱+攻击者密码”登录。
  • 修复建议:严格字段白名单、关键字段修改二次确认与强鉴权、接口契约校验。

21. 工单邮箱绕过域后缀限制

  • 示例场景:企业内网登录要求特定后缀邮箱;第三方工单系统会为提交人生成工单邮箱并同步邮件。
  • 练习目标:利用工单邮箱注册登录并接收重置邮件。
  • 修复建议:不要仅凭邮箱后缀作为身份凭据;使用企业 IdP/SSO 与域内实名校验。

22. 重置密码 Host 污染

  • 示例场景:后端使用请求头 Host 拼接重置链接(http://host/token=),可被攻击者控制。
  • 练习目标:在受害者点击重置邮件后,令牌被投递到攻击者控制的主机。
  • 修复建议:构造重置链接时使用服务端配置的可信域名,校验 Host/Referer,链接中加入一次性状态参数与绑定设备校验。

23. 重置密码参数污染

  • 示例场景:与 22 类似,但重置域名/回调地址由参数传入,可注入为攻击者域名。
  • 修复建议:严格参数白名单与校验(固定可信回调域),拒绝任意 URL;在服务端侧统一生成重置链接。

演练自检清单(可复用到任何项目)

  • 资源访问是否仅依赖客户端可控字段(userid/role/token)?
  • 是否存在公开接口可返回敏感令牌或主键?
  • 是否对验证码/重置流程做了限速、设备绑定与状态一致性校验?
  • JWT 是否禁用 none 算法、使用强密钥并校验 iss/aud?
  • 是否存在默认密码、万能密码或遗留后门?
  • 是否对 Host/回调 URL 做了白名单与规范化处理?
  • 是否对管理面板(如 /druid/)做了认证与来源限制?

后续规划

  • 为每个关卡提供可启动的示例服务(Node/Java/Python 混合)与 docker-compose 一键环境;
  • 提供自动化检查脚本与评分体系;
  • 录制每个关卡的复现与修复演示。

法律与伦理声明

本项目仅用于安全教育与研究,请确保你对目标系统拥有合法授权。任何将本项目用于未授权的攻击、违法行为的举动均与作者无关。

贡献

欢迎通过 Issue/PR 提供示例、题目优化与修复建议。

许可证

本项目采用 MIT License。

About

未授权访问靶场,做漏洞练习用的

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors