0x00 背景

Httpd服务中的缓冲区溢出漏洞

复现参考文章[https://www.4hou.com/posts/gQG9](对 TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞的分析)

Binwalk -Me 解压缩

File ./bin/busybox文件类型

MIPS 32位,小端

0x01 固件仿真环境搭建

在TPlink官网上直接找到了TP-Link TL-WR841N v14 2018-3月的固件版本,是漏洞修复前的,下载后想着既然没有实物,何不仿真运行呢?

在网上寻找资料过程中,在这篇文章【物联网设备固件模拟入门

】中找到了相应工具,固件分析工具包(https://github.com/attify/firmware-analysis-toolkit)

遵照教程一步步操作,能够在最后运行Netgear WNAP320 固件,在浏览器这个输入IP地址可以直接访问。

但是在对TP-Link TL-WR841N v14进行同样操作时,固件仿真运行失败

0x02 仿真失败原因探寻

首先搭建qemu仿真环境,下载https://people.debian.org/~aurel32/qemu/mipsel/ 网站上编译好的mips32el环境,通过wget指令下载 vmlinux-2.6.32-5-4kc-malta和debian_squeeze_mipsel_standard.qcow2到固件所在文件夹,然后输入:

sudo qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic,macaddr=00:16:3e:00:00:01 -net tap

运行qemu-system,用户名和密码都是root

之后通过scp -r ./squashfs-root  root@虚拟机ip:/root/

完成固件环境的搭建

Chroot /root/squashfs-root/ bin/sh

将文件系统切换到路由器文件系统,注意squashfs-root/ 和bin之间有空格

运行初始化文件:sh /etc/init.d/rcS


init.d/rcS: line 30: can't create /proc/sys/net/netfilter/nf_conntrack_icmp_timeout: nonexistent directory init.d/rcS: line 35: can't create /proc/sys/net/netfilter/nf_conntrack_expect_max: nonexistent directory init.d/rcS: line 37: can't create /proc/sys/net/netfilter/nf_conntrack_max: nonexistent directory insmod: can't insert '/lib/modules/kmdir/kernel/drivers/net/rt_rdm/rt_rdm.ko': invalid module format insmod: can't insert '/lib/modules/kmdir/kernel/drivers/net/raeth/raeth.ko': invalid module format insmod: can't insert '/lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_proto_gre.ko': invalid module format insmod: can't insert '/lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_pptp.ko': invalid module format insmod: can't insert '/lib/modules/kmdir/kernel/net/shortcut-fe/shortcut-fe.ko': invalid module format insmod: can't insert '/lib/modules/kmdir/kernel/net/shortcut-fe/shortcut-fe-cm.ko': invalid module format init.d/rcS: line 56: can't create /sys/sfe_ipv4/max_connections: nonexistent directory insmod: can't insert '/lib/modules/ipt_STAT.ko': invalid module format insmod: can't insert '/lib/modules/tp_domain.ko': invalid module format insmod: can't insert '/lib/modules/pppol2tp.ko': invalid module format insmod: can't insert '/lib/modules/l2tp_ppp.ko': invalid module format mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error mii_mgr: ioctl error /etc # init.d/rcS: line 74: can't open '/dev/null'

和用firmadyne工具运行结果相同,查看固件包中的proc文件夹,

是空的

运行httpd服务,也未成功

/etc # httpd
/etc # [ dm_shmInit ] 086:  shmget to exitst shared memory failed. Could not create shared memory.
[ dm_acquireLock ] 252:  lock failed, errno=22 rc=-1

固件仿真启动和httpd服务启动失败的原因估计是因为路由器在启动中,部分调用资源在其他硬件flash中,缺少服务支持导致固件运行失败。

0x03 解决方案

现在想到的有两个方案:

1. 在虚拟机中补充必要的支持文件

2. 在完整硬件真机环境进行调试

TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞分析笔记v2018.12.31的更多相关文章

  1. CVE 2019 0708 安装重启之后 可能造成 手动IP地址丢失.

    1. 最近两天发现 更新了微软的CVE 2019-0708的补丁之后 之前设置的手动ip地址会变成 自动获取, 造成ip地址丢失.. 我昨天遇到两个, 今天同事又遇到一个.微软做补丁也不走心啊..

  2. Intellij IDEA 2019 + Java Spring MVC + Hibernate学习笔记(2)

    书接上文 首先根据各种Spring MVC教程,建立了基础的结构,是否合理不知道,姑且先这样,有问题再解决问题.学习新东西,不能怕掉坑里... 查询网上别人的经历说需要把根目录下的lib目录下的所有包 ...

  3. CVE漏洞分析

    分析cve-2018-9489漏洞和download content provider(CVE-2018-9468, CVE-2018-9493, CVE-2018-9546), 每人至少选择一个漏洞 ...

  4. (传智博客)tp开发第一天之tp执行流程分析笔记

    1.入口文件index.php 2.ThinkPHP/ThinkPHP.php require THINK_PATH.'Common/runtime.php'; 3.ThinkPHP/Common/r ...

  5. Python题集:2019春Python程序设计选修课习题笔记

    一.判断题: 1-1.在Python 3.x中可以使用中文作为变量名. 答案:√ 1-2.Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型. 答案:× 1-3.Python ...

  6. 2019年年初iOS招人心得笔记(附面试题)

    第一部分是我当时准备的面试题 第二部分是我的心得 我重点在本文的第二部分说一下这次面试别人的心得体会.而关于第一部分的面试题,文中不提供答案(因为不是本文的重点) 第一部分:面试题 注意,下面这些题只 ...

  7. Intellij IDEA 2019 + Java Spring MVC + Hibernate学习笔记(1)

    之前的技术栈一直是围绕.net 做的,现在.net 技术栈的使用越来越少,越来越窄.好多原来的同事都转Java开发了. 最近公司变动,自己需要重新找个坑,压力山大.好多要求Java技术栈的根本没机会进 ...

  8. 2019强网杯web upload分析(pop链)

    参考链接:https://blog.csdn.net/qq_41173457/article/details/90724943 注意 只要namespace相同那就可以直接实例化同一namespace ...

  9. 2019.3.11 JavaScript课上笔记

    ---恢复内容开始--- 字面值写到左边 var  x= "1"; ++x .x++ // 都有隐式类型转换 x += 1; // 是字符串的拼接 === 判断引用的对象是不是同一 ...

随机推荐

  1. 【转】MSSQL获取指定表的列名信息,描述,数据类型,长度

    /* --作用:根据特定的表名查询出字段,以及描述,数据类型,长度,精度,是否自增,是否为空等信息 --作者:wonder QQ:37036846 QQ群:.NET顶级精英群 ID:124766907 ...

  2. 搜索——[HAOI2012]添加号

    题目:[HAOI2012]添加号 描述: [题目描述] 有一个由数字1,2,…9组成的数字串(长度不超过8),问如何将M(M<=5)个加号"+"插入到这个数字串中,使所形成的 ...

  3. Cocos2d-x基础篇C++

    1.C++类和对象 类的公有成员可以使用成员访问运算符(.)访问. (::)是范围解析运算符.调用成员函数是在对象上使用(.)运算符. 2.C++继承(C++中父类称为基类,子类称为派生类) clas ...

  4. Webpack模块加载器

    一.介绍 Webpack是德国开发者 Tobias Koppers 开发的模块加载器,它能把所有的资源文件(JS.JSX.CSS.CoffeeScript.Less.Sass.Image等)都作为模块 ...

  5. Extjs4+PHP MVC模式一(入门)

    Extjs是一个js框架,可以实现大部分web页面的东西,个人理解是一款集html.css.js一体的框架,功能挺强大的.结合PHP和sql可以实现整个系统.现在来说说怎么用它.(我的项目是用的TP框 ...

  6. poj 3013 Big Christmas Tree

    Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 20974   Accepted: 4 ...

  7. LINUX 笔记-VIM常用命令整理

    1.进入insert模式 o:当前行后 O:当前行前 r:替换当前字符 R:替换当前字符直到ESC 2.删除命令 #dw:删除#个word d^:删除至行尾 d$:删除至行首 3. u:撤消 ctrl ...

  8. GO语言一行代码实现反向代理

    本文,介绍了什么是反向代理,如何用go语言实现反向代理. 至于他的标题, "GO语言一行代码实现反向代理 | Writing a Reverse Proxy in just one line ...

  9. 无向图的 DFS 和 BFS实现 (以邻接表存储的图)

    #include <iostream> #include <queue> using namespace std; #define MaxVertexNum 10 typede ...

  10. 【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息

    1.http://blog.csdn.net/morewindows/article/details/6702342 在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享 ...