D-Link DIR505路由器溢出漏洞实战

我用一个例子疏通“路由器漏洞&复现”【建议收藏!!】 一、介绍 ​ 该缺陷存在于Cisco IOS XR软件的Cisco Discovery Protocol中,它可能导致黑客的攻击。 ​ “该漏洞是Cisco Discovery Protocol中字段字符串输入的错误验证所致。黑客可以通过向受影响设备发送恶意Cisco Discovery Protocol数据包以利用漏洞。” “被成功利用的漏洞可能导致堆栈溢出,黑客便可以执行任意代码。” ​ Cisco专家指出,其他黑客也可以利用此缺陷。美国国家安全局(NSA)声称该漏洞在漏洞排名中位居前25。 IOS . 阅读详情

D-Link DIR505路由器溢出漏洞复现

一.基本IOT试验环境准备

本试验需要基于一些常用二进制以及模拟器工具,实践之前请提前安装和准备:

binwalk及sasquatch 插件安装:
binwalk用于IOT固件解包以及文件系统、二进制文件提取。

buildroot交叉编译环境安装
用户在X86 环境下编译其他CPU架构的二进制程序。

qemu模拟器安装
虚机程序,可使用它在X86环境下模拟运行其他CPU架构的二进制程序。

wine模拟器安装
Linux环境下的windows程序运行模拟器。本实践采用在Linux环境下运行IDA 逆向工具。

二.漏洞复现及利用过程

2.1淘硬件:

在咸鱼平台上淘这类IOT小设备作为试验用途还是挺实惠的,如下图40元包邮搞定DIR505路由器硬件:
在这里插入图片描述

2.2固件包获取及二进制提取:

如果是从二进制着手去挖掘漏洞固件获取是第一步。在能够通过互联网手段下载到固件包的情况下优先直接下载;否者需要采用编程器这类设备进行固件提取,本次实践直接在网上找到了固件包,版本为:DIR505A1_FW105CNB01.bin

预先安装好binwalk工具,并安装sasquatch 文件系统补丁,进行文件系统提取,拿到my_cgi.cgi二进制文件,供后续分析。采用binwalk -Me 命令进行解包、提取后,拿到sasquatch文件系统如下图所示:

在这里插入图片描述

my_cgi.cgi文件在 /usr/bin路径之下:

在这里插入图片描述

2.3伪代码溢出点分析:

经过相关资料的查阅,得知该漏洞发生的位在my_cgi.cgi的get_input_entries函数。由于该文件的访问没有权限控制,所以一旦它的溢出漏洞被发现并且没利用成功,威胁程度非常高。

IDA工具逆向my_cgi.cgi二进制文件,得到C语言伪代码, 如下图所示:
在这里插入图片描述
在这里插入图片描述

如上图所示,get_input_entries的入参content_length 控制while循环次数,每次循环给buf赋值写入数据。而数据来源用户POST报文的数据字段,当数据的长度content_length 超过buf的大小即会产生溢出。由于没有异常保护,这个溢出点完全是攻击者可控的。

2.4二进制模拟调试确认溢出漏洞:

通过逆向分析伪代码找到漏洞位置之后,需要进行模拟调试进行漏洞确认。

在IDA 通过 jump to xref 找到 my_cgi.cgi 中main函数调用 get_input_entries 函数的位置,如下图所示:

在这里插入图片描述

如上图所示,get_input_entries 入参 my_entries buf长度 为477456,故当POST数据长度content_length > 477456时有机会触发溢出。

使用file命令得知my_cgi.cgi二进制程序是一个mips 32位大端ELF:
在这里插入图片描述

所以需要使用 qemu 的 qemu-mips 的模拟程序。

故构造如下shell脚本,调用qemu-mips 调试 my_cgi.cgi 二进制程序:

在这里插入图片描述

如上图所示,qemu-mips 通过 -E参数设置HTTP头的参数。qemu构造的是一个HTTP POST报文其数据内容为‘storage_path=’+ 490000个‘Q’(需要明显大于 my_entries buf的长度,确保能够溢出) HTTP 头 CONTENT_LENGTH字段值即POST数据的长度。脚本运行结果如下:
在这里插入图片描述

如上图所示my_cgi.cgi跑出了段错误。出现段错误,可能是由于RA寄存器的被改写,程序访问了程序段地址空间之外的地址所导致。

为了证明这个段错误是由于溢出引起的,我们重新构造脚本,让POST数据小于 my_entries buf的长度,并运行:

在这里插入图片描述
在这里插入图片描述
如上图所示,当POST数据填充长度为490 远小于 my_entries buf 长度时,my_cgi.cgi运行时不会出现段错误的。正常返回了Web页面数据。

