ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞分析笔记v2018.12.31

2020-01-05 19:01:42  阅读:408  来源: 互联网

标签:WR841N mii 31 mgr ioctl error 固件 17147 net


0x00 背景

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

复现参考文章https://www.4hou.com/posts/gQG9

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. 在完整硬件真机环境进行调试

标签:WR841N,mii,31,mgr,ioctl,error,固件,17147,net
来源: https://www.cnblogs.com/deerCode/p/12153236.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有