D-Link DI-7400G+命令注入漏洞(CVE-2025-57105)

固件安全
2025-08-23 16:25
12249

漏洞信息

漏洞厂商:D-Link
影响产品及版本:DI-7400G+
影响对象类型:路由器
漏洞URL:

漏洞分析

设备通过 HTTP 参数和 NVRAM 设置值拼接 shell 命令并调用jhl_system(),存在典型的命令注入漏洞,攻击者可在满足一定条件下执行任意系统命令。

  1. jhttpd程序拖入ida中进行逆向分析
    sub_478D28函数如下,addr参数可以get控制(httpd_get_parm就是get方式取参数),并且被设置在了nvram中的ac_mng_srv_host项中。
    该函数其对应url接口为mng_platform.asp

    image1.png

  2. sub_4A12DC函数中,获取ac_mng_srv_host项的值,然后会传递到system函数中作为参数执行命令,此前未经过滤,产生命令注入漏洞。
    该函数对应的url接口wayos_ac_server.asp,即访问这个url界面即可执行对应函数,从而触发漏洞

    image2.png

  3. 结合 sub_478D28sub_4A12DC 函数反汇编内容,命令执行逻辑如下:

    v13 = nvram_get("proxy_ac_status");
    v14 = nvram_get("ac_server_enable");
    if (v13 && strcmp(v13,"1")==0 && v14 && strcmp(v14,"1")==0) {
        snprintf(v45, 1024,
            "proxy_client \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" &",
            ac_mng_srv_host,
            proxy_http_srvport,
            lan_ipaddr,
            acserver_http_port,
            "proxy_ac_port",
            "proxy_ac_msg",
            "proxy_ac_pid"
        );
        jhl_system(v45);
    }
    

必要条件:

  1. HTTP 请求必须包含 opt=proxy
  2. NVRAM 中两个关键值均为 "1"
    • proxy_ac_status == "1"
    • ac_server_enable == "1"
  3. ac_mng_srv_host 等其他 NVRAM 值可被植入 payload,未做过滤。
    攻击者通过接口写入 payload(如 ac_mng_srv_host=evil"; echo hello > /tmp/poc.txt; #),然后访问对应接口触发 proxy_client 执行。

漏洞验证

  1. 使用FirmAE进行固件仿真

    sudo ./run.sh -d di ../fmwares/DI_7400G+-19.12.25A1.trx 
    

    image3.png

  2. 使用默认用户名/密码登录

    默认用户名/密码:admin/admin
    

    image4.png

    image5.png

  3. NVRAM 中的配置项ac_server_enable写入值"1",开启(启用)AC 服务开关,从而满足触发漏洞利用的前置条件之一
    image7.png

  4. 植入 payload 并触发执行
    image6.png

    image8.png

POC:
https://github.com/xyh4ck/iot_poc.git

执行效果:

image9.png

分享到

参与评论

0 / 200

全部评论 0

暂无人评论
投稿
签到
联系我们
关于我们