1. 项目概述与背景
最近在整理一些经典的物联网设备漏洞案例,华为HG532路由器的CVE-2017-17215这个远程代码执行漏洞,绝对算得上是“教科书级别”的。它不仅在当年影响广泛,其漏洞成因和利用方式也极具代表性,非常适合用来学习路由器固件分析、网络协议安全以及漏洞利用链的构建。很多安全从业者的入门实操,可能都从这个漏洞开始。网上虽然有不少复现文章,但要么步骤跳跃太大,要么环境依赖讲得不清楚,新手照着做很容易卡在某个环节。所以,我打算结合自己多次搭建环境、调试分析的经验,写一份真正“手把手”的复现指南,目标是让你即便只有基础的Linux和网络知识,也能在自己的实验环境中成功复现这个漏洞,并理解其背后的每一个技术细节。
简单来说,CVE-2017-17215是华为HG532系列路由器UPnP(通用即插即用)服务中的一个漏洞。攻击者可以向设备的37215端口发送一个精心构造的XML数据包,触发缓冲区溢出,最终实现在路由器上以root权限执行任意命令。这个漏洞的厉害之处在于,UPnP服务通常默认开启且在局域网内可访问,使得攻击门槛大大降低。通过复现它,你不仅能掌握漏洞分析的基本流程,还能深入理解嵌入式设备固件、网络服务安全以及二进制漏洞利用的初级概念,为后续学习更复杂的安全技术打下坚实基础。
2. 实验环境搭建与准备
复现漏洞的第一步,也是最重要的一步,就是搭建一个稳定、隔离的实验环境。直接在物理机上操作或者使用不兼容的模拟器,会导致各种诡异问题。我的建议是,全部在虚拟机中完成。
2.1 虚拟机与系统选择
我强烈推荐使用 VMware Workstation Pro 或 VirtualBox 来创建虚拟机。宿主机的系统可以是Windows、macOS或Linux,这没有限制。虚拟机的客户机系统,我们选择 Ubuntu 20.04 LTS 。为什么不选更新的版本?因为一些老旧的工具链(比如某些版本的binwalk)在更新的系统上可能会有依赖冲突,20.04是一个在软件包新旧程度和稳定性上取得很好平衡的版本,社区资料也最全。确保为虚拟机分配至少2核CPU、4GB内存和40GB硬盘空间,网络连接模式设置为“NAT”或“桥接”都可以,后续我们通过IP地址访问靶机和工具。
在Ubuntu中,第一件事是更新软件源并安装一些基础编译工具和依赖:
sudo apt update
sudo apt upgrade -y
sudo apt install -y git wget curl vim build-essential libssl-dev libffi-dev python3 python3-pip
2.2 关键工具链安装与配置
漏洞复现涉及固件提取、逆向分析和漏洞利用,需要一系列专业工具。
1. 固件提取工具 - Binwalk Binwalk是分析嵌入式设备固件的瑞士军刀,可以识别、提取固件中的文件系统。
sudo apt install -y binwalk
但系统仓库里的binwalk可能版本较旧,对某些压缩格式支持不好。稳妥起见,我们可以从GitHub安装最新版:
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python3 setup.py install
sudo apt install -y python3-lzma # 安装额外的依赖
安装完成后,运行 binwalk -h 检查是否成功。
2. 模拟运行环境 - Firmadyne 由于我们不可能为了实验去买一台真实的华为HG532路由器,所以需要用软件来模拟运行它的固件。Firmadyne是目前最流行的固件模拟框架之一。
# 1. 安装Firmadyne依赖
sudo apt install -y busybox-static fakeroot git kpartx netcat-openbsd nmap python3-psycopg2 python3-requests snmp uml-utilities util-linux vlan
# 2. 安装并配置PostgreSQL数据库(Firmadyne用其存储固件信息)
sudo apt install -y postgresql
sudo service postgresql start
sudo -u postgres createuser -P firmadyne # 设置密码,例如‘firmadyne’
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware -c "CREATE EXTENSION IF NOT EXISTS hstore;"
# 3. 克隆Firmadyne仓库
git clone --recursive https://github.com/firmadyne/firmadyne.git
cd firmadyne
# 4. 修改配置文件
cp firmware.config firmware.config.bak
vim firmware.config
在 firmware.config 中,主要修改数据库连接信息:
...
DATABASE=firmware
DB_USER=firmadyne
DB_PASSWORD=firmadyne # 填写你上一步设置的密码
...
3. 网络分析工具 - Wireshark & Netcat Wireshark用于抓包分析网络流量,Netcat(nc)是网络调试的“瑞士军刀”,用于手动发送TCP/UDP数据包。
sudo apt install -y wireshark netcat
# 安装Wireshark时可能会询问是否允许非root用户抓包,选择‘是’。
4. Python开发环境 我们的漏洞利用脚本通常用Python编写。确保pip3已安装,并安装一些常用的库:
pip3 install --upgrade pip
pip3 install requests pwntools scapy # pwntools是写exp的神器,scapy用于构造数据包
注意 :整个安装过程可能会因网络或系统差异遇到一些小问题,比如某个软件包找不到、编译错误等。请务必根据终端报错信息,使用搜索引擎(如搜索“Ubuntu 20.04 install [软件包名] error”)查找解决方案,这本身也是学习过程的一部分。一个常见的坑是Firmadyne的某些子模块下载失败,需要多试几次
git submodule update --init --recursive。
3. 靶机固件获取与模拟运行
有了工具,接下来就需要获取漏洞存在的“靶子”——华为HG532的固件,并让它在我们搭建的模拟环境中运行起来。
3.1 固件下载与验证
华为官方可能已经下架了存在漏洞的固件版本,但我们可以在一些网络安全研究网站或镜像站找到。


551

被折叠的 条评论
为什么被折叠?



