安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
一、认证授权问题(301-302)
二、漏洞利用技术(303-304)
三、Web缓存投毒(305-306)
四、漏洞管理流程(307-315)
五、代码审计与正则安全(316-323)
六、黑盒测试技术(324-329)
七、灰盒测试优势(330)
301OAuth除了最常见的redirect_uri绕过问题外,还有哪些风险以及如何修复?
302JWT相较于SESSION优劣势?
303如何通过HTTP参数污染将uid=9527&amount=100中的uid改为10086?
304当网关对所有请求会进行一次强制urldecode,存在一个参数为uid=9527&remark=充话费&amount=100的接口,仅备注字段(remark)可控时,如何改变最终的金额字段(amount)?
305Web缓存投毒的原理、利用和修复?
306Web缓存投毒中,针对200的状态错误如何彻底修复?
307漏洞测试软性能力
308哪些漏洞的测试对业务有损?如何避免?
309你之前没接触区块链/云原生/算法安全,现在需要你评估某个使用该技术的业务安全性,你会如何做?
310漏洞修复一般分为哪几个步骤?
311如何制定漏洞的修复时间?需要考虑哪些因素?
312如何有效提升漏洞修复效率?
313漏洞复盘的关键是什么?
314如何快速有效推进修复外部厂商的漏洞?
315外部白帽子发现某个高危漏洞,但完整修复需要多天,安全产品的止血手段不彻底,你该如何处置?
316当前阶段,人工和自动化的代码审计差异点在哪里?
317什么类型漏洞是代码审计无法准确判断存在与否的?
318密钥的识别的正则如何写?
319正则(a+)+会存在什么风险?
320程序对读取的文件名的正则为/\\.markdown/,如何绕过?
321程序对请求的URL的正则为/^http\\:\\/\\/.*\\.feei.cn($|(\\/[^<>\\'\\]*))/,如何绕过?"
322解释型语言和编译型语言在语法树分析上有什么差异?
323JavaWeb应用中的反序列化漏洞的Source和Sink是什么?
324黑盒如何检测XSS漏洞?
325甲方黑盒是否应该有爬取流量功能?
326黑盒如何扫描无法出网的SSRF?
327黑盒如何扫描越权漏洞?
328黑盒带登录态扫描如何规避业务影响?
329黑盒扫描时如何避免被反制?
330灰盒相较于黑白盒的优势是什么?
一、认证授权问题(301-302)
301. OAuth风险与修复
- 其他风险:
- CSRF攻击:攻击者伪造授权请求 → 添加state参数并绑定会话
- 令牌泄露:Access Token被截获 → 强制使用HTTPS,缩短令牌有效期
- Scope滥用:应用申请过多权限 → 实施最小权限原则,动态审查Scope
- 客户端注入:恶意客户端注册 → 严格审核重定向URI格式(如禁用通配符)
- 修复方案:PKCE协议防授权码截获,JWT令牌自包含校验,令牌绑定(Token Binding)
302. JWT vs SESSION优劣势
| 状态管理 | 无状态(服务端无需存储) | 有状态(服务端存储会话) |
| 扩展性 | 适合分布式系统 | 需共享会话存储(如Redis) |
| 安全性风险 | 密钥泄露导致全线沦陷 | 会话固定攻击、CSRF |
| 性能开销 | 每次请求需验签/解密 | 会话存储查询 |
| 数据时效性 | 过期前无法撤销令牌 | 可即时销毁会话 |
二、漏洞利用技术(303-304)
303. HTTP参数污染修改UID
- 原理:后端重复参数处理逻辑差异(取首个/最后/拼接)
- Payload: uid=9527&amount=100&uid=10086 → 若后端取最后参数值,则UID被覆盖
304. 网关强制URLDecode下的Amount注入
- 条件:remark字段可控且网关全局解码
- 攻击步骤:
- 构造备注:充话费&amount=9999(注意URL编码)
- 发送请求:remark=%E5%85%85%E8%AF%9D%E8%B4%B9%26amount%3D9999
- 网关解码后参数变为:uid=9527&remark=充话费&amount=9999&amount=100
- 若后端取首个amount值,则金额被篡改
三、Web缓存投毒(305-306)
305. 原理与利用
- 原理:攻击者构造恶意请求,使缓存服务器存储有害响应,影响其他用户
- 关键步骤:
- 注入恶意头(如X-Forwarded-Host: evil.com)
- 触发缓存键碰撞(Cache Key Inconsistency)
- 污染静态资源(如JS文件注入恶意代码)
- 修复:规范化缓存键(包含完整URL/Host头),禁用非常规头部的缓存
306. 200状态错误修复
- 根因:缓存服务器将错误响应视为合法内容缓存
- 彻底方案:
- 配置缓存策略:仅缓存状态码为200/301的资源
- 添加Vary: *头部:强制差异化缓存不同请求
- 关键页面设置Cache-Control: no-store
四、漏洞管理流程(307-315)
307. 漏洞测试软性能力
- 威胁建模意识、风险优先级判断、沟通协调能力、创造性思维(如非常规绕过)
308. 对业务有损的漏洞测试
- 有损操作:数据库写入测试(如SQL注入)、资金类接口重放、DoS漏洞验证
- 规避措施:
- 使用测试环境或沙盒
- 限制测试流量速率
- 业务低峰期操作
309. 新技术业务安全评估
Mermaid
graph LR A[理解技术架构] –> B[识别威胁面] B –> C[调研已知漏洞库] C –> D[制定检测方案] D –> E[渗透测试验证] E –> F[持续监控]
310. 漏洞修复步骤 风险评估 → 方案设计(临时/永久) → 修复实施 → 回归测试 → 文档记录
311. 修复时间制定因素 漏洞等级(CVSS)、业务影响范围、修复复杂度、合规要求、历史修复周期
312. 提升修复效率
- 自动化工具链集成(如SAST检测+自动补丁)
- 标准化修复模板(如安全组件库)
- 设立安全冠军(Security Champion)制度
313. 漏洞复盘关键 根因分析(5Why法)、流程漏洞改进、知识库沉淀、同源漏洞排查
314. 推进外部厂商修复
- 建立SLA(如高危漏洞72h响应)
- 提供PoC视频/日志证据
- 法律条款约束(如合同中的安全责任)
315. 高危漏洞紧急处置
五、代码审计与正则安全(316-323)
316. 人工 vs 自动化代码审计差异
- 人工:上下文关联分析(如数据流跟踪)、业务逻辑漏洞挖掘
- 自动化:规模化模式匹配(如硬编码密钥)、基础漏洞批量筛查
317. 代码审计难以判断的漏洞
- 逻辑越权(需业务理解)
- 多步骤漏洞链(如条件竞争)
- 第三方组件0day(无公开特征)
318. 密钥识别正则
Regex
(?:aws|api|secret)[_\\-]?key\\s*[:=]\\s*['"]?([a-z0-9]{20,40})['"]?
(覆盖大小写、引号、空格变体)
319. 正则(a+)+风险
- 灾难性回溯:输入aaaaaaaaX导致指数级计算
- 修复:避免嵌套量词,改用原子组(?>a+)
320. 文件名正则绕过
- 路径穿越:/etc/passwd.markdown(合法后缀)
- 大小写变异:*.MarkDown(Windows大小写不敏感)
321. URL正则绕过
- 利用协议混淆:http://attacker.feei.cn?.feei.cn (利用.*匹配任意字符)
- 端口号注入:http://xxx.feei.cn:80@evil.com/
322. 解释型 vs 编译型语法树差异
- 解释型(如Python):运行时生成AST,支持动态修改
- 编译型(如Java):编译时固化AST,需反编译分析
323. Java反序列化Source/Sink
- Source:ObjectInputStream.readObject()
- Sink:Runtime.exec()、JNDI注入、BeanUtils属性操作
六、黑盒测试技术(324-329)
324. 黑盒检测XSS
- 反射型:参数插入<svg/onload=alert(1)>
- 存储型:提交评论含Payload观察回显
- DOM型:审查JS代码中的sink(如innerHTML)
325. 爬取流量功能必要性 需要:覆盖动态内容(如AJAX)、捕获非标准入口点(如JS跳转)
326. 无网SSRF检测
- 利用DNS重绑定(<iframe src="http://{恶意域名}/">)
- 触发内网服务延迟响应(如MySQL的sleep(10))
327. 越权漏洞扫描
328. 规避业务影响
- 只读操作(禁用DELETE/POST)
- 速率限制(<5请求/秒)
- 扫描时间窗(凌晨2:00-5:00)
329. 避免反制措施
- 随机User-Agent/IP轮询
- 禁用危险Payload(如系统命令)
- 容器化扫描环境(漏洞隔离)
七、灰盒测试优势(330)
灰盒(IAST)核心优势: ✅ 结合DAST(动态测试)和SAST(静态分析) ✅ 实时监控代码执行流(精准定位漏洞点) ✅ 误报率低于SAST,漏报率低于DAST ✅ 无需源码即可获取部分上下文(如函数调用栈)





