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

    283
  • 篇意见

    0
  • 次查看

    2316

关于此博客

服务端请求伪造(SSRF)并不是一个只靠拦截几个关键词就能解决的问题。它通常出现在图片抓取、Webhook、文档预览、远程资源导入、健康检查等功能中,真正的风险取决于请求发起位置、目标地址解析方式、网络出口权限以及返回结果是否可被攻击者观察。在实际审计中,单纯搜索 curl、HttpClient 或 URL.openConnection 往往会产生大量噪声。更有效的方法是从数据流入手,确认用户可控数据是否最终进入了网络请求组件,再结合网络边界和业务权限判断影响范围。本文以代码审计、实验验证和事件复盘为主线,整理一套适合长期使用的 SSRF 分析方法。一、先明确 SSRF 的风险边界SSRF 的核心问题不是服务端发起了请求,而是外部输入影响了服务端请求的目标或请求内容。根据可见性和网络能力,大致可以分为以下几类:有回显 SSRF:服务端将响应状态、响应头或响应正文返回给调用者,通常更容易确认目标是否可达。盲 SSRF:调用者看不到响应内容,只能通过状态变化、延迟、日志或带外监测确认请求是否发出。受限 SSRF:只能访问固定协议、固定域名或固定端口,但仍可能造成内网探测或敏感接口调用。高权
T0xfce
背景 Java 反序列化问题这几年被反复讨论,但在真实业务里,它并不会因为框架升级就自然消失。很多告警不是来自新漏洞,而是来自历史依赖、灰度服务、内部工具、测试接口以及“临时兼容逻辑”。我在做代码审计和应急排查时,遇到过不少类似场景:安全设备提示存在反序列化风险,业务侧反馈“没有对外接口”“只是内部调用”,但继续追下去,往往能发现依赖版本、数据入口和对象转换逻辑之间存在比较隐蔽的风险链。 这篇文章不讨论可用于攻击的利用细节,重点放在如何判断一个 Java 服务是否真的存在反序列化风险,以及如何通过依赖治理、入口梳理和代码审计降低长期风险。 典型场景 一个比较常见的场景是:某个业务服务使用 JSON 序列化库处理外部请求,同时项目中保留了较老版本的依赖。安全扫描或流量检测发现请求体中存在异常类型字段、类名片段或可疑结构,于是产生告警。 业务排查时经常会遇到几个问题: 项目依赖树里存在多个版本的同一 JSON 组件,实际运行版本不清晰。 接口层看起来只接收普通 DTO,但底层工具类存在通用对象反序列化方法。 部分内部接口缺少认证或只依赖网段隔离。 历史兼容逻辑中开启了高风险特性,例如自动类
T0xfce
背景 文件上传是 Web 安全里非常常见的一类风险点,但很多项目里的问题并不只是“没校验后缀”这么简单。实际审计中更常见的是:业务层做了一部分限制,框架层又做了一部分处理,最后在存储、访问、解析链路上出现偏差,导致风险被放大。 这篇文章整理一个偏通用的分析思路:如何从代码审计角度定位上传功能风险,如何在本地环境做安全复现,以及如何给出可落地的修复建议。内容偏防御和验证,不涉及对第三方系统的攻击操作。 典型场景 假设一个业务系统提供头像、附件、富文本图片等上传能力。后端大致流程如下: 前端限制文件类型,例如只允许 jpg、png、pdf。 后端接收 multipart/form-data 请求。 后端根据文件后缀或 Content-Type 做校验。 文件保存到本地目录或对象存储。 返回文件访问 URL,供前端展示或下载。 看起来流程完整,但真实风险往往出现在以下几个点: 只依赖前端校验,后端未做强校验。 只检查文件名后缀,未检查文件真实类型。 上传目录位于 Web 可执行路径下。 文件名由用户可控,存在路径穿越或覆盖风险。 下载接口缺少鉴权,导致越权访问附件。 图片处理库、解压缩逻辑、
T0xfce
背景 水平越权是 Web 系统里非常常见、也很容易被低估的一类问题。它通常不依赖复杂利用链,而是出现在业务接口对“资源归属关系”的校验缺失上。实际排查中,很多系统已经做了登录态校验、角色校验,甚至网关层也有鉴权,但只要具体业务对象没有绑定当前用户或租户,就可能出现用户 A 访问用户 B 数据的情况。 这篇文章整理的是一次接口越权排查过程中沉淀下来的方法。内容偏代码审计和修复思路,不涉及真实目标攻击,也不会给出针对第三方系统的利用流程。适合用于内部系统自查、上线前安全评审和漏洞复盘。 问题场景 一个典型的业务接口如下:用户登录后,可以查看自己的订单详情。前端请求大致是: GET /api/order/detail?id=10086后端接口做了登录校验,确认请求里存在有效 token,然后根据订单 ID 查询订单详情并返回。 表面看流程没有问题,但安全问题往往出在这里:接口只校验了“你是否登录”,没有校验“这个订单是否属于你”。如果订单 ID 是可枚举、可猜测或者来自其他接口泄露,就可能造成水平越权。 代码层面的典型缺陷 以下是比较常见的缺陷写法,示例仅用于说明问题: public Ord
T0xfce
背景 文件上传是 Web 系统里非常常见的功能:头像、附件、工单截图、Excel 导入等都会用到。也正因为常见,很多项目在实现时容易把安全校验做得比较“表面”:只看后缀、只看 Content-Type,或者直接把文件放到 Web 可访问目录下。 这篇文章整理一次 Java Web 项目中文件上传风险的审计思路,重点放在如何发现问题、如何验证风险、如何修复。内容偏防守和代码审计,不涉及真实站点攻击,也不会给出恶意利用引导。 问题场景 项目里有一个典型上传接口,用于上传用户附件。业务代码大致逻辑如下: @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String originalName = file.getOriginalFilename(); String suffix = originalName.substring(originalName.lastIndexOf(".")); if (!A
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“让服务器代替用户发一次请求”这么简单。真正危险的地方在于,服务端所在网络通常拥有比普通用户更高的访问权限,可能能够连接内部管理端口、云平台元数据服务、仅监听本机的调试接口,甚至访问带有内部信任关系的业务系统。 在实际审计中,SSRF 往往藏在图片抓取、Webhook、文件导入、URL 预览、PDF 生成、在线检测等功能里。单纯依靠关键字搜索容易漏报,也容易把正常的 HTTP 客户端误判为漏洞。比较可靠的方法,是从数据流入手,结合 URL 解析、DNS 解析、重定向处理和网络出口策略进行完整分析。 一、问题场景与风险边界 典型场景是后端接收一个由用户控制的 URL,然后在服务器端发起请求。例如: String target = request.getParameter("url"); String body = restTemplate.getForObject(target, String.class); return ResponseEntity.ok(body);这段代码的问题不在于使用了哪一
T0xfce
背景 文件上传一直是 Web 安全里比较常见但也容易被低估的一类风险。很多团队在设计上传接口时,会关注文件大小、后缀白名单、登录态校验,但容易忽略存储路径、访问路径、文件内容校验以及后续处理链路。一旦这些环节组合不当,就可能从普通的文件上传问题扩大成敏感文件覆盖、存储型 XSS、任意文件落盘,甚至影响后端解析逻辑。 这篇文章整理一次比较典型的 Spring Boot 文件上传风险排查过程。内容以代码审计和本地复现为主,重点放在如何发现问题、如何验证风险边界、以及如何给出可落地的修复建议。文中示例均为本地测试环境,不涉及真实目标攻击。 问题场景 某业务系统提供头像、附件、富文本图片等上传能力,后端使用 Spring Boot 实现,上传后的文件会保存到服务器本地目录,并通过静态资源映射对外访问。简化后的代码如下: @PostMapping("/upload") public Map<String, Object> upload(@RequestParam("file") MultipartFile file) throws IOException { String o
T0xfce
背景 前段时间协助排查了一起内网 Web 资产异常访问事件。现象并不复杂:业务侧反馈某台后台系统偶发 500,安全设备上也出现了多条高危 Web 攻击告警。但初看告警内容比较杂,既有路径探测,也有疑似命令注入、文件读取特征,很难直接判断是真实入侵还是扫描器噪声。 这类场景在企业内网里很常见:资产年代久、接口文档缺失、日志格式不统一,单靠设备告警容易误判。本文整理一次比较完整的排查思路,重点放在日志关联、漏洞入口定位和后续加固,不涉及攻击利用细节。 问题场景 目标系统是一套 Java Web 后台,部署在 Nginx 后面,应用日志由 Logback 输出,Nginx access log 保留 30 天。异常时间段集中在凌晨 1 点到 3 点,主要表现为: 同一来源 IP 在短时间内访问大量非常规路径。 少量接口返回 500,集中在文件预览、报表导出相关功能。 应用日志中出现多次异常堆栈,涉及路径拼接和外部资源读取。 安全设备记录到疑似目录穿越、SSRF、命令执行特征,但未给出完整上下文。 排查目标不是简单确认“有没有攻击”,而是回答三个问题:入口在哪里、是否触达敏感资源、后续如何修复
T0xfce
背景 文件上传是 Web 安全里很常见的风险点,但实际排查时不能只盯着“能不能上传 WebShell”。在真实业务里,上传链路通常会经过前端校验、后端接口、对象存储、CDN、异步处理、图片压缩、文件预览等多个环节,任何一个环节处理不当,都可能变成越权访问、存储型 XSS、服务端资源消耗、敏感文件泄露,甚至远程代码执行的入口。 这篇文章整理一次常见上传模块的安全排查思路,重点放在漏洞复现、代码审计和修复验证。内容不提供恶意利用引导,只讨论如何在授权环境中识别风险、定位问题和加固实现。 问题场景 某业务系统提供附件上传能力,用于上传工单图片、PDF 报告和少量办公文档。接口大致形态如下: POST /api/file/upload HTTP/1.1 Content-Type: multipart/form-data [email protected] bizType=ticket上传成功后接口返回文件访问地址: { "code": 0, "url": " }表面看是普通上传功能,但排查时发现几个值得关注的点: 后端依赖前端限制文件类型,服务端只做了很弱的扩展名判断。 文件访问路径可预测
T0xfce
Java 反序列化问题并不新,但在日常代码审计和应急排查里依然很常见。它的麻烦点在于:漏洞往往不只来自业务代码本身,也可能来自历史依赖、框架默认行为、缓存组件、消息队列、RPC 协议或运维临时开放的管理接口。 这篇文章不讨论攻击利用链的构造,也不提供可直接用于入侵的操作步骤。主要整理一次偏防守视角的排查方法:如何从代码、依赖、入口、运行时配置几个层面识别反序列化风险,并给出相对可落地的加固建议。 一、背景:为什么反序列化问题容易被漏掉 很多团队对反序列化的理解停留在 ObjectInputStream.readObject() 这种显式调用上,但实际项目里常见入口更分散: 业务代码直接使用 Java 原生序列化做对象存储或网络传输。 Redis、MQ、RPC、缓存框架中间层自动完成对象序列化与反序列化。 历史接口为了兼容老客户端,保留了二进制对象传输能力。 第三方组件引入了存在高危反序列化利用链的依赖版本。 管理端点、调试接口或内部服务暴露到非预期网络范围。 反序列化风险的核心不是“使用了序列化”本身,而是“不可信输入进入了具备危险类型解析能力的反序列化流程”。审计时需要围绕这个核心判
T0xfce
服务端请求伪造(SSRF)并不只是“让服务器代替用户发起一次请求”。在真实项目中,它往往与 URL 解析、DNS 解析、重定向、代理配置和内网服务信任边界同时相关。单纯增加一个字符串黑名单,通常只能挡住最直观的测试用例,无法形成稳定的安全边界。 本文以代码审计和本地实验环境为主线,介绍如何识别 SSRF 的数据流、构造安全复现、定位绕过原因,并给出更适合生产环境的修复思路。文中的请求目标均限定在本机或专用测试网段,不涉及对第三方系统的探测。 一、问题场景与审计入口 常见的 SSRF 入口包括:根据 URL 抓取远程图片、生成网页快照、导入远程文件、Webhook 测试、PDF 转换、云资源元数据代理以及服务器端代理接口。审计时不应只搜索“ssrf”关键词,而应从外部可控数据进入网络请求库的位置开始追踪。 定位 HTTP 客户端调用,例如 Java 的 URLConnection、HttpClient,Python 的 requests、urllib,Go 的 net/http。 向上追踪请求参数来源,确认是否来自 HTTP 参数、JSON 字段、文件内容或任务队列。 向下
T0xfce
背景 越权漏洞在 Web 安全里并不新鲜,但在实际代码审计和业务测试中,它仍然是最容易被遗漏的一类问题。原因也很现实:权限判断往往散落在 Controller、Service、DAO,甚至前端路由里;业务迭代频繁后,原本清晰的权限模型会被临时需求逐渐冲散。 这篇文章整理一次典型的接口越权问题复盘,重点放在如何定位、如何验证、如何修复,以及后续代码审计时可以沉淀哪些检查方法。内容不涉及真实目标系统,也不提供攻击他人系统的操作引导,适合作为内部安全评审或代码审计 checklist 参考。 问题场景 某业务系统中有一个资源管理功能,用户可以查看、编辑自己所属组织下的资源。接口设计大致如下: GET /api/resource/detail?id=1001 POST /api/resource/update 前端页面会根据当前登录用户展示资源列表,用户点击某条记录后,前端把资源 id 带到详情接口。表面看起来没有问题,因为普通用户在页面上只能看到自己有权限的资源。 但问题出在后端接口只根据传入的 id 查询资源详情,没有校验该资源是否属于当前用户可访问范围。攻击者如果知道或猜到其他资源 i
T0xfce
背景 文件上传是 Web 系统里很常见的功能,头像、附件、工单截图、导入文件都离不开它。也正因为入口多、业务差异大,上传点经常成为安全问题的高发位置。 在实际代码审计中,文件上传漏洞不一定表现为直接上传 WebShell。更多时候,它会和路径穿越、解析差异、对象存储权限、预览服务、异步处理队列等问题组合出现。单看一个上传接口可能没什么问题,但放到完整业务链路里就能发现风险。 这篇文章整理一次比较典型的审计思路,重点放在如何发现问题、如何判断风险、如何做工程化修复。内容只讨论防护和验证思路,不涉及恶意利用操作。 常见场景 一个常见的上传流程大致如下: 前端限制文件类型和大小; 后端接收 multipart 文件; 根据原始文件名生成存储路径; 保存到本地目录或对象存储; 写入数据库记录; 提供下载、预览或回显 URL。 这里面每一步都有可能出现问题。审计时不要只看“是否限制后缀”,而要关注完整生命周期:文件从哪里来、被怎么命名、保存到哪里、谁可以访问、后续会不会被解析或处理。 问题一:只依赖前端限制 很多系统会在前端写 accept 属性,或者用 JavaScript 判断文件后缀: &
T0xfce
背景 SSRF(Server-Side Request Forgery)在实际业务里经常不是一个单点漏洞,而是一类“服务端可控请求”能力被滥用后的结果。常见入口包括图片抓取、URL 预览、Webhook 回调、文件导入、第三方接口代理、PDF 生成等。很多团队在修复时只做了简单黑名单,比如拦截 127.0.0.1 或 localhost,但在真实环境里,这类修复往往不够稳定。 这篇文章整理一次内部排查 SSRF 风险时比较通用的方法,重点放在代码审计、验证思路和防护落地。内容仅用于授权测试和防御建设,不涉及未授权攻击操作。 问题场景 某业务提供“根据 URL 抓取远程图片并上传到对象存储”的功能。用户提交一个图片地址,后端下载文件,校验类型后保存。入口看起来比较正常,但它具备三个典型 SSRF 条件: 用户可以控制请求目标 URL。 服务端会主动发起网络请求。 请求发生在内网环境,服务端网络权限高于普通用户。 简化后的代码逻辑大致如下: String url = request.getParameter("url"); HttpURLConnection conn = (HttpURL
T0xfce
服务端请求伪造(SSRF)是代码审计中比较常见的一类问题。它通常不是“某一行代码直接执行了命令”,而是应用把用户可控的 URL 交给了 HTTP 客户端,导致服务端替用户访问了原本不应暴露的网络资源。 这类漏洞的风险取决于应用所在网络环境、身份权限和出站访问策略。公网应用可能因此访问内网管理接口,云环境中还可能接触实例元数据服务。本文以安全测试和修复为目标,整理 SSRF 的审计思路、实验室验证方法以及工程上的防护要点。测试应仅限于授权环境,不要扫描或访问不属于自己的内网资源。 一、先理解 SSRF 的实际攻击面 典型业务场景包括:头像或图片远程下载、网页截图、PDF 转换、Webhook 回调、URL 预览、导入远程配置、Git 仓库同步,以及通过第三方服务抓取链接。这些功能本身并不一定存在漏洞,关键在于服务端是否对目标地址、协议、解析结果和跳转行为进行了严格限制。 一个常见的危险写法如下: import requests url = request.args.get("url") response = requests.get(url, timeout=5) return res
T0xfce
服务端请求伪造(SSRF)并不只是一条危险的 URL 规则。它通常出现在“后端代替用户访问资源”的功能中,例如图片抓取、Webhook 回调、文档解析、URL 预览和远程健康检查。真正困难的地方在于:输入校验、URL 解析、DNS 解析、连接建立以及重定向处理,往往由不同组件完成,开发者看到的字符串和网络库最终访问的地址可能并不相同。 本文以代码审计和修复为主线,整理一套适用于日常项目的 SSRF 分析方法。示例只针对本地测试环境和自建模拟服务,不涉及访问真实内网资源。 一、先判断功能是否具备 SSRF 条件 审计时不要只搜索 http 或 URL。更有效的做法是先找出所有“服务端发起网络请求”的调用点,再向上追踪参数来源。 Java 常见调用点:HttpClient、URLConnection、OkHttp、Apache HttpClient。 Python 常见调用点:requests、urllib、httpx。 Go 常见调用点:http.Get、http.Client.Do、自定义 Transport。 间接调用点:图片处理器、PDF 转换器、Webhook 投递器、云存储导入
T0xfce
背景Java Web 项目在企业内部系统、后台管理平台、业务中台里非常常见。相比直接跑扫描器,代码审计更适合发现一些“业务上下文相关”的问题,比如权限校验遗漏、对象越权、文件处理不当、危险反序列化入口等。这篇文章整理的是一套偏实战的审计流程,适合拿到一个 Spring MVC / Spring Boot 项目后做安全评估。内容侧重防御视角和漏洞定位方法,不涉及真实目标攻击,也不提供非法利用链操作。审计目标与场景假设我们拿到的是一个典型 Java Web 项目,包含如下结构:src/main/java ├── controller ├── service ├── mapper / dao ├── config ├── filter └── util src/main/resources ├── application.yml ├── mapper/*.xml └── static / templates主要审计目标通常包括:未授权访问:接口缺少鉴权或路径被错误放行。越权访问:用户可访问或修改不属于自己的数据。SQL 注入:动态 SQL 拼接或 MyB
T0xfce
背景文件上传是 Web 系统里很常见的功能,头像、附件、导入模板、工单截图都会用到。问题在于,这类功能经常横跨前端校验、后端解析、对象存储、静态资源访问、权限控制等多个环节,只要其中一个环节设计不严谨,就可能变成高风险入口。这篇文章基于一次常见业务系统的代码审计经验整理,重点讨论如何识别文件上传风险、如何验证风险边界,以及如何给出可落地的修复方案。内容只关注防护与审计方法,不涉及非法攻击和控制行为。问题场景某业务系统提供了附件上传接口,用户可以在工单中上传图片、PDF、压缩包等文件。审计时发现开发侧已经做了一些限制,例如前端限制扩展名、后端判断 Content-Type、上传后重命名文件。但进一步检查后发现几个典型问题:后端扩展名判断依赖原始文件名,且处理逻辑不统一。Content-Type 直接信任请求头,缺少文件内容检测。上传目录位于 Web 可访问目录下,且与应用同域。部分历史接口绕过了新上传组件,未纳入统一校验。对象存储桶策略较宽,部分文件可被匿名访问。这些问题单独看不一定都能造成严重后果,但组合起来就会形成较大的攻击面。代码审计时不要只看某一个上传接口是否做了判断,而要看完整
T0xfce
这篇文章整理的是一次内部资产管理系统代码审计中遇到的 SSRF 风险排查过程。场景比较常见:系统提供 URL 探测、截图、Webhook 回调、文件远程导入等功能,本意是提升运维效率,但如果边界处理不严,很容易变成访问内部资源的跳板。 本文只讨论代码审计、风险定位和修复思路,示例均基于本地环境和伪代码,不涉及对真实目标的攻击操作。 背景 被审计系统是一个内网资产平台,主要功能包括: 录入资产 URL 后自动探测标题、状态码、证书信息; 支持从远程 URL 导入资产清单; 支持配置 Webhook,将扫描结果推送到第三方服务; 后台有部分运维接口会请求指定地址做连通性检查。 这类系统有一个共同点:服务端会主动发起 HTTP 请求。只要请求地址可被用户影响,就需要重点关注 SSRF。 问题场景 代码中有一个远程导入功能,用户提交一个 URL,后端下载 CSV 内容并解析资产信息。简化后的逻辑如下: public List<Asset> importFromUrl(String url) { String body = httpClient.get(url); r
T0xfce
背景服务端请求伪造(SSRF)经常出现在图片抓取、Webhook、文档转换、远程资源预览和第三方接口代理等功能中。审计时,只要看到服务端接收 URL 并发起请求,很多报告会直接标记为 SSRF。但真正有价值的分析不能停留在规则命中,而应回答三个问题:用户输入是否真正到达网络请求点;请求是否能够访问原本不应暴露的网络区域;现有防护是否会被 URL 解析差异、重定向或 DNS 变化绕过。下面以一个典型的远程资源预览功能为例,整理一套偏实战的审计方法。示例只针对本地靶场或授权测试环境,重点放在风险确认、边界识别和修复验证,不讨论对真实系统的探测或利用。一、先明确审计场景假设接口接收一个资源地址,后端下载内容后返回文件信息:POST /api/preview Content-Type: application/json {&quot;url&quot;:&quot; target = request.getParameter(&quot;url&quot;); HttpResponse response = httpClient.get(targe
T0xfce
背景 文件上传一直是 Java Web 项目里比较容易被低估的风险点。很多系统在业务上确实需要上传头像、附件、报表、压缩包,但实现时如果只校验前端后缀,或者把文件直接落到 Web 可访问目录,很容易演变成任意文件上传、存储型 XSS、路径穿越,严重时甚至会造成远程代码执行。 这篇文章整理的是一次偏防守视角的复盘,重点放在代码审计、风险确认和加固验证。文中不提供可用于非法利用的攻击载荷,也不讨论拿权限、控制主机之类的操作,只关注如何识别问题、复现安全边界以及修正实现。 问题场景 目标系统是一个常见的 Spring Boot 后台,存在多个上传入口,包括用户头像、工单附件、富文本图片上传。代码风格比较典型:Controller 接收 MultipartFile,服务层生成文件名,然后保存到本地磁盘,最后返回 URL 给前端展示。 初看业务逻辑没有明显问题,但审计时发现几个危险信号: 后缀校验只依赖原始文件名,且没有统一封装。 Content-Type 被直接信任,用来决定文件类型。 上传目录位于静态资源目录下,可被外部直接访问。 文件名拼接使用字符串处理,没有做路径规范化校验。 部分接口没
T0xfce
背景 最近在做一轮内网资产梳理时,遇到一个比较典型的问题:某业务系统本身没有直接暴露到公网,但它依赖的管理后台、调试接口、监控页面散落在多个网段里,访问控制策略不一致。安全设备侧先是报了几条“未授权访问”告警,业务同学一开始认为只是误报,后续排查发现确实存在一批接口缺少鉴权或只依赖网络边界。 这类问题在内网很常见:系统上线多年,服务拆分多次,组件升级不完整,历史管理端口没有下线。单点漏洞未必严重,但一旦和弱口令、默认配置、日志泄露、SSRF 等问题组合起来,风险会被放大。 问题场景 这次告警涉及三类资产: 业务管理后台:部分接口只校验前端页面登录状态,后端接口缺少统一鉴权。 中间件控制台:历史部署遗留,访问路径不明显,但端口对办公网开放。 监控与调试接口:如健康检查、指标、线程栈、配置查看等接口,缺少访问限制。 表面看都是“内网可访问”,但实际风险并不低。尤其是微服务体系里,一个低权限入口可能暴露服务名、配置项、内部地址、队列 Topic、数据库连接标识等信息,为后续横向风险评估提供线索。 技术分析 未授权访问通常不是单一成因,常见问题可以分为几类。 1. 鉴权逻辑分散 很多系统在早期
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)经常被简单理解为“用户可以控制一个 URL”。但在真实项目中,风险是否成立,取决于请求发起位置、网络可达范围、协议处理方式、重定向策略以及响应数据是否会回传给用户。因此,SSRF 审计不能只搜索 requests.get()、curl_exec() 或类似调用,更应该沿着“输入如何进入请求组件、请求能访问什么、结果如何被使用”这条链路分析。本文以代码审计和修复验证为主线,整理一套适用于 Web 应用、内部接口和微服务的排查方法。一、典型场景与风险边界常见业务功能包括:根据 URL 抓取网页标题、生成摘要或下载远程文件。Webhook、回调地址、图片代理、RSS 导入等服务端主动访问功能。云平台中的元数据查询、健康检查和服务连通性测试。后台管理系统中的远程配置导入、在线预览和 URL 校验。如果服务端能够访问用户无法直接访问的网段,且请求结果会回显、转发或影响后续业务,就可能形成 SSRF。影响通常分为三类:网络访问:服务端成为访问内部服务的跳板,可能接触管理接口、调试端口或内部 API。信息泄露:响应正文
T0xfce
背景 文件上传功能在业务系统里很常见,比如头像、附件、工单材料、富文本图片等。它看起来只是一个普通的输入点,但在真实审计中,上传点往往会牵出一整条风险链:类型校验不严、存储路径可控、文件可被直接访问、解析规则不一致、对象存储权限配置错误等。 这篇文章主要从代码审计和安全测试的角度,整理文件上传风险的排查思路。重点放在如何识别问题、如何验证风险边界、如何加固,不提供针对真实目标的攻击操作,也不讨论绕过授权或恶意控制场景。 典型问题场景 我在审计 Web 项目时,比较常见的上传问题可以归纳为以下几类: 仅依赖前端校验文件类型,后端没有二次校验。 后端只检查文件后缀,没有检查 MIME、文件头或内容特征。 上传目录位于 Web 可访问目录,并且服务器会对其中某些扩展名进行解析。 文件名直接使用用户输入,导致路径穿越、覆盖已有文件或特殊字符问题。 上传后返回可预测路径,且缺少访问控制。 对象存储桶权限过宽,导致文件被公开读取或枚举。 图片处理、压缩、转码组件存在历史漏洞或处理异常。 这些问题单独看可能只是中低风险,但如果和错误的服务器配置、弱访问控制、敏感信息泄露组合在一起,就可能变成高危入口
T0xfce
背景不少漏洞分析文章会直接给出利用过程,但对日常安全建设来说,更有长期价值的是把一次漏洞复现转化成可复用的审计方法。本文以一个典型的 Web 文件处理类问题为例,整理从环境搭建、风险定位、代码审计、补丁验证到检测加固的完整闭环。这里讨论的是受控测试环境中的漏洞复现和代码审计思路,不涉及真实目标攻击、未授权利用或持久化控制。类似方法可以用于企业内部系统自查、开源组件评估以及安全培训靶场。问题场景假设一个后台系统提供附件上传能力,业务设计上允许用户上传图片、PDF、压缩包等文件。开发侧通常会做一些基础限制,例如校验扩展名、限制 MIME 类型、控制文件大小。但在实际审计中,文件上传往往不是单点问题,而是由多个环节共同决定风险:上传入口是否存在鉴权与权限控制。文件类型校验是在前端、网关还是后端完成。服务端是否信任用户传入的文件名、路径或 Content-Type。上传后的文件是否落在 Web 可访问目录。文件是否会被后续解析、解压、转码或预览。是否存在覆盖已有文件、路径穿越、压缩包解压逃逸等衍生问题。因此,审计时不要只盯着“能不能上传某个扩展名”,更应该看完整的数据流。技术分析一个相对常见的
T0xfce