复现 DLink DIR-859 RCE 漏洞(CVE-2019–20215)_d-link dir-859 1.05 and 1.06b01 beta01 devices all-程序员宅基地

技术标签: 安全  渗透测试  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

智能推荐

CCF试题(C++实现)——201809-1 卖菜_在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天-程序员宅基地

文章浏览阅读367次。最近在看CCF试题,在此做下学习笔记,有问题随时联系,欢迎批评指正201809-1 卖菜【问题描述】在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。  第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用..._在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天

带联网功能的RFID宿舍门禁(五)-项目总结_esp8266 读取id卡-程序员宅基地

文章浏览阅读776次,点赞2次,收藏7次。文章首发及后续更新:https://mwhls.top/1075.html新的更新内容请到mwhls.top查看。无图/格式错误请到上方的文章首发页面查看。带联网功能的RFID宿舍门禁项目目录Github项目地址效果展示视频http://pan-yz.chaoxing.com/preview/showpreview_536535694800277504.html?v=1605849878000完成效果舵机转动:收到转动信号后,舵机正转180°,后逆转180°复原。读卡转_esp8266 读取id卡

Java注解解析-运行时注解详解(RUNTIME)_注解在运行时能看到什么内容-程序员宅基地

文章浏览阅读568次。一 注解的定义注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明 。如果要对于元数据的作用进行分类,还没有明确的定义,不过我们可以根据它所起的作用,注解不会改变编译器的编译方式,也不会改变虚拟机指令执行的顺序,它更可以理解为是一..._注解在运行时能看到什么内容

预警雷达半实物仿真验证系统-程序员宅基地

文章浏览阅读592次。 概述  为了更真实地模拟预警雷达的工作过程,检测预警雷达的预警效能,恒润科技基于丰富的雷达射频经验,为用户提供了基于半实物的预警雷达半实物仿真验证系统。互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一伍扒中间的是壹壹三三最后的是泗柒泗泗,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解..._半实物模拟仿真系统 雷达预警 学术

hystrix dashbord 后台报错 Error proxying request的解决方案_ashboardconfiguration$proxystreamservlet : error p-程序员宅基地

文章浏览阅读2.6k次。hystrix dashbord 后台报错堆栈信息:2020-01-19 18:35:47.023 ERROR 18836 --- [nio-8093-exec-4] ashboardConfiguration$ProxyStreamServlet : Error proxying request: http://localhost:8023/actuator/hystrix.streamj..._ashboardconfiguration$proxystreamservlet : error proxying request

Android nfc读卡模式流程_android nfc native读写卡-程序员宅基地

文章浏览阅读7k次,点赞3次,收藏8次。最近一个项目需要将Android的nfc接口底层通过串口对接到外围一个单片机上,而nfc设备是接在单片机上的,这就需要对Android的nfc框架进行梳理,确定与单片机对接的接口通讯;上网查找发现资料不少,本次分析主要参考了以下大神的博客,基本上已经是非常清楚了!按照自己的理解对相关部分进行整理!nfc的相关背景知识请参照此博客查阅即可:http://blog.csdn.NET/xuwen03_android nfc native读写卡

随便推点

@RequestBody注解基础_@requestbody object-程序员宅基地

文章浏览阅读744次,点赞10次,收藏6次。通过json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合实体类的对应属性的类型要求时,会调用实体类的setter方法将值注入到该属性。这种方式相对来说比较简单,我们将json解析成Map形式的key-value键值对,通过map.get(“Key”)就可以拿到值。@RequestBody 用于接收前端传递给后端的json字符串中的数据。(处理json格式的数据)@RequestBody注解一般与post方法使用。一个请求中只能存在一个@RequestBody注解。_@requestbody object

【读书笔记】看你能坚持读几本书?!——三十本互联网必看书籍_奋斗的书-程序员宅基地

文章浏览阅读4.3k次。读书的好处不用说,坚持下来真不易!尝试过各种方式,收听喜马讲书,微信读书,购买读书课程。本篇不定时更新,记录读书摘要和心得感受,欢迎交流!20181023 第三十本《娱乐至死》作者:尼尔 波兹曼1. 娱乐为什么能改变世界1.1 媒介的定义概念上,承载信息或内容的容器;传播上,用来传播信息的技术设备,人眼睛和耳朵的延伸;媒介即隐喻,如手表是了解时间的媒介;媒介即认识论,钟表以24小..._奋斗的书

Java中Cloneable接口的浅复制与深复制_java cloneable string-程序员宅基地

文章浏览阅读995次。Java中的深拷贝(深复制)和浅拷贝(浅复制) 深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤其在C++语言中,若不弄懂,则会在delete的时候出问题,但是我们在这幸好用的是Java。虽然java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),我们还是要给予..._java cloneable string

c语言编写一函数 使输入的字符串按逆序,将n个数按输入时顺序的逆序排列 用函数实现 C语言...-程序员宅基地

文章浏览阅读1k次。将n个数按输入时顺序的逆序排列,用函数实现以下是此题的【c源代码】,需要【c++源代码】请点击进入#include int main(){void sort (char *p,int m);int i,n;char *p,num[20];printf("input n:");scanf("%d",&n);printf("please input these numbers:\n");for..._输入n个字符串用逆序连接

[UVM源代码研究] sequence、 sequencer与driver的通信(uvm-1.2版)_sequence访问driver变量-程序员宅基地

文章浏览阅读615次,点赞12次,收藏29次。sequence、 sequencer与driver的通信_sequence访问driver变量

解决RecyclerView刷新时,列表中的视频窗口闪烁的问题。_android 刷新item 不影响视频-程序员宅基地

文章浏览阅读346次。最近做在线课堂的过程中,多个用户开视频时,刷新状态,会闪烁。@Overridepublic long getItemId(int position) { return Long.parseLong(userList.get(position).getUserId());}userVideoAdapter = new UserVideoAdapter(getActivity(), mRtcEngine);userVideoAdapter.setHasStableIds(true)_android 刷新item 不影响视频

推荐文章

热门文章

相关标签