由 zip 压缩绕过目录穿越限制导致的 getshell 分析
1341025112991831 WEB安全 163浏览 · 2025-02-24 17:31

由 zip 压缩绕过目录穿越限制导致的 getshell 分析

前言

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。

zip 压缩的漏洞点原理

比如如下的命令

zip -r ./a.zip:将指定内容递归压缩到 a.zip 文件中。

`....\a:这是一个路径模式,.. 表示上级目录,* 是通配符,a 是文件名的一部分。

原因

解压的时候可能没有验证../或者导致被绕过,就可能导致我们的目录穿越,压缩我们的文件到任意目录导致危险的利用

漏洞复现

首先我们自己需要制造一个文件

然后我们来到 cms 的漏洞点



这里可以上传主题

上传我们的 zip 文件

然后点击确定

我们根据穿越的点观察

原目录



解压后创建的文件



成功创建了 a 文件

如何 getshell 呢

这个漏洞其实相当于任意文件上传了

参考https://gitee.com/y1336247431/poc-public/issues/I9BA5R

在 linux 环境中



写了一个反弹 shell 的定时任务

然后监听端口



成功 getshell

漏洞分析

根据 exp 定位到我们的漏洞路由

定位解压的代码



然后跟进压缩的地方

首先是限制了我们的目录穿越的,但是为什么又可以呢,这个就涉及到我们的特殊 payload 了

为什么是有星号了



这样正好替换了

造成我们的目录穿越,导致任意文件写入了





这里会报错





这个无所谓的,因为在模板解析报错之前我们的压缩已经完成了

代码如下


0 条评论
某人
表情
可输入 255