至此,我们确认了my_cgi.cgi二进制程序中 get_input_entries 溢出漏洞的存在。

2.5EXP编写及漏洞利用:

上一节我们通过QEMU的模拟运行确认了溢出漏洞的存在,现在我们需要精确控制溢出,实现对IOT设备的控制。

2.5.1MIPS溢出漏洞利用原理:

RA通用寄存器:

MIPS 有$0-$31 32通用寄存器。其中$31 也称为$RA (返回地址Return Address)寄存器**。也就是说当一个函数执行完成后可以通过$RA寄存器的函数地址决定后续程序执行走向。

MIPS架构下非叶子子函数程序执行流程:

当函数A调用函数B时,函数调用步骤:

01 当函数A调用B时,函数调用指令复制$PC寄存器(指令寄存器)的值到$RA。

02 当程序跳转到B执行,由于B不是叶子函数,函数指令会将函数返回地址即A的地址存入堆栈。

03 B函数执行完成准备返回时,指令会将堆栈内存储的A函数地址反写会$RA寄存器,然后通过jr $RA 的指令,将执行流程重新转向A

终上所述,若我们能够精确的控制溢出,改写堆栈上保存函数的返回地址,那么攻击者就能够控制程序执行走向造成系统被完全控制等严重后果(本次实践,拿到路由器shell)。

2.5.2精确控制$RA寄存器的值:

在2.4节,我们通过调试脚本(run_script.sh),确认了溢出漏洞的存在,现在需要反复调试run_script.sh脚本中 storage_path= Padding 数据的长度,直到正好能够覆盖$RA寄存器中的值。

在这里插入图片描述
如上图所示,脚本中 增加 -g $PORT 参数,使得my_cgi.cgi 运行之后,能够被IDA 进行远程调试。由于my_entries buf 长度为477456,所以从该长度开始尝试,反复试验后,发现填充 4777464个字符Q后,再写入4个字节A正好可实现对$RA寄存器数据的覆盖。

在这里插入图片描述

如上图所示,在get_input_entries函数的return 处增加断点。采用IDA 连接4444端口反复进行远程调试。每次修改Pading字符(Q)字符后,观看RA寄存器的值,直到$RA寄存器的值正好被4个A覆盖之后,则说明Pading字符(Q)的个数调试OK了。测试脚本数据应该为:

**‘storage_path=’+'Q’477464+'A’4

2.5.3寻找可以利用的函数:

能够精确控制$RA寄存器的值之后,现在我们现在需要找到可利用的函数。通常拿到shell,我们可以使用系统函数system 开启telnet服务的方式实现。所以通过搜索system的调用者,来寻找可利用的函数:

在这里插入图片描述

如上图所示,通过system函数的引用关系,选定了get_remote_mac 函数,其中地址为405234的地方调用了system。

在这里插入图片描述

如上图所示,get_remote_mac函数,通过sprintf函数,将cmd入参拼接至v11,然后调用system函数进行系统命令执行。

为了给cmd入参传入有效数据,需要找到cmd参数相对get_remodte_mac函数地址的偏移量。
在这里插入图片描述

如上图所示,cmd参数相对于get_remote_mac函数地址的偏移量为0x64-0x3c=0x28

2.5.4构造EXP:

根据2.5.2和2.5.3的分析结果,为了调用system函数,实现对溢出漏洞的利用拿到shell,我们需要构造如下ROP Chain(Return-Oriented Programming)
在这里插入图片描述

将上述ROP Chain转换为Python3 EXP脚本如下图所示:
在这里插入图片描述

如上图所示,利用上述EXP可以实现命令注入,开启路由器的telnet服务。

2.6 采用EXP攻击路由器:

如下图所示,运行EXP Python3脚本,然后直接尝试采用默认IP 192.168.0.1 telnet登录:
在这里插入图片描述

如上图所示,执行EXP脚本之后,telnet服务被打开.telnet登录之后,直接获取root权限,至此路由器完全被控制。

某路由器代码执行漏洞复现 从作者给的图片中可以看出关键词包含“网管系统”,而图片中显示归属地是哈萨克斯坦,域名简写为"KZ"。所以我们fofa搜索:title="网管系统" && country="KZ"使用方法:将待检测URL列表按行写入url.txt,将url.txt与本脚本放在同一目录并运行脚本。最后友情提示,切勿利用文中技术作非法用途,由此产生的一切法律后果自行承担!这里我们点到为止,不写入webshell,只检验漏洞存在。看这寥寥无几的结果,应该是这个系统无疑了,尊重作者我们打上码!我们循着蛛丝马迹复现一下。 阅读详情

