记一次SSRF+文件上传组合拳:复盘我是如何组合漏洞一步步Getshell的

admin 2026-03-06 18:23:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文复盘了组合漏洞Getshell的过程。作者发现Druid弱口令与未授权上传接口,利用其构造XSS。随后挖掘kkFileView组件SSRF与文件读取漏洞,获取敏感信息。最终通过源码审计发现上传接口路径穿越,结合Tomcat服务上传Webshell成功提权。文章体现了信息收集、漏洞挖掘与审计结合的实战技巧。 综合评分: 85 文章分类: 渗透测试,WEB安全,漏洞分析,实战经验,代码审计


cover_image

记一次SSRF+文件上传组合拳:复盘我是如何组合漏洞一步步Getshell的

1266136730734380 1266136730734380

只会看监控的实习生

2026年3月6日 14:48 广东

0x01 druid弱口令

1.前期对这个web应用做信息收集时,没有收集到任何有用的信息,它看上去就像是一个简单静态页面展示(这里就不截图展示了,厉害的大佬能根据页面找到这个web)。但是当我打开浏览器devtools进行抓包时,发现其存在网络请求,并且每个请求包的一级路由都是相同的,在查看服务器信息发现是ngnix → 推断为前后端分离的项目。

2.如果是前后端分离的项目,首先想到的就是java web应用(按目前市面上主流开发来看的话)。并且如果是spring的项目话一般是会有默认报错页面的,这里为了验证猜测,我直接在浏览器访问了这个路由。

3.显而易见,这是一个java spring的项目。spring项目一般是存在很多敏感目录和敏感文件的,我们可以使用字典来进行进一步的信息收集。这里我用的是曾哥的SpringBootScan:

4.发现接口文档路径和druid的登陆页面,这里我先打开druid的页面看是否存在未授权或者弱口令。

5.好吧没有未授权,但是存在登陆页面,只能默认密码或者弱口令爆破了。结果直接默认密码登陆成功了,成功拿到一个druid的弱口令漏洞。

6.然后我就想能否找到后面页面,通过druid的session监控里面的session爆破session登陆到后台,可惜并没发现任何后台地址或路由信息。到这里只能放弃了。

0x02 组合漏洞xss:接口未授权访问+文件上传+xss

1.根据前面SpringBoot敏感信息收集的swagger文档里面,我找到了一个文件上传接口(存在未授权访问)。由于是一个jar包启动的项目,他不像tomcat中间件启动的项目能够解析jsp文件以便于我们获取webshell,对于这类java项目通过文件上传的方式获取shell是不太可能的。于是我就想能否上传一个html页面,实现一个xss。请求包构造payload发送结果如下:

2.他是一个图片上传接口,但是我将后缀改为html是没有任何校验的,得到这个返回结果发现只是将文件名重写了并未重写后缀,访问页面,成功拿到一个xss漏洞:

0x03 java组件存在ssrf、任意文件读取等多个漏洞

1.swagger文档没有获取到其他可以利用的点,跑回前端对前端代码做一个简单的审计(主要目的是挖掘更多的路由、url、资产地址等),这个位置存在了大量的接口地址信息,并且有一个地址很独特,看名字像是一个图片预览地址:/preview/onlinePreview?url=

2.访问地址/preview/onlinePreview?url=,页面如下:

3.直接拼上百度地址首页图片是springboot默认页面报错,虽然是500报错码,但没有具体报错信息,无法进一步利用。

4.然后我就去掉了url参数意外发现了报错信息,这里比较关键的是这个包信息:cn.keking → 进行进一步收集发现是一个叫做kkFileView的java组件

5.查看官方的文档说明,发现其是一个单独的springboot项目,并且存在一个主页面,上面会记录其最新版本更新说明。

思考:如果我能获取到目标的这个kkFileView服务主页面的更新说明,能否根据其版本信息查询到一些历史漏洞呢?→ 最终得到其版本信息为v4.0.0

6.收集版本对应历史漏洞主要如下: 1)存在zip slip文件解压进行文件替换造成的RCE 2)SSRF 3)文件读取

(第一个漏洞危害有点大了,他会替换文件,实在不行再考虑利用)

文件读取漏洞

这里我们主要是用了ssrf和文件读取,最终利用成功,这里我读取了/etc/passwd:

ssrf漏洞

然后读取云服务信息,这里通过whois查询发现是腾讯云服务器,读取元数据信息:

后续我想通过元数据信息拿到accesskey接管其账号,没有利用成功(有厉害的大佬可以交流一下),貌似其并没有开通ram信息接口地址等导致我无法获取临时的token。

0x04 通过文件上传拿到webshell

1.最终我还是想拿到服务器权限,有没有什么其它方式呢? → 把想到了办法都用了,搞了半天,最终还是审计源码给了我突破口。

(分享点小经验,当找不到服务源码具体路径或者其它文件路径时:不妨查看一下.bash_history,说不定有惊喜)

2.通过file协议对其服务jar包进行下载,反编译后审计,找到一个文件上传接口存在路径穿越:

3.第一部分path是获取的config.properties配置的路径信息,第二部分filename是file.getOriginalFilename()获取的全文件名,后续代码并未对其进行过滤直接进行了路径拼接。这里有一个问题:如果存在文件名为../../../,将会达到一个任意目录穿越的效果,最终形成任意文件上传到任意目录的一个漏洞。

4.这里由于前期的信息收集,我是发现其存在一个tomcat的服务。于是我利用这个任意目录的任意文件上传,上传jsp后们到了tomcat服务中。数据包构造如下:

5.通过哥斯拉连接后门,成功拿下服务器权限:

原文链接:https://xz.aliyun.com/news/91668


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:只会看监控的实习生 1266136730734380 1266136730734380《记一次SSRF+文件上传组合拳:复盘我是如何组合漏洞一步步Getshell的》

速进!大量安全项目 网络安全文章

速进!大量安全项目

文章总结: 该文档是一篇针对网络安全认证培训与考试代报名服务的推广文案。作者以分享安全项目为名引导用户添加好友进入群组,实际核心业务为承接CISP、CISSP、
评论:0   参与:  0