一次上传点解压缩的渗透测试

sssaa   ·   发表于 2021-12-29 18:17:30   ·   实战纪实

接到授权测试,给到的信息只有,目标网站是一个共享3D模型网站,主要的功能只有一个上传模型功能
这个网站没有后台管理员入口,所以这里主要测试上传点


发现注册时可以上传头像,上传限制了白名单,且各种绕过失败(没截到图)
先通过验证码爆破注册了用户test(没截到图,主要是随便加了个手机号,然后确定发送到Intruder对验证码进行爆破,就注册成功了test)

接着上传模型


上传模型处是上传zip,先测试随便上传一个png文件,提示了解压失败,说明文件上传后应该会解压。

再随便上传一个带jsp后缀的文件加上一个合法的模型压缩包看看


提示文件被解压,文件被上传后解压到了/mnt/data_disk01/pavilion/file/……处

访问这个路径,显示404,思考了一下,发现原来这是绝对路径而不是相对路径,所以无法从网站url直接访问,但是可以通过网站功能访问模型。且从这里的路径可知,网站为linux
然后在查看我上传的模型那里,再把模型下载下来,发现我的jsp后缀文件没有被删除。但是这里没什么意义,因为不能直接访问到jsp,说明木马也不会生效。

到这一步我发现,网站没有对我压缩包内的文件内容、文件后缀名进行检查,意味着我可以在压缩包内放任何文件上传并解压。这里我想到了压缩包目录穿越

此时制作压缩文件test.zip 里面内容为11111111111111111111111111.jpg
用010editor打开test.zip,把jpg的文件名改为../../../../../tmp/123.jpg

上传成功,网站回显解压成功了,这时,按理论上来说linux会把解压缩后的压缩包内文件名拼接在要解压到的路径上,变成了
/mnt/data_disk01/pavilion/file/../../../../../tmp/123.jpg

这样的话,最后文件就会被解压到/tmp下。但是我们该如何验证呢?

因为获取不到网站目录,我也没办法写马传上去,找不到包含点,知识面有点欠缺。于是我想碰碰运气传个ssh公钥上去,看看能不能连,或许运气好的话。。。

本地做好公钥私钥,把公钥传上去

构造压缩包内容为../../../../../../../../root/.ssh/authorized_keys

上传成功后,服务器就把公钥文件解压到了/root/.ssh/authorized_keys

然后直接ssh上去居然登录成功了。。。站主直接给网站配的root权限。。。

查看下/tmp下

果然有个123.jpg(其实ssh能直接公钥登录就已经验证漏洞存在)
(别问我截图为什么这么少,因为我等漏洞修复了我才写的文档,之前做的时候忘记写了。。。)

漏洞修复: 网站权限改为低权限。对上传点压缩包内容检查(过滤../)

用户名金币积分时间理由
zkaqzh 5.00 0 2021-12-30 17:05:03 一个受益终生的帖子~~
Track-劲夫 40.00 0 2021-12-30 14:02:34 一个受益终生的帖子~~

打赏我,让我更有动力~

2 Reply   |  Until 2021-12-31 | 826 View

Track-劲夫
发表于 2021-12-30

有思路

评论列表

  • 加载数据中...

编写评论内容

tnt3t34
发表于 2021-12-31

看到Response就在猜想pavilion在网站中的目录路径,谁料系统可以直接SSH,骚气

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2023 掌控者 All Rights Reserved.