跳转到帖子
应急响应中心的俱乐部博客
  • 篇帖子

    283
  • 篇意见

    0
  • 次查看

    2320

关于此博客

背景 文件上传一直是 Web 安全里很常见、也很容易被低估的风险点。很多业务后台认为“只有管理员能上传”“上传后不直接展示给外部用户”就可以放松限制,但实际审计中经常会看到:上传目录可执行、扩展名校验不严、MIME 信任客户端、文件名未规范化、对象存储回源配置不当等问题叠加,最后把一个普通功能变成高危入口。 这篇文章不讨论利用攻击链,只整理一次后台上传模块审计中比较有代表性的检查方法和加固建议,偏长期可复用的经验。适合做代码审计、上线前安全评审、内部安全规范梳理时参考。 典型场景 业务侧常见需求是:运营人员在后台上传图片、附件、模板文件,系统保存到本地目录或对象存储,并将访问地址写入数据库。看起来功能很简单,但安全边界往往不清晰。 一个典型的上传流程大致如下: 前端选择文件并提交 multipart/form-data 请求。 后端读取文件名、后缀、Content-Type、文件大小。 校验通过后保存到 upload 目录或转存到对象存储。 返回 URL,前台或后台页面引用该 URL。 问题通常出在“校验”和“存储”两个环节。单点缺陷未必严重,但多个缺陷组合后风险会明显上升。 审计关注
T0xfce
背景 接口越权是业务系统里非常常见、也最容易被低估的一类问题。它通常不依赖复杂漏洞链,也不需要特殊环境,根因往往是后端只做了登录校验,却没有把“当前用户是否有权访问当前资源”这件事落实到每一个关键接口。 这篇文章整理一次比较典型的接口越权复盘思路,重点放在代码审计和修复验证上。内容面向企业内部安全自查、研发排查和安全测试复盘,不涉及非法访问或攻击引导。 问题场景 假设一个业务系统中存在订单、工单、客户资料等资源。前端页面会根据登录用户展示自己的数据,但后端接口通过资源 ID 查询详情时,只检查了用户是否登录,没有校验资源归属关系。 常见接口形态如下: GET /api/order/detail?id=10086 GET /api/ticket/detail?ticketId=20240001 POST /api/customer/update问题代码通常并不显眼,甚至在业务逻辑上看起来“很正常”: @GetMapping("/detail") public OrderDetailVO detail(@RequestParam Long id) { return orderSer
T0xfce
背景 最近整理了一起站点被植入 WebShell 的处置记录。事件本身不算复杂,但里面涉及的几个环节比较有代表性:日志回溯、可疑文件定位、入口漏洞判断、代码审计修复,以及后续监控加固。这里把思路整理成一篇长期可参考的复盘,重点放在防守侧排查和修复,不展开攻击利用细节。 场景大致如下:一套 PHP 业务系统部署在 Nginx + PHP-FPM 环境,后端存在文件上传和富文本编辑功能。运维发现服务器出站连接异常,同时 Web 目录下出现了命名不规则的 PHP 文件。业务侧反馈近期没有发布过相关文件。 问题现象 Web 根目录及上传目录下出现异常 PHP 文件。 Nginx 访问日志中存在对非常规路径的访问,例如上传目录中的 PHP 文件。 PHP-FPM 慢日志偶尔出现异常脚本执行记录。 主机侧存在可疑外联行为,但没有发现系统账号被新增。 这类事件最容易误判的地方,是只删除 WebShell 文件就结束。实际处置中更重要的是确认入口,否则文件很可能再次出现。 第一步:保护现场与范围确认 如果业务允许,建议先做隔离或只读快照。至少应保留以下材料: Web 目录完整快照。 Nginx / A
T0xfce
背景 目录穿越漏洞属于 Web 安全里比较基础但长期高发的一类问题。它的触发条件通常并不复杂:后端根据用户传入的文件名或路径读取本地文件,但没有对路径进行可靠约束,导致攻击者可以通过 ../、编码变形或路径拼接问题访问预期目录之外的文件。 这类问题在文件下载、日志查看、模板预览、静态资源代理、附件读取等功能中比较常见。本文主要从防守和审计角度整理一次典型目录穿越问题的复现思路、代码审计要点和修复建议,不涉及未授权攻击目标。 问题场景 假设某系统提供一个文件下载接口,用于下载用户上传后的附件。接口大致如下: GET /download?file=report.pdf后端逻辑是从固定目录读取文件,例如: /data/app/uploads/report.pdf如果开发者直接把用户参数拼接到文件路径中,并交给文件读取函数处理,就可能出现目录穿越风险。 String baseDir = "/data/app/uploads/"; String file = request.getParameter("file"); File target = new File(baseDir + file);
T0xfce
背景 SSRF(Server-Side Request Forgery)在实际业务里并不罕见,尤其是带有“URL 预览、远程图片抓取、Webhook 回调、文件转存、第三方资源导入”等功能的系统。它的危险点不只在于服务端可以代替用户发起请求,更在于服务端通常位于内网或云环境中,能够访问普通用户无法触达的地址。 这篇文章整理一次比较典型的 SSRF 排查与修复过程,重点放在识别思路、代码审计关注点、可验证的安全测试方式和工程化防护落地。文中示例均以本地靶场和授权测试环境为前提,不涉及真实目标的攻击利用。 问题场景 某业务提供“远程图片导入”能力,用户提交一个图片 URL,后端下载图片并保存到对象存储。初始实现逻辑大致如下: POST /api/image/import Content-Type: application/json { "url": " }从功能角度看,这类接口很常见:校验 URL、下载文件、判断类型、保存。但在安全审计中,需要重点确认以下问题: 是否允许访问内网地址、本机地址、云元数据地址; 是否跟随 30x 跳转,跳转后是否重新校验目标地址; 是否仅依赖字符串黑名
T0xfce
背景 很多漏洞复现文章的问题是只强调“打通链路”,但对环境隔离、日志留存、影响面控制写得比较少。对于长期做 Web 安全、代码审计或红队验证的人来说,复现环境本身也需要安全设计,否则很容易把测试流量、样本服务或弱口令组件暴露到真实网络里。 这篇文章整理一个相对稳妥的内网 Web 漏洞复现环境搭建方式,并结合常见代码审计场景,说明如何从“现象复现”推进到“成因分析”和“修复验证”。内容偏方法论和实操,不涉及真实目标攻击,也不提供未授权利用步骤。 适用场景 本地复现历史漏洞、框架漏洞、CMS 漏洞,验证补丁有效性。 做代码审计时,需要搭建可控的调试环境观察数据流。 团队内部做漏洞分析沉淀,需要保留请求、日志、版本、配置。 对第三方组件进行安全评估,希望降低测试过程对办公网络的影响。 环境隔离设计 建议把复现环境和办公环境、个人主机环境做明确隔离。最简单的方式是使用虚拟机 NAT 网络或独立 Docker 网络,不要直接桥接到公司或家庭局域网。 一个较稳妥的结构如下: 宿主机:只作为管理端,不直接运行高风险样本服务。 测试网络:单独的虚拟网段,例如 172.20.0.0/24。 目标服务:运
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不只是“后端可以访问一个外部 URL”这么简单。真正难处理的地方在于:请求由服务端发起,网络边界、解析链路和权限上下文都发生了变化。攻击者提交的一个地址,可能被后端解析、重定向、代理、缓存,最终触达原本不应暴露的内网服务。 在实际代码审计中,SSRF 往往隐藏在图片抓取、Webhook 调试、URL 预览、远程文件导入、PDF 转换、代码仓库同步等功能里。本文以防守视角整理一套分析流程,重点覆盖漏洞定位、影响判断、修复设计和回归验证,示例均应在自有测试环境或经过授权的靶场中进行。 一、先明确问题边界 判断一个功能是否存在 SSRF,不能只看参数名是否叫 url。更可靠的做法是沿着数据流追踪三个环节: 输入源:URL 是否来自用户请求、数据库字段、消息队列或第三方回调。 请求 sink:是否进入 HTTP 客户端、图片解析器、代理组件、命令行下载器或其他网络访问接口。 响应处理:服务端是否把响应内容返回给用户、写入文件、解析 XML 或 JSON,或者只记录状态码。 其中,服务端是否回显响应内容决定了漏洞
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“让服务器发一个请求”这么简单。真正难点通常在于:请求入口分散在业务代码中,URL 经过多次解析和拼接,网络层又可能存在代理、DNS、IPv6 或云元数据服务等差异,最终导致看似严格的校验在某个环节失效。本文以代码审计和安全验证为主线,整理一套适用于授权测试与内部代码评审的分析方法。示例均以本地测试环境为前提,不涉及对第三方系统、内网资产或云环境的未授权探测。一、典型业务场景常见的 SSRF 入口包括以下功能:根据用户提交的 URL 抓取网页标题、生成预览或下载远程文件。Webhook、回调地址、第三方接口配置。图片、头像、文档的远程导入。PDF、Markdown、网页转码等服务端渲染功能。运维平台中的连通性检查、健康检查或代理请求。一个典型的危险代码可能如下:const target = req.body.url; const response = await fetch(target); const body = await response.text(); res.send(body);
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“发现一个可以访问 URL 的参数”这么简单。真正有价值的审计,需要回答三个问题:请求是否由服务端发起、攻击者能控制请求的哪些部分、服务端出站网络能够到达什么位置。 在实际项目中,SSRF 常出现在图片抓取、Webhook、在线预览、文件导入、PDF 转换、第三方接口代理等功能里。它的风险也取决于网络边界和权限配置:一个只能访问公网的请求代理,影响可能有限;如果能够触达内部管理接口、云环境元数据服务或未鉴权的运维组件,风险就会明显扩大。 一、审计场景与基本判断 常见入口包括以下几类: 根据 URL 下载图片、头像或远程附件。 将 Markdown、HTML 或文档转换为 PDF。 向用户指定的 Webhook 地址发送通知。 通过 URL 抓取网页标题、生成缩略图或进行内容预览。 后台提供的“连通性检测”“接口测试”“导入远程配置”等功能。 审计时不要只搜索参数名 url。更可靠的方法是从网络请求 API 反向追踪数据流,重点关注 Java 的 HttpClient、URLConnection、Ok
T0xfce
背景 Fastjson 相关漏洞已经不是新问题,但在真实环境里,它仍然经常以“历史依赖残留”“间接依赖引入”“测试接口未下线”的形式出现。很多团队做过一次升级后就以为结束了,实际排查时会发现:不同服务版本不一致、fat jar 里打进了旧包、某些后台任务仍在使用危险配置。 这篇文章整理一次偏防守视角的排查过程,重点放在如何确认风险、如何定位代码与依赖、如何做加固和验证。不会讨论可用于未授权利用的细节,只保留对代码审计和安全整改有价值的内容。 问题场景 某内网环境出现一条应用侧告警:某 Java 服务在处理 JSON 请求时出现异常类加载日志,日志中伴随少量反序列化相关异常。服务本身不是公网入口,但接收来自多个内部系统的消息,使用 Fastjson 解析业务字段。 初步信息如下: 应用为 Spring Boot 服务,打包方式为可执行 jar。 服务存在多个 JSON 解析入口,包括 HTTP 接口、消息队列消费者、定时任务读取配置。 依赖树中存在 fastjson,但版本来源不明确,可能由公共 SDK 间接引入。 部分历史代码使用了全局 ParserConfig 配置。 这类场景的核心
T0xfce
背景 Fastjson 的 AutoType 问题算是 Java Web 安全里被反复讨论的一类风险。很多团队对它的印象停留在“升级版本”或者“关闭 AutoType”,但在真实项目里,风险通常不是一个依赖版本号能完全说明的:历史兼容代码、第三方 SDK、网关透传、MQ 消息消费、缓存反序列化,都可能让 JSON 反序列化进入一个不容易被注意到的位置。 这篇文章主要整理一套偏防守和代码审计视角的方法:如何确认项目是否使用了 Fastjson,如何定位危险调用点,如何判断输入是否可控,以及如何给出相对稳妥的治理方案。文中不提供攻击利用流程,只讨论审计、验证和修复。 问题场景 我在做代码审计时,比较常见的场景有几类: 老项目直接使用 JSON.parseObject(String) 解析 HTTP 请求体。 为了兼容多态对象,业务代码开启过 AutoType 或使用了带类型信息的反序列化。 消息队列消费者把消息体当成可信输入,直接反序列化成业务对象。 缓存、配置中心、任务调度参数里保存了 JSON 字符串,读取后直接解析。 项目本身没有显式依赖 Fastjson,但某
T0xfce
背景 文件上传是 Web 系统里很常见的功能,头像、附件、工单截图、导入文件都离不开它。也正因为入口常见、实现差异大,它一直是代码审计和安全测试中的高频风险点。 不少团队在处理上传功能时,容易只做一层校验,比如检查扩展名、限制 Content-Type,或者前端限制文件类型。单独看这些措施都有意义,但如果缺少整体防护链路,仍然可能出现上传可执行脚本、路径穿越、存储型 XSS、解析差异、资源耗尽等问题。 这篇文章结合平时审计中遇到的典型场景,整理一套更稳妥的文件上传审计与防护思路。重点放在风险识别和安全加固,不涉及未授权攻击或恶意利用。 常见问题场景 在实际项目中,文件上传相关问题通常不是单点失误,而是多个细节叠加导致的。比较常见的场景包括: 只在前端限制文件类型,后端没有重新校验。 后端只判断扩展名,没有校验文件真实内容。 上传目录位于 Web 可访问路径下,且服务器可能解析脚本文件。 文件名直接使用用户传入值,存在覆盖、路径穿越或特殊字符问题。 允许上传 SVG、HTML、PDF 等可携带脚本或主动内容的文件。 缺少文件大小、数量、频率限制,可能导致存储或内存压力。 错误信息过于详细
T0xfce
背景 文件上传是 Web 系统里非常常见的功能,头像、附件、导入模板、工单截图都会用到。也正因为入口普遍,上传点长期是代码审计和渗透测试中的重点区域。实际项目里,很多上传漏洞并不是因为完全没有校验,而是校验位置、校验对象或存储策略存在缺口。 这篇文章整理一次偏通用的审计思路,重点讨论如何识别风险、如何复现验证以及如何做长期有效的修复。内容面向安全建设和代码审计,不涉及恶意利用或未授权攻击。 常见问题场景 在真实项目中,文件上传风险通常集中在以下几类场景: 只校验文件后缀,不校验文件内容。 前端限制上传类型,后端没有严格校验。 上传目录位于 Web 可访问路径下,且服务器可能解析动态脚本。 文件名使用用户输入,存在路径穿越或覆盖风险。 图片处理、压缩包解压、文档预览等二次处理链路存在安全问题。 上传后的访问权限与业务权限脱节,导致敏感文件被直接访问。 其中最常见的误区是“只要限制后缀为 jpg、png、pdf 就安全”。实际上,后缀只是用户可控字段之一,不能作为唯一信任依据。 审计入口与关注点 代码审计时,我一般会先从路由、Controller、服务层三个位置确认上传链路: 上传接口路径
T0xfce
背景Java Web 反序列化问题这几年一直没有消失,原因很现实:不少业务系统仍然依赖历史框架、缓存组件、消息中间件或远程调用协议,其中一部分组件会在不可信边界上处理序列化数据。单看漏洞公告往往只能知道“某组件存在反序列化风险”,但落到实际审计时,更关键的是确认数据入口、反序列化调用点、类加载环境以及可利用链是否真的成立。这篇文章整理一次相对通用的复现与审计流程,重点放在如何判断风险、如何搭建验证环境、如何做代码层面的定位和修复。文中示例均以本地靶场和无害验证为前提,不涉及对真实目标的攻击操作。问题场景假设某 Java Web 系统具备以下特征:使用 Spring MVC 或传统 Servlet 架构;项目中存在对象缓存、会话同步、RPC、消息消费等功能;依赖中包含 commons-collections、groovy、spring-core、fastjson、xstream、hessian 等序列化相关库;某些接口接收 Base64、二进制流、加密后字符串或自定义协议数据;历史代码中存在 ObjectInputStream、readObject、XMLDecoder、XStream、
T0xfce
背景水平越权是代码审计和渗透测试里最常见、也最容易被低估的问题之一。它通常不依赖复杂利用链,根因往往是接口只校验了登录态,却没有校验当前用户是否有权访问目标资源。这类问题在业务系统中很隐蔽:页面入口可能没有暴露敏感操作,但前端请求里存在资源 ID;后端接口看起来也有鉴权中间件,但实际只做了“是否登录”的判断。长期看,水平越权比单点漏洞更值得关注,因为它反映的是权限模型和数据归属校验的缺失。典型场景一个常见的业务接口如下:用户登录后可以查看自己的订单详情,前端请求类似:GET /api/order/detail?id=10240 Cookie: session=...如果后端只根据 id 查询订单并返回结果,而没有判断订单所属用户是否等于当前登录用户,就可能导致用户 A 访问用户 B 的订单详情。类似场景还包括:通过用户 ID 查看个人资料、收货地址、发票信息。通过项目 ID、团队 ID 访问项目配置、成员列表。通过文件 ID 下载附件、合同、报表。通过任务 ID 修改工单、审批状态、备注内容。问题根因从代码审计角度看,水平越权通常不是“没有鉴权”,而是“鉴权粒度不够”。比较常见的几类
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“某个参数能访问内网”这么简单。实际审计中,漏洞通常分散在 URL 解析、请求库配置、重定向处理、代理环境变量和权限边界几个环节。只修补一个黑名单,往往只能降低部分风险,无法形成可靠的防护闭环。 本文以一次典型的文件预览接口为背景,整理从现象确认、代码定位、风险评估到修复验证的完整思路。示例均以本地测试环境和无敏感数据服务为前提,重点放在审计方法和工程化修复上。 一、问题背景与业务场景 某系统提供了远程文件预览功能,前端提交一个 URL,后端通过 HTTP 客户端下载内容并转换为预览结果。接口的简化逻辑如下: public PreviewResult preview(String url) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .timeout(Duration.ofSeconds(10)) .GET() .build();
T0xfce
背景 文件上传是 Web 系统里很常见的功能,头像、附件、导入模板、富文本图片都会用到。也正因为链路长、组件多,它经常成为代码审计里的高频风险点。这里整理一套偏实战的审计思路,重点不是“如何打”,而是如何在研发和安全评审阶段把风险收敛掉。 文章基于常见 Java Web 项目场景:Spring Boot、Nginx 反向代理、对象存储或本地磁盘存储。不同项目实现会有差异,但审计方法基本通用。 典型问题场景 我在项目审计中比较常见的上传问题主要有几类: 只校验前端后缀,后端未做强校验。 服务端信任 Content-Type 或原始文件名。 上传目录位于 Web 可访问目录,且允许脚本类文件被解析。 文件名未重命名,存在覆盖、路径穿越或特殊字符问题。 图片处理、压缩包解压、文档解析等二次处理环节缺少安全边界。 临时文件、失败文件未清理,导致磁盘占满或敏感文件残留。 这些问题单独看可能不严重,但组合起来往往会变成高危链路。例如:后端仅校验扩展名,上传目录又在静态资源路径下,Nginx 或容器配置不当时,就可能扩大影响面。 审计入口:先看上传链路而不是单点代码 文件上传审计不要只盯一个 Con
T0xfce
背景 任意文件读取在 Java Web 系统里并不算新问题,但实际项目中仍然很常见。尤其是后台导出、附件下载、模板预览、日志查看这类功能,一旦路径拼接和权限控制做得粗糙,就容易把本地敏感文件暴露出去。 这篇文章整理一次内部测试中遇到的文件读取问题。内容会偏向漏洞成因、审计方法和修复建议,不涉及未授权利用或真实目标攻击。类似思路也适用于日常代码审计和安全测试自查。 问题场景 某 Java Web 系统提供了一个文件下载接口,用于下载用户上传的附件。接口大致逻辑是:前端传入文件名,后端拼接上传目录,然后通过流返回文件内容。 简化后的代码类似下面这样: @GetMapping("/download") public void download(@RequestParam String fileName, HttpServletResponse response) throws IOException { String baseDir = "/data/app/upload/"; File file = new File(baseDir + fileName); re
T0xfce
SSRF(服务端请求伪造)在实际项目中并不只表现为一个“URL 参数可控”。真正影响风险等级的,通常是请求发起位置、协议处理方式、重定向行为、DNS 解析时机,以及服务器本身能够访问哪些内部资源。本文以代码审计和防守验证为主线,整理一套适用于 Java Web 服务的 SSRF 分析方法。 一、问题背景:为什么 SSRF 容易被低估 很多业务都需要由服务端访问外部地址,例如抓取网页标题、下载远程图片、校验回调地址、生成预览内容或调用第三方接口。开发人员往往只做了字符串层面的限制,例如禁止出现 127.0.0.1,却没有考虑以下情况: 域名解析结果可能指向内网地址。 应用可能自动跟随 30x 重定向。 IPv6、十进制 IPv4、IPv4 映射地址等表示方式可能绕过简单黑名单。 URL 中的用户名、端口、片段和编码字符可能影响解析结果。 应用所在容器、云主机或办公网络本身拥有额外的内网访问权限。 因此,审计 SSRF 时不能只问“用户能否控制 URL”,还要继续确认“服务端最终连接到了哪里,以及连接后能做什么”。 二、审计入口:先定位服务端请求发起点 代码审计
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是简单的“让服务器替客户端发一个 HTTP 请求”。在实际项目中,它往往与 URL 解析差异、DNS 解析、重定向、代理配置以及云环境网络边界同时出现,导致漏洞影响被低估。本文以代码审计和授权测试为主线,整理一套适用于业务系统的 SSRF 分析方法,重点放在漏洞成因、低风险验证和工程化修复。 一、典型业务场景与风险边界 常见的 SSRF 入口包括:远程图片抓取、网页缩略图生成、PDF 或文档转换、Webhook 调试、第三方 URL 预览、RSS 导入、代码仓库地址导入,以及根据用户输入探测服务健康状态等功能。 这类功能通常具有一个共同特征:服务端接收用户提供的 URL,随后由后端发起网络请求并处理响应。如果请求目标和协议没有被严格限制,攻击者就可能诱导服务器访问不应暴露的网络资源。 访问应用所在网络中的管理接口、测试服务或内部 API。 借助服务器身份访问仅对内网开放的资源。 通过响应差异推断端口或服务是否存在。 在某些环境中读取不应由业务服务访问的配置接口。 需要特别强调的是,SSRF 的影响取决
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是简单的“后端帮用户发起一次 HTTP 请求”。在实际项目中,漏洞往往来自 URL 解析、域名解析、重定向处理和网络边界控制之间的不一致。单独修补某一个字符串校验规则,通常只能解决一部分问题。本文以代码审计和安全测试为主线,梳理 SSRF 的常见成因、分析方法、可复现的安全测试思路,以及适合落地到生产系统的防护方案。示例均以自有测试环境和无敏感数据的本地服务为前提。一、典型问题场景常见的 SSRF 入口包括图片抓取、远程文件导入、Webhook 调试、URL 预览、PDF 转换、代码仓库镜像和第三方 API 代理等功能。它们通常具有类似的业务逻辑:用户提交 URL ↓ 服务端解析参数 ↓ 服务端发起 HTTP 请求 ↓ 读取响应并返回或进一步处理如果服务端允许用户完全控制目标 URL,同时没有限制目标网络范围和请求协议,攻击者就可能让服务端访问本不应暴露的资源。风险不一定局限于云环境,也可能包括内网管理面板、服务发现接口、开发环境接口、宿主机
T0xfce
背景文件上传是 Web 系统里很常见的功能,但也是代码审计中比较容易被低估的风险点。很多团队在实现时会关注文件大小、后缀名和存储路径,却忽略了文件内容校验、路径拼接、静态资源映射、异常处理等细节。最终问题不一定表现为直接的远程代码执行,也可能是任意文件覆盖、敏感文件落盘、存储型 XSS、资源消耗或内部路径泄露。这篇文章整理一次 Spring Boot 项目中文件上传模块的排查思路。内容偏防守和审计视角,重点放在如何识别风险、验证问题边界以及给出可落地的修复方案,不涉及违法攻击或未授权利用。场景描述某业务系统提供头像上传和附件上传两个接口,后端使用 Spring Boot,上传文件存储在服务器本地目录,再通过静态资源映射对外访问。简化后的代码形态如下:@PostMapping(\"/upload\")\npublic String upload(@RequestParam(\"file\") MultipartFile file) throws IOException {\n String originalName = file.getOriginalFilename();\n
T0xfce
服务端请求伪造(SSRF)并不只是“接口能不能访问内网”的问题。实际审计中,漏洞往往出现在 URL 解析、DNS 解析、重定向处理和出站网络策略之间的不一致:应用认为目标是公网域名,底层网络却最终连接到了本机、内网服务或云环境管理接口。 这类问题的修复也不能依赖一个简单的字符串黑名单。本文以代码审计和安全验证为主线,整理 SSRF 的常见成因、审计路径、修复思路和测试重点。示例均应在本地靶场或授权测试环境中使用,不涉及访问真实内部系统。 一、典型业务场景 以下功能最容易引入 SSRF: 通过 URL 抓取图片、文档或网页内容; Webhook、回调地址和第三方通知配置; 远程导入、在线预览、网页截图和 PDF 转换; 根据用户提供的地址检查站点状态; 解析 RSS、OpenAPI 文档或远程配置文件。 一个常见的危险实现如下: String target = request.getParameter("url"); URL url = new URL(target); HttpURLConnection conn = (HttpURLConnection) url.openConnec
T0xfce
SSRF(服务端请求伪造)并不是只存在于“图片抓取”或“Webhook”功能中。凡是后端接收用户提供的 URL,并由服务器代为发起网络请求的场景,都可能引入类似风险。实际审计中,真正棘手的地方往往不是发现一个可以请求外部站点的参数,而是判断请求链路、网络边界、重定向行为和 DNS 解析是否形成了可被滥用的组合。 本文以一个常见的 URL 预览功能为例,整理一次偏防守视角的审计过程:如何定位请求入口,如何在不触碰敏感内部资源的前提下完成验证,如何分析绕过风险,以及修复后如何通过测试和日志确认问题已经闭环。 一、场景与问题边界 某业务提供“输入网页地址,生成标题、摘要和缩略图”的功能。前端提交一个 URL,后端通过 HTTP 客户端访问目标页面,再解析返回内容。 POST /api/preview Content-Type: application/json {"url":" 解析或代理配置不当导致的访问边界绕过。需要注意的是,SSRF 不等于“服务器能访问任意外网地址”。有些实现只允许固定协议,但仍然可能访问内网;有些实现禁止私网 IP,却没有处理重定向和 DNS 重新解析;还有些实现
T0xfce
背景文件上传是 Web 安全里非常常见的风险点,但实际排查时不能只盯着“能不能传 WebShell”。很多线上系统即使限制了脚本后缀,也可能因为类型识别、存储路径、访问权限、解析规则、异步处理链路等问题引入风险。本文整理一次偏通用的文件上传点排查思路,重点放在漏洞复现、影响确认和修复验证,避免把分析停留在简单的黑盒尝试上。场景假设是一个业务后台提供头像、附件或富文本图片上传功能,后端会返回文件访问 URL。目标不是提供攻击教程,而是说明安全测试和代码审计时应关注哪些细节,以及如何给研发团队输出可落地的修复建议。问题场景某上传接口大致流程如下:前端限制上传类型为 jpg、png、pdf。后端根据文件后缀做基础校验。文件保存到 Web 可访问目录。上传成功后返回完整访问 URL。Nginx 或应用容器负责静态资源访问。这种实现看起来很常见,但风险也比较集中。审计时需要确认几个核心问题:校验依据是否可靠:只看后缀、Content-Type,还是做了文件头和内容解析。文件是否落在可执行目录或可能被脚本引擎解析的目录。上传后的文件名、路径是否可控,是否存在覆盖、路径穿越等问题。是否有二次处理链路
T0xfce