Web安全实战:40个漏洞挖掘检查点与SRC渗透测试指南 1. 项目概述从“信任”到“验证”的安全思维转变“Web安全说白了就是别太相信任何人”——这句话听起来有点绝对甚至带着点“江湖险恶”的意味但恰恰是很多安全从业者从无数次“踩坑”和应急响应中总结出的核心心得。我们不是在宣扬一种悲观的、不合作的世界观而是在强调一种至关重要的安全范式默认不信任Zero Trust。在Web应用的世界里无论是来自用户的输入、第三方库的代码、合作伙伴的API响应甚至是内部系统间的调用都不应该被无条件地接受。这份包含40个实战检查点的清单就是基于这种“验证一切”的思维将抽象的“不信任”原则转化为具体、可操作、可复现的漏洞挖掘动作。它不仅仅是一份工具列表或漏洞类型枚举更是一套系统性的攻击面审视方法和思维训练手册。无论你是刚刚踏入SRC安全应急响应中心漏洞挖掘领域的新手还是希望系统化加固自身应用的安全开发工程师这份清单都能帮你建立起从外部黑盒测试到内部代码审计的立体视角真正理解“攻击者会怎么想又会从哪里入手”。2. 核心安全理念与清单设计逻辑2.1 “别太相信任何人”的三大实践维度“不信任”理念在Web安全中具体体现在三个层面不信任用户输入、不信任外部依赖、不信任内部环境。这份40点清单正是围绕这三个维度展开。首先不信任用户输入是Web安全的基石。几乎所有的高危漏洞如SQL注入、跨站脚本XSS、命令注入、路径遍历等根源都在于服务器端过于“天真”地接受了客户端发送的数据并未进行充分的校验、过滤或转义。攻击者会尝试在每一个输入点表单、URL参数、HTTP头、文件上传注入恶意载荷探测应用的防御边界。其次不信任外部依赖。现代Web开发高度依赖开源框架、第三方库、云服务和API。一个被广泛使用的组件爆出漏洞可能瞬间让成千上万的应用暴露在风险之下。清单中会包含对依赖库版本、已知漏洞CVE的检查以及对第三方服务通信安全性的验证。最后不信任内部环境。这包括不信任默认配置、不信任内部网络绝对安全、不信任代码在无监督下会正确运行。例如默认的管理员密码、开启的调试接口、过于宽松的数据库权限、缺乏日志监控等都可能被外部攻击者利用或内部人员误操作滥用。2.2 清单的结构化设计从信息收集到深入利用一份好的实战清单不应是杂乱无章的罗列。本清单遵循一个典型的渗透测试或漏洞挖掘流程进行组织确保系统性侦察与信息收集在发起任何攻击之前先尽可能多地了解目标。这包括子域名枚举、目录/文件扫描、技术栈识别、敏感信息泄露查找等。知己知彼百战不殆。配置与部署安全检查暴露在外的“表面”问题。如服务器错误配置、不必要的服务端口、默认凭据、HTTP安全头缺失等。这些问题往往最容易发现和利用。身份认证与会话管理这是访问控制的第一道闸门。清单会覆盖登录、注册、密码重置、会话令牌处理等环节的常见漏洞如暴力破解、会话固定、令牌泄露等。授权与访问控制验证用户登录后是否能访问其不该访问的资源。垂直越权普通用户访问管理员功能、水平越权用户A访问用户B的数据是检查重点。输入验证与注入漏洞对用户输入处理不当的核心漏洞集群。包括SQL注入、NoSQL注入、OS命令注入、模板注入等。客户端安全主要关注跨站脚本XSS、跨站请求伪造CSRF、点击劫持等利用用户浏览器发起的攻击。业务逻辑漏洞这是最考验测试者思维的一环往往没有扫描器能自动发现。如支付金额篡改、竞争条件、业务流程绕过等。其他杂项与高级利用包括文件上传漏洞、不安全的重定向、服务器端请求伪造SSRF、反序列化漏洞等。注意这份清单的顺序并非严格线性在实际测试中经常需要循环往复、交叉验证。发现一个注入点可能导向一个文件读取进而泄露源码再从中发现新的API端点进行测试。3. 40个漏洞挖掘实战检查点详解上侦察至认证3.1 阶段一侦察与信息收集检查点1-81. 子域名枚举使用工具如subfinder,amass,assetfinder或利用搜索引擎语法 (site:*.example.com)、证书透明度日志如crt.sh来发现所有关联子域。一个被遗忘的dev.example.com或test.example.com往往安全防护较弱。2. 目录与文件爆破使用gobuster,dirsearch,ffuf等工具配合强大的字典如SecLists中的目录列表寻找隐藏的管理后台 (/admin,/wp-admin)、备份文件 (.bak,.sql,.tar.gz)、配置文件 (config.php,.env)、版本控制目录 (.git/,.svn/) 等。3. 技术栈指纹识别通过HTTP响应头、Cookie名称、HTML源码中的注释、特定文件路径等识别Web框架如Spring, Django, Laravel、前端库、服务器软件Nginx/Apache版本、第三方服务如__cfduidCookie暗示Cloudflare。这有助于快速定位已知漏洞和默认路径。4. 端口扫描与服务探测对目标IP进行非全端口扫描 (nmap -sS -p-)识别除80/443外开放的服务如SSH (22), 数据库 (3306, 5432, 6379), 缓存 (11211), 管理接口 (8080, 8443)。一个暴露在公网的Redis或Memcached服务可能未授权访问。5. 搜索引擎黑客技巧利用Google Dorks等语法查找敏感信息。例如site:example.com ext:pdf | ext:doc | ext:xls查找文档site:example.com intitle:index of查找目录列表site:example.com api key password搜索硬编码的密钥。6. 源代码仓库与泄露信息在Github、GitLab、Bitbucket上搜索公司或相关项目名称寻找意外上传的代码、配置文件、包含密码或API密钥的提交历史。工具如gitrob,truffleHog可自动化此过程。7. 关联资产与收购历史通过企业收购、品牌历史、第三方服务商如客服系统、邮件服务商寻找关联资产。这些资产可能未纳入统一的安全管理成为薄弱环节。8. 网络空间资产测绘平台利用Shodan, Censys, Fofa, ZoomEye等平台通过特定指纹如图标哈希、标题、特定header搜索全网暴露的同类资产或特定服务有时能发现测试环境或老旧系统。3.2 阶段二配置与部署安全检查点9-149. HTTP安全头检查使用浏览器开发者工具或curl -I检查关键安全头是否缺失或配置不当 *Content-Security-Policy (CSP) 缓解XSS和数据注入攻击。 *X-Frame-Options 防止点击劫持。 *X-Content-Type-Options: nosniff 阻止浏览器MIME类型嗅探。 *Strict-Transport-Security (HSTS) 强制使用HTTPS。 *Referrer-Policy 控制Referer信息泄露。10. 不必要的HTTP方法使用OPTIONS方法或工具如nmap --script http-methods检查是否开启了PUT,DELETE,TRACE,CONNECT等危险方法。这些方法可能被用于直接上传或删除服务器文件。11. 默认凭据与弱口令对发现的管理后台、数据库服务、中间件管理界面如Tomcat manager, Jenkins尝试使用默认用户名/密码组合admin/admin, root/root等或进行弱口令爆破。永远不要低估“默认”带来的风险。12. 错误信息与调试信息泄露故意触发错误如非法参数、访问不存在路径观察错误信息是否暴露堆栈跟踪、数据库结构、服务器绝对路径、API密钥片段等敏感信息。详细的错误信息是攻击者的“指路明灯”。13. 配置文件与备份文件泄露检查是否可通过Web直接访问.git目录、.DS_Store、web.config,.env,config.php,*.bak,*.sql等文件。这些文件可能包含数据库连接字符串、加密密钥等。14. 旧版/测试环境暴露寻找如v1,old,staging,beta,dev等前缀或后缀的子域或路径。这些环境的安全策略通常不如生产环境严格且可能存在未修复的已知漏洞。3.3 阶段三身份认证与会话管理检查点15-2015. 登录功能暴力破解检查登录接口是否有速率限制、账户锁定机制、验证码且验证码可被绕过或OCR识别。尝试使用常见用户名/密码字典进行爆破。关注响应差异有时用户名不存在和密码错误的提示信息不同会导致用户名枚举漏洞。16. 密码重置逻辑漏洞这是逻辑漏洞的高发区。测试点包括 *验证码可爆破重置令牌或短信验证码位数短、无次数限制。 *邮箱/手机号篡改在验证身份后最终重置密码的请求中是否可修改目标账户 *密码重置链接安全性链接中的令牌是否可预测如基于时间或用户ID令牌有效期是否过长 *响应差异输入已注册和未注册邮箱/手机号系统响应是否不同17. 注册功能安全 *批量注册是否可无限制注册账户用于垃圾信息或占用资源 *邀请码绕过如果需要邀请码是否可枚举或重复使用 *参数污染在注册请求中是否可额外传入如is_admin1的参数来提升权限后端需检查是否对全部参数进行了过滤。18. 会话管理机制测试 *令牌强度会话Cookie如JSESSIONID,PHPSESSID或JWT令牌是否随机性足够长度是否过短 *令牌固定登录前后会话令牌是否发生变化如果不变攻击者可以先获取一个匿名会话令牌诱导受害者用此令牌登录从而接管其会话。 *令牌泄露令牌是否通过不安全的通道传输是否记录在日志中是否在前端JS代码中可被获取如某些单页应用处理不当19. 多阶段认证绕过如果存在两步验证2FA测试是否可在完成第一步密码验证后直接跳过第二步访问登录后的页面。或者在已登录的浏览器中访问其他敏感功能URL是否无需再次2FA验证。20. 记住我功能检查“记住我”功能生成的持久性Cookie。该Cookie是否只是简单编码的用户名是否可被篡改以冒充其他用户其有效期是否合理实操心得在测试认证漏洞时务必使用至少两个测试账户如userA和userB。很多越权漏洞需要在两个账户的上下文之间切换对比才能发现。Burp Suite的Compare功能或Logger插件对此非常有帮助。4. 40个漏洞挖掘实战检查点详解中授权至注入4.1 阶段四授权与访问控制检查点21-2521. 水平越权测试核心是“用户A能否操作用户B的数据”。测试方法 * 登录userA访问一个属于userA的资源如/api/user/12345/profile记录请求。 * 将请求中的资源ID此处的12345修改为userB的资源ID如67890重放请求。 * 观察是否返回userB的数据或允许修改/删除userB的数据。常见于查看订单、修改地址、查看消息等接口。22. 垂直越权测试核心是“普通用户能否访问管理员功能”。测试方法 * 以普通用户身份登录通过爬虫或目录爆破收集所有可访问的URL和功能点。 * 寻找可能的管理员功能路径如/admin/,/manage/,/api/admin/users。 * 直接尝试访问这些路径或修改请求参数如添加roleadmin。有时前端隐藏了管理员菜单但后端接口未做校验。23. 不安全的直接对象引用这是导致越权的常见原因。当应用使用用户提供的输入如URL参数、表单字段直接访问数据库记录或文件时就容易出问题。例如/download?fileinvoice_123.pdf尝试将123改为124可能就能下载其他用户的发票。防御手段是使用间接引用映射或每次访问时进行所有权校验。24. 功能级访问控制缺失某些功能按钮在前端根据用户角色被隐藏disabled或hidden但对应的后端API接口却未进行权限校验。使用浏览器开发者工具将按钮改为可点击状态或直接构造API请求发包测试是否能执行该功能。25. API接口未授权访问特别关注那些为移动端或第三方集成提供的API接口。它们可能没有与Web前端使用同一套认证体系或者错误地认为“只在内网调用”而忽略了鉴权。使用工具如Kiterunner或自定义字典对API端点进行爆破和测试。4.2 阶段五输入验证与注入漏洞检查点26-3326. SQL注入最经典的漏洞之一。测试点包括 *基于错误的注入在参数后添加单引号‘、双引号”等观察是否返回数据库错误信息。 *布尔盲注注入‘ AND ‘1’’1和‘ AND ‘1’’2观察页面真/假两种状态下的差异如内容不同、响应时间不同、HTTP状态码不同。 *时间盲注注入‘ AND SLEEP(5)--观察响应是否延迟。 *联合查询注入使用UNION SELECT语句尝试提取数据。 *工具辅助使用sqlmap进行自动化检测但理解其原理至关重要。不要只依赖工具。27. NoSQL注入随着MongoDB等数据库流行。测试点与SQL注入类似但语法不同 *运算符注入例如登录时传入usernameadminpassword[$ne]1查询可能变为db.users.find({username:‘admin‘, password: {$ne: 1}}), 从而绕过密码检查。 *JavaScript注入如果后端执行了用户输入的JS代码如$where子句可能造成严重危害。28. OS命令注入当应用将用户输入用于拼接系统命令时发生。测试点 * 在输入点尝试注入分隔符;,|,,,||,\n。 * 尝试执行简单命令; whoami,| dir, ipconfig。 * 注意Windows和Linux命令的差异。使用ping -c 1 YOUR_BURP_COLLABORATOR或curl YOUR_BURP_COLLABORATOR来验证带外数据渗出。29. 模板注入影响使用Smarty、Twig、Jinja2、Freemarker等模板引擎的应用。当用户输入被直接嵌入模板语句时可能导致远程代码执行。 *探测输入数学表达式{{7*7}}或${7*7}观察返回是否为49。 *利用一旦确认可尝试调用模板引擎的内置函数或对象来执行系统命令或读取文件。30. LDAP注入影响使用LDAP进行认证或查询的应用。类似于SQL注入通过注入*,),|,等特殊字符来修改查询逻辑可能绕过认证或泄露信息。31. XPath注入影响使用XML数据库或通过XPath查询XML文档的应用。注入方式与SQL注入类似常用‘ or ‘1’’1等载荷。32. HTTP参数污染当应用接受多个同名参数时不同后端技术PHP、ASP.NET、JAVA处理方式不同。例如提交id123id456可能造成WAF绕过或逻辑混淆。33. 批量赋值漏洞常见于MVC框架如Laravel的Mass Assignment, Spring的Data Binding。当请求中传入一个对象属性如isAdmintrue而后端未明确过滤该属性可能被直接绑定到模型并保存到数据库导致权限提升。注意事项测试注入漏洞时务必在授权和可控的环境中进行。使用延迟函数如sleep()时时间不宜过长通常2-5秒避免对目标服务造成拒绝服务影响。对于盲注推荐使用Burp Suite的Intruder工具结合Grep-Match或Response Times来识别差异。5. 40个漏洞挖掘实战检查点详解下客户端至高级利用5.1 阶段六客户端安全检查点34-3634. 跨站脚本根据攻击载荷存储和执行的位置分为三类 *反射型XSS恶意脚本来自当前HTTP请求并立即在响应中执行。常见于搜索框、错误消息提示处。测试方法在所有输入点提交scriptalert(1)/script或img srcx onerroralert(1)等简单载荷观察是否弹窗。但现代浏览器有XSS过滤器需使用更复杂的绕过载荷。 *存储型XSS恶意脚本被保存到服务器如数据库并在其他用户访问时执行。危害最大。测试点用户资料昵称、签名、评论、留言板、文件上传文件名、站内信等所有可持久化存储用户输入的地方。 *DOM型XSS漏洞根源在前端JavaScript代码不涉及服务器端响应。JavaScript使用document.location,document.URL,document.referrer等来源不可信的数据并通过innerHTML,eval()等不安全方式处理。测试需结合代码审计和动态分析。35. 跨站请求伪造诱使已登录的用户在不知情的情况下执行非本意的操作。关键条件是“请求可预测”且“无不可伪造的令牌”。 *测试找到一个有状态变更的GET或POST请求如修改邮箱、转账。检查该请求是否包含一个随机的、与会话绑定的Token如CSRF Token。如果没有或Token可预测/重复使用则存在风险。 *利用构造一个恶意页面其中包含一个自动提交的表单或一个图片标签img src“目标URL”诱骗受害者访问。36. 点击劫持使用透明的iframe覆盖在诱饵网页上诱使用户点击他们看不见的按钮。防御主要依靠X-Frame-Options或 CSP 的frame-ancestors指令。 *测试尝试在另一个网页中用iframe嵌入目标页面看是否成功。如果成功再测试敏感操作如点赞、确认对话框是否可被透明层覆盖。5.2 阶段七业务逻辑漏洞检查点37-3837. 业务数据篡改 *支付漏洞修改订单金额、数量参数为负数或极小值如0.01。修改商品单价。在支付流程的最后一步篡改回调请求中的支付状态为“成功”。 *参数篡改在业务流程中尝试修改那些本应由系统生成或控制的参数如优惠券ID、运费、积分抵扣数量等。 *条件竞争在库存扣减、余额检查、优惠券领取等“检查-使用”非原子操作场景使用Burp Suite的Turbo Intruder或编写脚本并发大量请求可能绕过限制实现“一分钱买多个商品”或“无限领取优惠券”。38. 业务流程绕过 *步骤跳过多步骤流程如填写信息-确认-支付尝试直接访问最终步骤的URL或修改step参数。 *顺序绕过强制修改流程中步骤的顺序。 *验证绕过在需要输入验证码或进行短信验证的步骤尝试将请求中的verified参数改为true或直接重放上一步已验证通过的请求。5.3 阶段八其他杂项与高级利用检查点39-4039. 文件上传漏洞这是获取服务器权限的捷径。 *黑名单绕过尝试上传.php5,.phtml,.phar,.jspx等可能未被黑名单收录的后缀。在文件名中添加特殊路径或双后缀如shell.php.jpg或shell.php%00.jpg空字节截断取决于环境。 *内容类型绕过修改HTTP请求中的Content-Type为image/jpeg。 *文件内容绕过在恶意脚本的开头添加图片的文件头如GIF89a或利用图像处理库的漏洞如图像渲染时触发代码执行。 *解析漏洞利用服务器配置特性如Apache的file.php.jpg可能被解析为PHP文件如果未正确配置IIS的分号解析漏洞等。 *上传路径结合其他漏洞如果上传后文件路径和名称可预测且服务器有文件包含漏洞则可直接执行上传的恶意文件。40. 服务器端请求伪造让后端服务器向任意地址发起请求。 *发现寻找接收URL参数并会获取其内容的功能如图片/文件下载、数据导入、网页预览、Webhook配置等。 *利用 *攻击内网尝试访问http://192.168.1.1,http://127.0.0.1:8080/admin等内网地址探测或攻击内网服务。 *读取本地文件使用file://协议如file:///etc/passwd。 *端口扫描通过响应时间或错误信息差异判断内网端口开放情况。 *与其它漏洞联动如果内网Redis未授权访问可构造SSRF请求向其写入计划任务或SSH密钥从而获取服务器权限。6. 漏洞挖掘实战流程与工具链集成6.1 手动测试与自动化扫描的平衡清单中的40个检查点有些适合自动化工具快速覆盖如目录扫描、安全头检查、已知CVE扫描有些则严重依赖测试者的经验和思维如业务逻辑漏洞、复杂的越权。一个高效的流程是自动化信息收集使用subfinder,amass,httpx,nuclei等工具快速勾勒目标轮廓识别低垂果实。手动探索与功能理解亲自使用目标应用理解其核心业务流程、用户角色、数据流向。这是发现逻辑漏洞的基础。代理工具辅助测试配置浏览器通过 Burp Suite 或 OWASP ZAP 代理。浏览过程中所有流量被记录方便后续重放、修改、测试。针对性手动测试对关键功能点登录、支付、文件上传、API接口依据清单进行深入手动测试。自动化漏洞扫描在手动测试的间隙或之后使用nuclei基于YAML模板的快速扫描、自定义的ffuf模糊测试脚本来查漏补缺。切记扫描器结果仅为参考需要人工验证和评估风险。6.2 核心工具栈推荐与使用心法代理/抓包/重放Burp Suite Professional是行业标杆其Repeater,Intruder,Scanner,Collaborator模块不可或缺。社区版功能受限但对于学习核心手动测试技能足够。OWASP ZAP是强大的免费替代品。信息收集subfinder/amass子域名枚举。httpx/katanaHTTP探测与爬取。gobuster/ffuf目录/文件/参数爆破。ffuf以其速度和灵活性著称是模糊测试的瑞士军刀。nmap端口与服务发现。漏洞扫描与利用nuclei基于社区模板的快速漏洞检测更新快覆盖广。sqlmapSQL注入自动化检测与利用。xsstrike专注于XSS检测绕过能力强。协作与记录Burp Collaborator或interact.sh用于检测盲注、SSRF等带外漏洞。Notion、Obsidian或简单的Markdown文件用于记录测试过程、漏洞细节和PoC。实操心得工具在精不在多。花时间深入掌握 Burp Suite 和一款命令行模糊测试工具如ffuf远比浅尝辄止地使用十款工具有效。建立自己的“武器库”工作流将工具串联起来。例如用subfinder找子域用httpx探测存活用nuclei快速扫一遍再用gobuster深入目录爆破最后对感兴趣的目标手动上Burp。7. 从漏洞发现到报告SRC实战经验谈7.1 漏洞验证与影响评估发现一个潜在漏洞点只是开始严谨的验证和准确的影响评估是核心。构造稳定可复现的PoC你的漏洞证明Proof of Concept必须清晰、简洁、可稳定复现。对于XSS提供一个能触发弹窗的URL对于越权提供两个账户的步骤截图和请求/响应对比对于SQL注入提供能够查询数据库版本或当前用户的Payload。避免使用破坏性Payload。界定漏洞边界与影响范围这个漏洞能读到什么数据能修改什么数据能否获取服务器权限影响的用户是所有用户还是特定群体数据是公开信息还是敏感个人信息准确评估危害等级高危、中危、低危是报告的关键。探索漏洞组合与最大化利用一个文件上传漏洞可能只能传图片但如果结合一个解析漏洞或文件包含漏洞就可能变成远程代码执行。不要孤立地看一个漏洞思考它能否与其他弱点串联形成“攻击链”。7.2 编写高质量漏洞报告一份优秀的漏洞报告是沟通的桥梁直接决定漏洞能否被快速理解和修复。标题简明扼要如“【高危】目标站某接口存在未授权访问可泄露所有用户订单信息”。漏洞详情漏洞类型SQL注入、越权访问等。风险等级根据自定或SRC标准评定。目标URL完整的漏洞触发地址。请求与响应提供原始的HTTP请求和响应数据可脱敏关键Token。使用代码块包裹。复现步骤分步骤、像教程一样详细说明如何从零开始复现漏洞。例如“1. 注册一个普通账户A。2. 登录账户A访问其个人资料页捕获请求。3. 修改请求中的user_id参数为其他用户的ID。4. 重放请求可看到其他用户的信息。”漏洞原理简要分析后端代码可能存在的问题。修复建议提供具体、可操作的修复方案。例如“建议在查询用户数据的接口中增加对当前会话用户与请求用户ID是否一致的校验。” 而不是笼统地说“加强鉴权”。态度与沟通保持专业、友善。漏洞报告不是挑衅而是帮助对方提升安全性的合作。对于SRC的反馈及时回应和确认。7.3 常见问题与排查技巧实录在漏洞挖掘中你经常会遇到一些“奇怪”的现象以下是一些排查思路遇到WAF怎么办识别WAF通过发送恶意请求观察返回的错误页面、响应头如X-Protected-By来识别WAF类型Cloudflare, AWS WAF, 长亭等。绕过技巧尝试编码绕过URL编码、双重URL编码、Unicode编码、大小写混淆、添加冗余参数/空格/换行符、使用HTTP参数污染、分块传输编码、利用协议层特性等。不同WAF的规则弱点和解析差异不同需要耐心测试。测试请求被拦截或封IP控制请求频率在Burp Intruder中设置延迟。使用代理池或VPN切换出口IP注意仅在授权测试且目标允许的情况下考虑并遵守所有法律法规和测试规则。检查是否触发了账号风控准备多个测试账号。找不到漏洞很沮丧回归基础重新审视那些最经典、最常见的漏洞类型用新的视角去看旧功能。扩大攻击面不要只盯着主域名测试移动端API、小程序后端、合作伙伴接口、离职员工留下的测试系统。代码审计如果有可能如开源项目、泄露的源码静态代码审计是发现深层逻辑漏洞的利器。保持学习阅读其他安全研究员的漏洞报告、博客了解新型漏洞和独特的挖掘思路。漏洞挖掘是一场攻防思维的对决更是一场与自己耐心的较量。这份40点清单是你的地图和工具箱但最重要的装备是你的好奇心、逻辑思维和永不满足的“不信任”精神。真正的安全高手是在所有人都觉得理所当然的地方多问一个“如果…会怎样”。从今天起用这份清单武装自己但别忘了最关键的漏洞可能永远在清单之外。