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

    283
  • 篇意见

    0
  • 次查看

    2318

关于此博客

背景 很多漏洞分析文章容易停留在“扫到一个点、打出一个结果”的层面,但在真实项目里,安全问题往往不是单点出现,而是由路由设计、参数处理、权限判断、日志审计和部署习惯共同造成的。本文整理一套相对通用的 Web 漏洞复现与代码审计方法,重点放在如何确认问题、降低误报、定位代码根因,以及给出可落地的修复建议。 为避免产生不必要的攻击引导,文中的示例均以本地测试环境、脱敏代码片段和防御视角展开,不涉及未授权系统、真实目标利用、数据窃取或持久化控制。 场景说明 假设有一个常见的后台管理系统,技术栈为 Nginx + Java Spring Boot + MyBatis,前端通过接口调用后端服务。系统中存在文件查询、报表导出、用户管理等模块。安全测试中发现几个可疑点: 部分接口只依赖前端菜单控制显示,后端权限校验不明显。 文件下载接口接收路径或文件名参数。 报表查询接口存在动态 SQL 拼接。 错误信息在测试环境中返回较完整的异常栈。 这些点不一定都能形成漏洞,但值得进入审计流程。比较稳妥的做法是先建立“证据链”:请求入口、参数流向、关键判断、危险函数、可控边界、修复建议。 问题一:后端权限校验缺
T0xfce
背景 最近整理了一次比较典型的 WebShell 告警处置过程。场景并不复杂:某业务系统的运行目录中出现异常脚本文件,安全设备给出了疑似 WebShell 告警。后续排查发现,入口点并不是常见的弱口令后台,而是一个文件上传接口在扩展名校验、存储路径和访问控制上都存在缺陷。 这类问题在企业内网系统里很常见:业务代码年代较久,上传功能为了兼容各种文件类型逐步放宽限制,最后变成“能上传、能访问、能解析”的危险组合。本文不讨论攻击利用细节,重点放在应急排查、代码审计和修复加固上。 问题场景 告警信息中能看到几个关键点: 异常文件出现在 Web 根目录下的 upload 目录; 文件后缀看起来像图片,但内容中存在脚本特征; 访问日志中存在对该文件的直接 HTTP 请求; 同一来源 IP 在短时间内多次访问上传接口和异常文件。 从防守角度看,这已经足够判断需要进入应急流程:先止血,再保全证据,最后定位根因并修复。 第一步:现场保护与初步确认 很多人在处理 WebShell 告警时会第一时间删除文件,这个习惯不太好。更稳妥的做法是先隔离访问能力,再保留样本和日志。比如临时在 Web 服务器层面禁止访
T0xfce
背景 SSRF 这类问题在很多业务里并不显眼:一个图片抓取、Webhook 回调、URL 预览、文档导入功能,都可能引入服务端发起请求的能力。真正麻烦的是,它往往不是单点 bug,而是 URL 解析、网络边界、重定向处理、云环境元数据接口、日志可观测性共同作用后的结果。 这篇文章整理的是我在代码审计和风险复盘中比较常见的一套处理思路,重点放在如何识别风险、如何验证边界、以及如何把修复做稳定。内容不涉及未授权攻击操作,适合用于自查、审计和安全加固。 典型场景 业务侧常见的需求是:用户提交一个 URL,服务端去拉取内容并进行后续处理,例如生成缩略图、解析 Open Graph 信息、拉取远程配置、回调第三方地址等。 一个简化后的逻辑通常类似这样: String url = request.getParameter('url'); byte[] body = httpClient.get(url); return parse(body);如果这里没有做严格约束,服务端就变成了一个“代请求者”。风险不一定只在访问内网地址,也可能出现在以下几个位置: 通过重定向访问到非预期地址。 URL 解析差
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“让服务器代替攻击者发一次 HTTP 请求”这么简单。真正需要关注的是:应用允许用户影响哪些请求参数、服务端具有什么网络访问能力、请求链路是否会发生重定向,以及最终响应是否会回传给用户。 在实际审计中,SSRF 经常隐藏在图片抓取、Webhook、文档转换、URL 预览、远程文件导入和健康检查等正常功能里。很多修复方案只增加一个内网 IP 黑名单,短期内能够降低风险,但在 DNS 解析、IPv6、重定向和代理配置等环节仍可能留下缺口。 一、典型业务场景 下面是一段常见的“根据 URL 下载远程资源”的伪代码: String url = request.getParameter("url"); byte[] data = httpClient.get(url); return Response.ok(data).build();这段代码的问题不在于使用了某个特定 HTTP 客户端,而在于用户输入直接进入了出站请求。只要应用服务器能够访问某个目标地址,攻击者就可能借助该功能探测网络边界、访问内部服务,甚
T0xfce
背景 反序列化问题在 Java Web 项目里并不新,但它的麻烦点在于:风险不一定出现在业务代码最显眼的位置,更多时候藏在 RPC 框架、缓存客户端、消息队列、历史兼容接口、第三方组件默认配置里。很多团队做漏洞应急时,会先查某个 CVE 是否命中,但实际代码审计中更值得关注的是:项目里是否存在不可信数据进入反序列化流程,以及反序列化过程中是否允许加载危险类型。 这篇文章整理的是我在审计 Java Web 项目时常用的一套排查思路,重点放在识别、验证和修复,不涉及攻击利用链构造,也不提供可直接用于攻击的操作步骤。适合用于内部安全自查、代码审计复盘和安全基线建设。 典型场景 一个比较常见的场景是:业务系统已经运行多年,期间接入过缓存、RPC、定时任务、消息消费、老接口兼容等模块。某次依赖升级或漏洞通告后,安全团队要求确认是否存在反序列化风险。开发同学通常会先搜索 ObjectInputStream,但结果往往不完整,因为很多风险点不是直接写在业务层,而是通过框架封装后间接触发。 我一般会把排查范围分成四类: 原生 Java 反序列化:ObjectInputStream、readObject
T0xfce
背景 任意文件读取在 Java Web 项目里并不少见,尤其是历史系统、内部管理后台、文件预览接口、日志下载接口中比较容易出现。它的危害取决于运行权限和部署环境:轻则读取应用配置、日志文件,重则泄露数据库账号、密钥、源码包,进一步扩大影响面。 这类问题看起来简单,常见成因也就是路径拼接不当、过滤不完整、下载接口缺少权限控制。但在真实代码审计中,漏洞往往不会以一个明显的 FileInputStream(request.getParameter()) 形式出现,而是混在业务封装、工具类、模板渲染、对象存储兼容逻辑里。本文整理一次比较典型的 Java Web 任意文件读取审计过程,重点放在定位方法、漏洞成因、验证边界和修复建议。 问题场景 某内部系统提供了附件下载能力,业务上允许用户下载自己上传的文档。接口大致功能如下: 前端传入文件标识或文件路径; 后端根据参数拼接本地存储目录; 读取文件并写入响应流; 下载行为仅做了登录校验,没有做文件归属校验。 在代码审计时,发现该系统存在多个类似接口,其中一处接口为了兼容历史数据,支持直接传入相对路径。这个兼容逻辑最终导致了目录穿越问题。 漏洞代码简
T0xfce
背景 最近在做一轮 Java Web 项目代码审计时,遇到一个比较典型但容易被低估的问题:业务为了支持动态规则,把用户可控字段拼接进 Spring Expression Language(SpEL)表达式中执行。单看代码像是“灵活配置”,但如果边界控制不严,就会从普通规则计算演变成表达式注入风险。 这类问题在实际项目里并不少见,尤其常见于风控规则、优惠策略、表单校验、工作流条件判断、数据筛选等场景。本文整理一次相对完整的审计过程,重点放在识别思路、风险判断、复现验证和修复方式,不涉及攻击性利用链展开。 问题场景 业务中有一个规则判断接口,允许运营配置条件,例如: amount > 100 && userLevel == 'VIP'后端拿到规则表达式后,通过 SpEL 对上下文变量进行计算,返回 true 或 false。设计目标本身没有问题,问题出在表达式来源和执行能力没有隔离。 审计时看到类似代码: public boolean checkRule(String expression, Map<String, Object> context) {
T0xfce
背景 文件上传是 Web 系统里很常见的功能,头像、附件、工单截图、导入文件都会用到。它的问题在于:业务上看起来只是“保存一个文件”,安全上却同时涉及文件类型识别、存储路径、访问权限、解析行为、元数据处理和后续消费链路。很多历史漏洞并不是单点判断写错,而是多个小问题叠加后形成风险。 这篇文章整理的是我在 Java Web 项目代码审计中常见的一类上传问题。内容偏防守和工程落地,重点放在如何识别风险、如何在本地安全环境复现、以及如何设计加固方案,不涉及对真实系统的攻击操作。 典型场景 某业务系统提供附件上传接口,后端使用 Spring MVC 接收 MultipartFile,文件保存到应用服务器本地目录,并返回可访问 URL。简化后的代码大致如下: @PostMapping("/upload") public Map<String, Object> upload(@RequestParam("file") MultipartFile file) throws IOException { String originalName = file.getOriginalFi
T0xfce
背景SSRF(Server-Side Request Forgery,服务端请求伪造)属于 Web 安全里比较常见但容易被低估的一类问题。它的本质是:应用服务端根据用户输入去发起网络请求,但没有对目标地址、协议、跳转、解析结果做足够限制,导致攻击者可以借服务端身份访问不该访问的资源。在真实项目里,SSRF 往往出现在“看起来很正常”的业务功能中,例如 URL 预览、图片抓取、远程文件导入、Webhook 回调测试、RSS 订阅、PDF/截图生成、对象存储迁移等。代码审计时如果只关注 SQL 注入、XSS、反序列化,容易漏掉这类服务端出网能力带来的风险。本文重点放在防御性代码审计、受控环境复现和修复思路,不涉及未授权攻击或利用真实内网资产。常见问题场景下面这些代码模式,在审计时需要提高敏感度:后端接收 url、link、target、callback、avatar、image、feed 等参数后直接请求。允许用户填写 Webhook 地址,并提供“测试发送”功能。服务端将用户传入的图片地址下载到本地或上传到对象存储。使用浏览器内核或截图服务访问用户提供的页面。后端请求前只做了字符串黑名单
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“让服务器代替用户访问一个 URL”这么简单。真正危险的地方在于:服务端通常处于比普通用户更宽的网络边界内,可能访问内网管理面板、服务发现接口、容器控制面或云环境的身份凭证服务。这类漏洞的难点也不只在于找到一个发起 HTTP 请求的参数,而在于确认请求的完整链路:输入是否可控、协议是否受限、域名是否解析到内网地址、是否允许跳转、出口网络是否隔离,以及响应内容最终是否会回显给攻击者。本文以代码审计和授权测试为主线,整理一套可复用的 SSRF 分析方法,并重点讨论修复时经常被忽略的边界条件。一、典型场景与风险边界常见的 SSRF 入口包括以下功能:头像、附件、网页截图或远程图片导入;Webhook、回调地址、第三方通知配置;URL 预览、文档转换、RSS 抓取和站点连通性检测;服务端代理、图片转码、PDF 生成和远程日志采集;根据用户提交的地址读取远程配置或同步数据。风险通常分为三类。第一类是内网探测,服务端可以访问用户无法直接访问的管理端口。第二类是敏感信息读取,例如错误配置、内部接口响应或运行环境中
T0xfce
背景 越权问题在 Java Web 项目里很常见,但也很容易被低估。很多系统登录、菜单、角色配置都做得比较完整,接口层却只校验了“是否登录”,没有校验“是否有权访问当前资源”。这类问题在测试环境里不一定显眼,到了真实业务场景,往往会造成订单、工单、用户资料、审批记录等数据被横向访问。 这篇文章整理一次代码审计中比较典型的越权排查思路。重点不在某个漏洞利用技巧,而是如何从代码、接口和数据流三个角度判断权限边界是否可靠,适合做代码审计、自查和安全加固参考。 问题场景 项目是常见的 Spring Boot 后台系统,用户登录后可以查看自己的业务数据。权限模型大致分为三层: 登录认证:判断用户是否已登录。 菜单权限:控制前端页面和按钮是否显示。 数据权限:控制用户只能访问自己有权限的数据。 审计时发现,部分接口依赖前端传入的 userId、deptId 或 recordId 查询数据,后端没有重新确认当前登录用户与目标资源之间的关系。典型代码形态如下: @GetMapping("/record/detail") public Result detail(Long recordId) {
T0xfce
文件上传是 Web 系统里很常见的功能:头像、附件、导入模板、工单截图、富文本图片都会用到。它也是代码审计中高频出问题的位置。很多漏洞并不是因为开发完全没有校验,而是校验点放错了、校验维度不完整,或者存储和访问链路没有隔离。 这篇文章整理的是我在审计文件上传功能时比较常用的一套检查思路,重点放在防护设计和代码审计,不涉及未授权攻击或真实目标利用。示例建议只在本地测试环境或授权环境中验证。 一、常见场景与风险边界 文件上传风险通常不是单点问题,而是“上传入口、解析处理、存储位置、访问方式、后续消费”组合后的结果。单纯禁止某几个扩展名并不能覆盖完整风险。 场景常见问题主要影响头像/图片上传只校验 Content-Type 或前端校验上传非预期文件、触发解析风险附件上传原文件名直接拼接路径路径穿越、覆盖文件压缩包导入解压时未校验条目路径Zip Slip、写入任意目录Office/PDF 预览调用解析器未隔离解析器漏洞、资源消耗对象存储直传Key 可控、权限策略过宽越权覆盖、公开敏感文件二、审计入口:先定位所有上传路径 很多系统不止一个上传接口。除了显式的 upload 接口,还要关注导入、富
T0xfce
背景 Fastjson 相关安全问题在很多老系统里仍然比较常见,尤其是一些历史 Java Web 项目、内部管理平台、网关服务和定时任务系统。实际排查时,很多团队只关注“版本是否存在漏洞”,但从代码审计角度看,风险往往不止来自组件版本,还包括反序列化入口、AutoType 配置、全局 ParserConfig、异常日志泄露以及业务对象边界不清晰等问题。 这篇文章整理一套偏防守和审计视角的排查方法,适合用于内部资产自查、代码审计复核和安全加固,不涉及攻击利用细节。 问题场景 在一次老项目安全复核中,发现项目依赖里存在较早版本的 fastjson,同时代码中大量使用 JSON.parseObject、JSON.parseArray 和 JSONObject.toJavaObject。项目本身并没有直接暴露“反序列化接口”,但多个控制器会接收前端传入的 JSON 字符串,再转换为业务对象。 这类场景的主要问题是:开发人员通常认为“只是解析 JSON”,但如果组件版本较老、配置不当,或者解析目标类型不受控,就可能扩大攻击面。 常见风险点 组件版本过旧:老版本 Fastjson 曾多次出现反序列
T0xfce
背景 前段时间在做一套业务系统的安全巡检时,WAF 和应用日志里同时出现了多次针对 rememberMe 参数的异常请求。业务本身使用过 Apache Shiro 做登录态管理,虽然已经升级过版本,但历史配置和依赖没有系统梳理过,所以这次把它当成一次反序列化风险排查来完整复盘。 这篇文章不讨论利用细节,也不提供可直接用于攻击的 payload。重点放在真实环境里如何判断风险是否存在、如何定位配置问题、如何做加固和监控。类似思路也适用于其他 Java 反序列化风险排查。 问题场景 最初的异常来自两类日志: 网关日志中出现大量携带超长 rememberMe Cookie 的请求; 应用日志中偶发 Unable to deserialize argument byte array、Padding exception、Invalid AES key length 等异常; 同一来源 IP 会探测多个路径,包括登录页、后台入口和一些历史接口。 单看这些日志不能直接判断系统可被利用,但可以说明有人在尝试识别 Shiro 或测试 rememberMe 相关行为。对防守侧来说,关键问题有三个: 当前系
T0xfce
背景 文件上传功能在业务系统里很常见,头像、附件、工单截图、合同材料都可能涉及上传。也正因为入口普遍、实现差异大,它一直是 Web 安全审计里的高频风险点。 这篇文章整理的是一次偏防守视角的复盘:从代码审计中发现上传接口存在缺陷,到复现风险、分析成因,再到给出可落地的修复方案。文中不会涉及真实目标攻击,也不提供恶意利用引导,重点放在审计方法和加固思路。 问题场景 某业务系统提供了一个附件上传接口,前端限制只能上传图片或 PDF。开发同学最初的判断是:前端已经限制了文件类型,后端也检查了扩展名,因此风险不大。 但在代码审计中可以看到几个典型问题: 文件类型主要依赖原始文件名后缀判断。 上传目录位于 Web 可访问路径下。 保存文件名使用用户提交的文件名拼接。 未对文件内容做可信校验。 缺少统一的大小限制、权限控制和日志记录。 单个问题未必一定导致严重后果,但几个点叠加后,上传功能就可能从普通业务入口变成高风险入口。 代码片段与风险点 审计时看到的代码大致类似下面这种写法。这里做了脱敏和简化,只保留关键逻辑。 String fileName = multipartFile.getOrigi
T0xfce
背景 最近在做一批历史站点的安全巡检时,遇到过几次比较典型的 Webshell 告警。实际排查下来,问题并不复杂:入口多是老旧组件、弱口令后台、历史遗留上传接口,落点则集中在可写目录、缓存目录和模板目录。 这类事件的价值不在于“发现一个木马文件”本身,而在于通过复盘把排查链路、代码审计点和后续加固动作沉淀下来。很多站点反复中招,往往不是因为攻击手法多高级,而是缺少一套稳定的处置流程。 场景与初始现象 典型告警一般来自几类信号: EDR 或主机安全产品提示 Web 目录出现可疑脚本文件。 Web 访问日志中出现异常 POST 请求,目标文件位于 upload、cache、tmp、template 等目录。 站点响应偶发异常,PHP-FPM、Java 进程或 Web Server 进程 CPU 波动。 某些业务目录出现修改时间异常的新文件,文件名伪装成图片、缓存或配置文件。 实际处置时,不建议一上来就删除文件。更稳妥的方式是先隔离、留证、确认入口,再做清理和加固。否则很容易出现“今天删、明天又出现”的情况。 排查思路 我一般按“文件、日志、进程、代码、配置”五条线并行看。这样做的好处是可以
T0xfce
背景文件上传是 Java Web 项目里很常见的功能,但也是代码审计中反复出现问题的入口。很多项目表面上做了后缀校验、大小限制,实际落到代码细节时,仍然会出现路径可控、类型判断不可靠、文件可被直接访问、临时文件未清理等风险。这篇文章整理的是一次偏通用的审计思路,不针对特定业务系统展开攻击利用,重点放在如何识别风险点、如何做安全修复,以及如何建立更稳定的上传处理流程。适合在做 Java Web 代码审计、整改上传模块或制定安全规范时参考。典型场景审计中遇到的上传逻辑大致如下:前端提交 multipart/form-data,请求进入 Controller 后,后端读取 MultipartFile,检查文件名后缀和大小,然后把文件保存到服务器目录,最后返回一个可访问 URL。POST /api/file/upload Content-Type: multipart/form-data [email protected]从业务角度看,这个流程没有问题。但从安全角度看,需要重点确认以下几个问题:上传目录是否在 Web 可直接访问路径下。服务端是否信任了原始文件名。是否仅通过后缀判断文件类型
T0xfce
背景 任意文件读取是 Java Web 项目里比较常见、也比较容易被低估的一类问题。它不一定直接导致系统被控制,但如果能读取到配置文件、密钥、日志、源码或中间件敏感文件,往往会成为后续攻击链的起点。 这类问题在代码审计中经常出现在下载接口、模板预览、日志查看、附件读取、图片代理、静态资源转发等功能里。表面看只是一个文件路径参数,实际风险取决于路径拼接、权限校验、目录限制和响应处理是否严谨。 本文整理一套偏实战的审计与复现思路,重点放在如何识别风险、如何安全验证、如何修复。示例均为本地靶场或脱敏代码,不涉及真实目标攻击。 典型场景 先看一个在业务系统中很常见的下载接口: @GetMapping("/download") public void download(String file, HttpServletResponse response) throws IOException { String baseDir = "/data/app/uploads/"; File target = new File(baseDir + file); response.s
T0xfce
在实际事件响应中,最难的往往不是判断一个文件“像不像木马”,而是在不扩大影响面的前提下,建立一条可复核的证据链:样本从哪里来、执行后做了什么、哪些行为可以确认、哪些只是推测,以及如何把分析结果转化为检测规则和处置建议。本文以 Windows PE 文件为例,整理一套适合实验室和企业应急场景的分析流程。重点放在样本保全、静态分析、受控动态验证和 IOC 提取,不涉及持久化、绕过防护或远程控制等攻击操作。一、分析前先定义问题收到一个可疑文件后,不建议直接双击运行,也不要一开始就沉迷于反编译细节。先明确本次分析要回答的问题:文件是否与当前告警或入侵事件有关。文件是否具备执行能力,是否存在明显的打包、混淆或自解密行为。运行后是否创建进程、文件、服务、注册表项或网络连接。是否能够提取稳定的检测特征,例如哈希、路径、互斥体、域名、文件名或行为组合。如何验证结论,并降低样本运行对分析环境的影响。一个好的分析报告应当区分“观察到的事实”“基于事实的判断”和“尚未验证的推测”。这比简单给出一个恶意或安全的结论更有长期价值。二、建立隔离且可回滚的实验环境动态分析前应准备独立的虚拟机或专用分析主机。实验环境
T0xfce
背景文件上传一直是 Web 安全里比较“老”的问题,但在真实环境中仍然很常见。原因不只是后端判断不严,还包括对象存储直传、反向代理转发、异步处理任务、缩略图生成、临时目录清理等多个环节。只盯着一个上传接口,往往看不到完整风险链路。前段时间复盘过一次内部演练中的 WebShell 告警,最终没有形成实际危害,但暴露出几个典型问题:扩展名校验分散、上传目录可执行、图片处理逻辑信任用户输入、日志字段不足。这里整理成一篇偏长期参考的文章,重点放在代码审计思路和防护落地,不讨论攻击利用细节。场景说明业务中有一个头像上传功能,前端限制只能上传 jpg、png,后端也做了扩展名判断,并将文件保存到本地静态目录。表面看风险不高,但实际链路如下:用户上传文件到后端接口;后端根据原始文件名截取扩展名;保存到 Web 可访问目录;异步任务读取文件生成缩略图;Nginx 将该目录作为静态资源直接对外提供。告警来自主机侧文件监控,发现上传目录下出现了非预期内容。虽然没有执行成功,但问题点已经比较明显:上传文件进入了 Web 根目录,并且校验逻辑不足以保证文件类型可信。问题代码示例下面是一段简化后的伪代码,很多项
T0xfce
SSRF(Server-Side Request Forgery,服务器端请求伪造)并不是“让服务端代替用户发一次请求”这么简单。它真正危险的地方在于:应用通常拥有比普通用户更高的网络可达性,攻击者一旦能够影响请求目标,就可能借助应用访问内网管理面、云平台元数据服务、仅绑定本机的调试接口,甚至把内部响应带回到外部。 在实际审计中,SSRF 往往不以明显的 url 参数出现,也可能隐藏在图片抓取、Webhook、文件导入、Markdown 预览、第三方接口代理、PDF 生成等功能中。本文以防守和代码审计为主线,整理一套适用于研发自查、漏洞复现和修复验证的方法。 一、先明确问题边界:哪些功能值得优先检查 判断一个功能是否可能存在 SSRF,核心不是看参数名,而是确认服务端是否会根据外部输入发起网络请求。以下场景通常风险较高: 根据用户提交的 URL 下载头像、图片、附件或远程文档。 提供 URL 预览、网页截图、网页转 PDF、RSS 抓取等能力。 允许配置 Webhook、回调地址、通知地址或第三方集成地址。 服务端作为代理访问外部 API,并将响应转发给浏览器。 解析 SVG、XML、
T0xfce
背景 Java Web 项目里,反序列化问题一直比较典型:漏洞触发点往往不明显,利用链依赖运行时环境,修复也不是简单“升级一个包”就能彻底解决。实际审计中,我更建议把它当成一类输入边界问题来处理,而不是只盯着某个 CVE。 本文整理一次偏通用的代码审计与安全复现思路,重点放在如何定位风险点、如何搭建隔离环境验证、以及如何给出可落地的修复建议。文中不提供攻击载荷构造和恶意控制类操作,只讨论安全研究和防护层面的关键细节。 问题场景 某 Java Web 系统中存在一个历史接口,用于接收客户端提交的状态数据。代码最初设计时为了“方便扩展”,把部分对象直接序列化后放入请求体或缓存字段中,服务端再还原为对象继续处理。 这种设计常见于以下场景: 早期 RPC 或内部管理接口,直接使用 Java 原生序列化。 将复杂对象写入 Redis、文件、消息队列,再由服务端读取。 使用第三方框架自动处理对象转换,但未限制类型。 历史系统迁移后,旧接口仍暴露在网关或内网服务中。 安全风险的核心不在于“序列化”本身,而在于:服务端对不可信数据执行了对象还原,并且运行时类路径中存在可能被滥用的调用链。 审计入口 代
T0xfce
背景 Webshell 相关告警在应急里很常见,但真正影响处置质量的,往往不是“找到一个可疑文件”这么简单,而是能否判断入口、确认影响范围、清理持久化痕迹,并把同类问题收口。这里整理一套偏实战的排查思路,适合用于内部复盘、主机自查和蓝队侧验证。 本文不讨论攻击利用细节,也不提供可直接用于入侵的操作。重点放在日志分析、文件取证、代码审计和加固验证上。 典型场景 某业务系统出现 Webshell 告警,安全设备给出的证据是一个新创建的脚本文件,路径位于站点上传目录。业务侧反馈近期没有发布,服务器上也没有明显异常进程。此类场景里,常见风险点包括: 上传接口缺少类型校验,导致脚本文件落到 Web 可访问目录。 历史漏洞被利用,例如编辑器、CMS 插件、旧版框架组件。 已存在的 Webshell 二次落地,或通过计划任务、包含文件维持访问。 误报,例如缓存文件、模板文件中存在高危函数特征。 排查思路 我的习惯是先固定证据,再判断入口,最后做收口验证。不要一上来直接删除文件,否则容易丢掉时间线和关联证据。 一、保留现场与建立时间线 先记录文件基本信息,包括路径、权限、属主、大小、哈希、创建时间、修
T0xfce
背景 Spring Boot Actuator 是很多 Java Web 项目都会启用的运维组件,用来暴露健康检查、指标、环境信息、线程状态等管理端点。它本身不是漏洞,但在真实项目里,经常因为默认认知偏差、网关转发不清晰、历史配置遗留,导致管理端点暴露到公网或被内部低权限用户访问。 这类问题在代码审计、攻防演练和应急排查中都比较常见。风险不一定表现为直接拿到服务器权限,更多时候是信息泄露、配置泄露、服务拓扑泄露,进一步放大其他漏洞的利用条件。本文按审计和加固视角整理一套相对稳妥的检查方法。 常见问题场景 实际项目里,Actuator 暴露风险通常来自下面几类场景: 开发阶段为了调试启用了 management.endpoints.web.exposure.include=*,上线后未收敛。 服务部署在内网,但通过网关、Ingress、反向代理被间接转发到公网。 健康检查路径和管理端点共用同一端口,网关规则写得过宽。 Spring Security 只保护了业务路径,没有覆盖 /actuator/**。 旧版本项目存在历史端点,例如 /env、/trace、/heapdump 等暴露面较
T0xfce
背景SSRF(Server-Side Request Forgery)在代码审计里经常被低估。它不像 SQL 注入那样直观,也不像文件上传那样容易通过界面复现,但一旦服务端具备主动发起网络请求的能力,风险边界就会扩大到内网服务、云元数据接口、管理端口以及依赖服务。这篇文章整理的是我在审计业务系统中比较常见的一类场景:后端提供“URL 预览、图片抓取、Webhook 回调、文件转存、远程导入”等功能。文章重点放在识别思路、代码层面的风险点和加固方案,不提供针对真实目标的攻击操作。常见场景SSRF 通常出现在“用户可控 URL + 服务端请求”的组合里。典型入口包括:文章或商品详情页的远程图片抓取。站点信息预览,例如输入 URL 后自动抓取标题、描述、图标。Webhook 配置,由服务端向用户填写的地址推送事件。文件导入功能,支持从远程 URL 下载文件。PDF/截图服务,服务端访问指定页面后生成结果。这些功能本身都是合理业务能力,问题在于服务端如果没有限制目标地址、协议、解析结果和跳转链路,就可能被利用去访问原本不应该暴露的资源。审计时优先看的代码形态不同语言写法不同,但风险形态很相似。
T0xfce