相关推荐

漏洞复现-路由器TOTOLINK-A6000R-RCE

TOTOLINK A6000R是一款性能卓越的无线路由器,采用先进的技术和设计,为用户提供出色的网络体验。其支持最新的Wi-Fi标准,可实现高速稳定的无线连接,适用于各种网络需求,包括流畅的高清视频流、快速的在线游戏和大规模文件传输。双频段支持让用户可以根据需求选择最佳的无线信号频段,确保网络稳定性和速度。此设备中的webcmd函数中存在命令注入漏洞,攻击者可以通过webcmd 函数中的cmd参数包含命令,进行命令执行攻击。

无问社区的博客 974

【从零复现CVE漏洞】Tenda 路由器栈溢出复现(CVE-2018-18708)

Tenda 路由器栈溢出复现(CVE-2018-18708)

m0_55368674的博客 7242

CVE-2019-19945漏洞复现 Openwrt针对uhttpd漏洞利用

CVE-2019-19945漏洞原理和复现

weixin_51339377的博客 1050

路由器漏洞复现_看了之后每个人都是黑客

渗透测试,网络安全,路由器安全

m0_67742636的博客 1279

漏洞复现 D-Link DCS 密码泄露漏洞

D-link DCS是一款网络摄像机,工作温度为0-50℃。D-link DCS系统存在密码泄露漏洞,攻击者通过漏洞可以获取后台权限。1.使用poc进行账号密码查看,得到密码登录即可。

失心少年 955

D-Link DIR 505路由器最新中文语言包支持及安装指南

本文还有配套的精品资源,点击获取 简介:D-Link DIR 505最新中文语言包为A1和A2型号的路由器提供了中文界面,使非英语用户能够更方便地管理和设置设备。语言包更新包括用户界面翻译、错误信息与提示、帮助文档、兼容性优化和安全性考虑。此外,还提供了详细的升级流程和后续支持说明,确保用户能够顺利升级并持续享受最新的语言包更新。 1. D-Link DIR-505路...

weixin_34598113的博客 1391

揭秘家用路由器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参数中sto

houjingyi的博客 2781

友讯(Dlink)DIR-505便携云机简体中文语言文件

Dlink DIR-505 A1&A2硬件通用简体中文语言文件,各版本硬件通用

Netgear无线路由器漏洞复现(CVE-2019-20760)

本文复现的漏洞为Netgear路由器远程命令执行漏洞,1.0.4.26之前的NETGEAR R9000设备会受到身份验证绕过的影响,可利用漏洞将木马程序下载下来,获取 shell。

蚁景网安学院 2169

Gargoyle石像鬼中文语言包支持各个版本固件

Gargoyle石像鬼中文语言包 支持 Gargoyle1.5 Gargoyle1.6 Gargoyle1.7 Gargoyle1.8 Gargoyle1.9 版本石像鬼固件

android技术--------如何解决弹出键盘只影响当前fragment输入的窗口

题目比较长,也可能有很多人不明所以这东西有啥可写的,简单来说就是实现近似于Android Pad 上QQHD聊天的界面效果,搞了很长的事件,今天终于搞定。 android3.0新加了组件Fragment称之为碎片,对这个一无所知的请自觉补习。今天的阐述将基于此组件。 fragment可以放入activity中,并随activity的生命周期变化而变化,但当相应键盘事件的时候,就比较让人挠头了,

3505

Tenda路由器 信息泄露漏洞复现

Tenda是一家专门提供网络设备和解决方案的公司,其中最知名的产品之一是路由器。Tenda路由器在家庭和小型办公室中非常受欢迎,因为它们提供了稳定的无线网络连接和易于设置的功能。

1461

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

【复现】CVE-2024-29269 某国外路由器RCE漏洞_72

【复现】CVE-2024-29269 某国外路由器RCE漏洞,通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。

fushuang333的博客 1528

fMRI独立成分分析方法(ICA)工具GIFT

详细介绍了进行fmri数据进行ICA分析的工具包GIFT的使用,和进行ICA分析的流程。

m0_58256026的博客 1万+

电力系统设计实战:如何用ETAP绘制一次接线图并优化供电方案

本文详细介绍了如何使用ETAP软件进行电力系统一次接线图的绘制与供电方案优化。从基础环境配置到主接线拓扑构建,再到典型接线方式的对比分析与智能优化,为工业与民用电力系统设计提供实用指南。通过ETAP的可靠性分析和动态仿真功能,帮助工程师选择最优供电方案,提升系统可靠性和运维效率。

