复现 DLink DIR-859 RCE 漏洞(CVE-2019–20215)_dydymm的博客-程序员秘密

技术标签: 安全  渗透测试  linux  网络安全  

复现 DLink DIR-859 RCE 漏洞(CVE-2019–20215)

漏洞介绍

该漏洞允许远程攻击者通过 urn 执行任意操作系统命令:到 /htdocs/cgibinssdpcgi()中的 M-SEARCH 方法,因为 REMOTE_PORT 处理不当。urn: service/device 的值使用 strstr 函数进行检查,该函数允许攻击者连接由 shell 元字符分隔的任意命令。

漏洞影响

D-Link DIR-859 1.05 和 1.06B01 Beta01 设备

漏洞等级

严重

环境搭建

在 kali 中下载 FirmAE
运行仿真固件

  1. 这个固件是千镜杯赛题,iot 部分下载得到 DIR.zip,解压后得到 DIR859Ax_FW106b01_beta01.bin

  2. 用 FirmAE 将固件运行起来。
    在这里插入图片描述

  3. 用binwalk提取文件系统
    在这里插入图片描述

模拟攻击

网上已有该漏洞poc,可直接利用。
poc
因为是未授权漏洞,所以可以使用poc直接打
在这里插入图片描述

漏洞原理

  1. 分析exp知漏洞点在ssdpcgi()中发现了远程执行代码漏洞,供应商已经创建了一个修补程序来修复该漏洞。使用HTTP_ST为攻击向量。
  2. ida分析cgbin中的ssdpcgi_main函数。
    在这里插入图片描述
    分析函数后,知道我们需要完成以下步骤来利用此漏洞。
  3. 必须在 ST 变量中发送值 urn:,以达到其他条件而不执行返回。
  4. 检查是否发送了两个字符串deviceservice中的一个。这样,我们已经可以验证漏洞的存在,因为strstr()函数允许连接命令。
  5. 该字符串作为参数发送到 lxmldbc_system()

查看堆栈
在这里插入图片描述

查看lxmldbc_system()函数
在这里插入图片描述
发现这些字符串未过滤便直接传给了lxmldbc_system函数并作为参数带入。
因此我们可以控制这些值或将其他值连接到现有值,例如REMOTE_PORT=13;lsSERVER_ID=1;ls,则这些值使用 vsnprintf() 存储在缓冲区中,以格式化最终命令。
返回后,格式化的命令将存储在记录 s0=buffer 所指向的缓冲区中,该缓冲区将是系统 (s0) 函数的参数。转储(内存)也与结构一样显示。当注入的命令被以字符串的格式引用时。我们便得到了触发了命令注入。
在这里插入图片描述
这样,我们只要构造包头为

IP="127.0.0.1"
PORT="1337"
METHOD=”M-SEARCH”
URI="/"
HTTP_ST="urn:device:1;{cmd}"
REMOTE_PORT="13"
SERVER_ID="1"

即可任意命令执行。

解决方案

升级固件至1.06B01 Beta01以上。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wcwdnmdnmd/article/details/122052333

智能推荐

【我的DOT语言学习之旅】 学习DOT语言并使用Graphviz软件来打开.dot文件_字节卷动的博客-程序员秘密

一、背景描述最近在研究didi的booster框架,应用到项目中,然后通过执行 assemble task 来构建一个优化过的应用包,构建完成后,在 build/reports/ 目录下会生成相应的报告。生成的报告文件中,包含了部分dot文件,如下所示打开该x.dot文件,是一堆如下面的文本,看不懂digraph "com.amap.api.col.sl3.x" { grap...

枚举所有进程ID和线程ID,以及窗口句柄 _进程 id 线程 id 和窗口句柄_wdswei的博客-程序员秘密

枚举进程ID以及线程ID,如果只需要PID以及TID的信息, 可以直接枚举线程即可.线程ID的结构体包含PID view plaincopy to clipboardprint?HANDLE m_hProcessSnap = NULL;   HANDLE m_hThreadSnap = NULL;   HANDLE m_hProcess = NULL;  

Android下拉选择弹窗_android 下拉弹窗_格-的博客-程序员秘密

起因呢又是有个需求,也是自己觉得好看,很多app都有下拉选择框,就想着实现下(主要是时间空闲,如果时间少,项目急,就找现成的),先看图片:直接上代码:xml: <com.yinp.proapp.module.work.view.DownSelectDialogView android:id="@+id/dsd_dialog" android:layout_width="match_parent" android:layout_height

【JavaWeb】TableDemo 表格隔行显色+鼠标悬停高亮显示_爱吃香草冰淇淋的阿喵的博客-程序员秘密

【普通表格-非隔行显色】approach1 <script type="text/javascript"> window.onload = function () { //#-----非隔行显色---需要css辅助------------------------------------------- funct...

OpenSG基础_bxhj3014的博客-程序员秘密

  一、OpenSG中的基本数学类型1、基本数据类型(Datatypes)为了开发跨平台的程序,OpenSG定义自己的基本数据类型1、整型[U]intN:    N = {8,16,32,64}    U : unsigned 无符号整型2、浮点型    RealN     N= {32,64,128}二、OpenGL中的结构类型1、向量(数组)1、向量

一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之LinkedList_诗水人间的博客-程序员秘密

一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之ArrayList一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之LinkedList一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之HashMap一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之HashSet public class L

随便推点

layui时间日期控件选择器,控制时间日期范围,3种用法总结_layui时间选择器如何控制时间范围_fwfgwg的博客-程序员秘密

layui时间选择器如何控制时间范围详细参考该篇文章(复制下方地址到浏览器上访问)复制该urll到浏览器地址栏,回车访问=> http://www.shagua.wiki/project/3?p=97复制该urll到浏览器地址栏,回车访问=> http://www.shagua.wiki/project/3?p=97复制该urll到浏览器地址栏,回车访问=> http://www.shagua.wiki/project/3?p=97个人感觉总结挺详细,很方便,大多代.

关于Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的区别及用法_content-type: application/x-www-form-urlencoded 为什_程宇寒的博客-程序员秘密

一、表单在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。 例如: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,这个一般文件上传时用。 t...

Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.sup_DaleyZou的博客-程序员秘密

解决:找不到资源文件: 系统会根据分辨率来选择加载不同drawable下文件夹的资源,如果只在一个文件下放了资源文件,不同的分辨率设备的会报错。 ...

E-R图的注意点与画法 _iteye_21076的博客-程序员秘密

E-R图的注意点与画法 1 文件系统阶段的数据管理有些什么缺陷?试举例说明。答:文件系统有三个缺陷: (1)数据冗余性(redundancy)。由于文件之间缺乏联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存储。 (2)数据不一致性(inconsistency)。这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎,就可能使同样的数据在不同的文件中不...

webpack4.x 处理less、sass文件,分离编译后的css,自动添加css前缀,自动消除冗余css 第七节_xyphf_和派孔明的博客-程序员秘密

处理less文件我们创建一个src/less/a.less文件@a:red;#div1{ color: @a; ul{ li{ list-style: none; height:30px; line-height: 30px; border-bottom

Android MTK 6763 User 版本默认打开usb调试_mtk手机默认连接usb调试指令_YHMQ66的博客-程序员秘密

1.xxxx\build\make\core\main.mkendif # !user_variantifeq (true,$(strip $(enable_target_debugging))) # Target is more debuggable and adbd is on by default ADDITIONAL_DEFAULT_PROPERTIES += ro.debu...

推荐文章

热门文章

相关标签