思路决定成败:F12给了我黑色的眼睛我却用它来挖洞
字数 1146 2025-08-18 11:37:49

F12开发者工具在手工安全审计中的高级应用

前言

本文基于evil7在FreeBuf上分享的技术文章,详细讲解如何利用浏览器F12开发者工具进行手工安全审计,发现Web应用漏洞。文章包含两个实际案例(已修复),重点介绍审计思路和技术细节。

核心思路

  1. 源码审计:通过公开资源获取目标相关源码,了解开发习惯
  2. 流量分析:观察网络请求特征,寻找突破口
  3. 异常构造:像开发者一样思考,寻找处理异常的点
  4. 知识储备:熟悉各种技术的基础特性

案例一:FreeBuf主站DOM型XSS漏洞

发现过程

  1. 流量特征分析

    • 发现按钮包含关键词"wpfpaction"
    • 推测与"wpfp"(WordPress Favorite Posts)插件相关
  2. 源码获取

    • 在GitHub搜索该插件源码
    • 发现wpfp_list_favorite_posts()函数处理用户输入
  3. 漏洞点定位

    • 发现$_REQUEST['user']参数未经处理直接输出
    • 在FreeBuf测试/user/myfavorites?user=1接口确认存在
  4. 漏洞利用

    • 构造恶意输入测试XSS
    • 确认漏洞存在

修复建议

  • 转义用户输入
  • 或删除此API接口

案例二:FreeBuf招聘站点的XSS漏洞

发现过程

  1. 功能测试

    • 访问https://job.freebuf.com
    • 点击"更多机会"发现7个可控输入点
  2. 初步测试

    • 发现2个参数直接返回到页面
    • 测试XSS可能性
  3. 错误分析

    • 使用F12查看错误信息
    • 发现jQuery选择器语句错误
    • 确认city参数前端直接处理并拼接到输出
  4. 绕过技巧

    • 了解jQuery选择器扩展语法
    • 构造$(dom[value])形式payload
    • 补充缺失的引号完成XSS

技术细节

  • 危险实现方式:$(dom).html(contents)
  • 选择器带值过滤参考:W3C Selectors Level 3

高级技巧

  1. DOM型XSS进阶

    • 使用#payload方式使攻击仅针对特定用户
    • 示例:eval(atob(location.hash.substr(1)))
    • 避免payload出现在服务器日志中
  2. 调试技巧

    • 设置断点跟踪JS执行流程
    • 通过响应时间判断处理位置(前端/后端)
    • 长响应时间可能指示SQL查询参与

总结

  1. F12工具的价值

    • 不仅仅是"挂黑页"
    • 强大的手工审计工具
    • 帮助理解应用内部逻辑
  2. 白帽思维

    • 不要依赖扫描器
    • 培养手工审计能力
    • 积累基础知识(如jQuery选择器特性)
  3. 审计方法论

    • 从流量特征入手
    • 寻找源码辅助分析
    • 构造异常测试边界条件
    • 系统化跟踪数据流

通过本文的技术细节和案例学习,安全研究人员可以提升手工审计能力,发现更多自动化工具无法检测的漏洞。

F12开发者工具在手工安全审计中的高级应用 前言 本文基于evil7在FreeBuf上分享的技术文章,详细讲解如何利用浏览器F12开发者工具进行手工安全审计,发现Web应用漏洞。文章包含两个实际案例(已修复),重点介绍审计思路和技术细节。 核心思路 源码审计 :通过公开资源获取目标相关源码,了解开发习惯 流量分析 :观察网络请求特征,寻找突破口 异常构造 :像开发者一样思考,寻找处理异常的点 知识储备 :熟悉各种技术的基础特性 案例一:FreeBuf主站DOM型XSS漏洞 发现过程 流量特征分析 : 发现按钮包含关键词"wpfpaction" 推测与"wpfp"(WordPress Favorite Posts)插件相关 源码获取 : 在GitHub搜索该插件源码 发现 wpfp_list_favorite_posts() 函数处理用户输入 漏洞点定位 : 发现 $_REQUEST['user'] 参数未经处理直接输出 在FreeBuf测试 /user/myfavorites?user=1 接口确认存在 漏洞利用 : 构造恶意输入测试XSS 确认漏洞存在 修复建议 转义用户输入 或删除此API接口 案例二:FreeBuf招聘站点的XSS漏洞 发现过程 功能测试 : 访问https://job.freebuf.com 点击"更多机会"发现7个可控输入点 初步测试 : 发现2个参数直接返回到页面 测试XSS可能性 错误分析 : 使用F12查看错误信息 发现jQuery选择器语句错误 确认 city 参数前端直接处理并拼接到输出 绕过技巧 : 了解jQuery选择器扩展语法 构造 $(dom[value]) 形式payload 补充缺失的引号完成XSS 技术细节 危险实现方式: $(dom).html(contents) 选择器带值过滤参考:W3C Selectors Level 3 高级技巧 DOM型XSS进阶 : 使用 #payload 方式使攻击仅针对特定用户 示例: eval(atob(location.hash.substr(1))) 避免payload出现在服务器日志中 调试技巧 : 设置断点跟踪JS执行流程 通过响应时间判断处理位置(前端/后端) 长响应时间可能指示SQL查询参与 总结 F12工具的价值 : 不仅仅是"挂黑页" 强大的手工审计工具 帮助理解应用内部逻辑 白帽思维 : 不要依赖扫描器 培养手工审计能力 积累基础知识(如jQuery选择器特性) 审计方法论 : 从流量特征入手 寻找源码辅助分析 构造异常测试边界条件 系统化跟踪数据流 通过本文的技术细节和案例学习,安全研究人员可以提升手工审计能力,发现更多自动化工具无法检测的漏洞。