weixin_29250573的博客 205

D-link DIR-823G(CVE-2023-26616)漏洞复现

main函数调用sub_423F90,通过sub_423F90返回值进行判断。分析发现栈溢出由于使用strncpy,V64-V71字符数组长度64,分别存储URL1-URL8,URL1-URL8的长度未进行限制,因此发生溢出。main->sub_423F90->sub_42383C->(LOAD段)sub_46B6E8->sub_469F78。sub_42383C调用off_588D80表中的内容进行比对,off_588D80表中存储的函数对应的动作,sub_46B6E8位于该表中。

The54No1的博客 771

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2014

路由器——缓冲区溢出漏洞

栈操作:MIPS32架构堆栈与x86架构一样,都是向低地址增长的。但在MIPS32架构中没有EBP(栈底指针),进入一个函数时,需要将当前栈指针向下移动n比特,这个大小为n比特的存储空间就是此函数的Stack Frame的存储区域。此后,栈指针便不再移动,只能在函数返回时将栈指针加上这个偏移量恢复栈现场。由于不能随便移动栈指针,所以寄存器压栈和出栈时都必须指定偏移量。调用:调用:如果函数A调用函数B,调用者函数(函数A)会在自己的栈顶预留一部分空间来保存被调用者(函数B)的参数,我们称之为调用参数空间。

qq_67181251的博客 543

Signoff Criteria --- ocv/aocv/pocv之AOCV介绍

Advanced on chip variation,相比较于OCV来说,对于悲观度的去除很有效。相比较与ocv对于整个design中的lauch/capture path设置统一的derate值,aocv通过将cell derate值与cell的逻辑深度以及实际的位置结合起来进行derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的aocv lib file,里面有专门对相关的cell进行的aocv derate值的描述。> table: \

sinat_27691203的博客 7852

103、模拟增益vs数字增益:信噪比、动态范围与噪声放大的权衡艺术及调试陷阱

摘要 本文深入探讨了模拟增益与数字增益在图像处理中的差异及其对信噪比、动态范围和噪声放大的影响。作者通过实际案例揭示了数字增益可能导致的噪点放大问题,分析了模拟增益在物理层面对信号和噪声的放大机制,以及数字增益对量化噪声的影响。文章详细比较了两种增益方式下信噪比的变化曲线,指出数字增益会平方放大量化噪声的致命缺陷。此外,作者总结了常见的调试陷阱,并提供了针对不同光照场景的增益分配策略建议。最后强调调试时应优先考虑模拟增益,严格控制数字增益幅度,并配合降噪算法优化以获得最佳图像质量。

zzfmlxs的博客 48

D-Link RCE漏洞分析

呸

weixin_43137410的博客 828

AWS DevOps Agent 完全指南

AI 驱动的 SRE 队友,7×24 自主调查告警、定位根因、生成修复方案、预防未来故障。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 381

【0day漏洞复现】中移铁通禹路由器信息泄露漏洞

中移铁通禹路由器支持宽带拨号、动态IP和静态IP三种上网模式,一般中国移动宽带的光猫都是智能光猫也就是光猫带路由器功能,中移禹路由器作为二级路由使用。中移禹路由器ExportSettings处存在信息泄露漏洞,攻击者可以获取后台权限。

qq_34780861的博客 1140

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为HG532路由器RCE漏洞复现

作为刚开始学习IOT设备漏洞的新人,看到一篇写得很好的经典IoT漏洞的分析与复现文章,于是尝试复现这些漏洞。期间也是遇到很多问题,对于环境与这些固件设备的了解还很少,所以环境配置等方面与师傅文章里写的不太一样。我的虚拟机是公司设备使用的是NAT连接,如果是桥接的可以去看这位师傅的原文。参考文章一些经典IoT漏洞的分析与复现(新手向) - IOTsec-ZoneCVE-2017-17215是CheckPoint团队披露的远程命令执行(RCE)漏洞,存在于华为HG532路由器中。

qq_63834367的博客 1595

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

踏入IOT安全世界:DIR-815路由器多次溢出漏洞分析复现

在进行IOT安全领域的学习和实践中,经典漏洞的复现是必不可少的一环。本文将介绍一个经典漏洞,涉及到Binwalk、firmware-mod-kit、FirmAE等工具的使用,以及对DIR-815路由器中多次溢出漏洞的复现过程。

蚁景网安学院 1463

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 设计模式----装饰器模式
下一篇: 常见操作系统命令注入思路
牛屁哄哄叫兽
博客等级 码龄18年 56粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值