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

    283
  • 篇意见

    0
  • 次查看

    2343

关于此博客

背景 做漏洞复现和代码审计时,很多问题并不出在漏洞本身,而是出在环境管理上。尤其是复现历史 CVE、开源 CMS 漏洞、第三方组件缺陷时,如果直接把靶场暴露在公网,或者把测试数据混进日常环境,后续很容易变成真实风险。 这篇文章整理一套相对稳妥的实践流程:如何搭建隔离的 Web 漏洞复现环境,如何抓住代码审计中的关键入口,以及复现后如何沉淀规则和修复建议。内容偏长期可复用,不针对某个具体漏洞做攻击演示。 适用场景 复现历史 Web 漏洞,用于理解漏洞成因和修复方式。 对开源项目、内部业务模块做代码审计。 安全团队搭建内部漏洞验证环境。 编写检测规则、修复建议或安全开发规范。 环境隔离的基本原则 复现环境的第一目标不是“跑起来”,而是“可控”。我通常会按下面几个原则处理: 网络隔离:靶场容器默认不映射公网地址,只允许本机或指定网段访问。 数据隔离:使用虚拟数据,不导入真实用户数据、生产配置或生产密钥。 权限隔离:容器内应用不要使用 root 运行,数据库账号只给必要权限。 快照可回滚:复现前后可以快速恢复到干净状态,避免环境被污染。 日志留存:保留 Web 日志、应用日志、数据库查询日志,
T0xfce
背景 WebShell 排查是很多应急场景里绕不开的一环。相比“发现一个可疑文件就结束”,更有价值的是把入口、落点、执行链路和处置措施串起来,否则很容易出现删了文件但攻击者很快又回来。 这篇文章整理一次常见 Web 站点被写入脚本后门的排查思路,重点放在日志关联、文件取证、代码特征识别和加固复盘。内容只讨论防御和分析方法,不涉及攻击利用细节。 问题场景 某业务反馈站点偶发异常,表现为部分接口响应慢,且服务器 CPU 在短时间内有异常抖动。初步查看进程没有发现明显异常服务,但 Web 目录下存在近期新增的 PHP 文件,命名类似正常资源文件。 环境大致如下: Nginx + PHP-FPM 业务代码部署在 /data/www/app 访问日志位于 /var/log/nginx/access.log 应用存在文件上传功能 这种场景下,不建议直接删除可疑文件后收工。更合理的做法是先保留证据,确认文件来源和触发路径,再做清理和加固。 技术分析 WebShell 排查通常围绕三个问题展开: 文件是什么时候出现的? 是谁通过什么入口写入的? 是否已经被访问或执行过? 如果只看文件内容,很容易漏掉入
T0xfce
背景 SSRF(Server-Side Request Forgery)这类问题在代码审计和漏洞复现里很常见,但很多复盘文章容易停留在“传一个 URL,服务端帮忙请求”这个层面。实际项目里,SSRF 往往藏在图片抓取、Webhook 校验、文件导入、URL 预览、PDF 生成、对象存储回源等功能中,表面看是业务能力,底层却是服务端主动发起网络请求。 这篇文章整理一个偏真实的审计思路:如何从入口定位 SSRF,如何判断影响面,如何做安全复现,以及如何把修复措施落到代码和网络层。文中不会涉及内网探测、云元数据读取等攻击引导,只关注漏洞分析和防护实现。 典型场景 某业务系统提供“远程图片上传”功能,用户输入一个图片 URL,后端下载图片后保存到对象存储。简化后的调用链大致如下: Controller: /api/image/fetch - 接收参数 imageUrl Service: ImageFetchService.fetch(imageUrl) - 校验后缀是否为 jpg/png/gif - 使用 HTTP Client 下载资源 - 判断 Content-Type
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是一个只靠“禁止访问内网 IP”就能彻底解决的问题。实际审计中,漏洞往往出现在图片抓取、Webhook、文档转换、在线预览、URL 导入等功能里,风险则取决于请求协议、重定向处理、DNS 解析方式、网络出口策略以及响应内容是否会回显。 本文以代码审计和修复验证为主线,整理一套适合在授权测试环境中使用的方法。示例围绕 Java Web 服务展开,但分析思路同样适用于其他语言和框架。 一、先明确 SSRF 的实际风险 服务端代发请求本身并不一定是漏洞。关键在于攻击者是否能够影响请求目标,以及服务端是否拥有攻击者不应具备的网络可达性或身份权限。 访问云平台元数据服务,获取临时凭证或实例信息。 访问内网管理面板、监控系统、配置中心等仅对内部开放的服务。 利用服务端身份访问其他系统接口,形成权限边界绕过。 探测内网端口或服务类型,并将结果通过响应、错误信息或时间差泄露。 借助 file、gopher 等协议访问本地文件或构造非 HTTP 请求。 风险判断不能只看“是否能请求 127.0.0.1”。还应结合部署环
T0xfce
背景 越权问题在 Web 系统里一直很常见,尤其是业务接口越来越细、前后端分离之后,很多权限判断会被分散到 Controller、Service、网关、注解或数据层过滤里。表面上看接口返回正常、鉴权也存在,但只要某个对象级权限校验缺失,就可能出现用户访问他人订单、工单、文件、组织数据的情况。 这类问题的特点是:不一定依赖复杂漏洞利用,更多来自业务逻辑疏漏。做代码审计时,如果只看是否登录、是否有角色,很容易漏掉“当前用户是否有权操作当前资源”这个核心问题。 典型场景 下面以一个常见的后台业务系统为例:用户登录后可以查看自己的项目详情,接口大致如下: GET /api/project/detail?id=10086服务端代码中可能已经做了登录校验,例如通过 Token 获取当前用户身份: @GetMapping("/detail") public ProjectDTO detail(@RequestParam Long id) { LoginUser user = SecurityContext.getCurrentUser(); return projectService
T0xfce
背景 越权问题在 Web 安全里不算新,但在真实业务中依然很常见。它不像 SQL 注入、命令执行那样有明显的危险函数特征,更多时候藏在业务流程、接口参数和权限模型之间。尤其是前后端分离、微服务拆分之后,一个接口是否真正做了资源归属校验,往往需要结合代码、数据表和调用链一起看。 这篇文章整理一次典型的接口越权问题复盘,重点放在如何定位、验证和修复这类问题。内容只讨论授权校验与安全设计,不涉及攻击利用或数据获取细节,适合做代码审计、接口安全测试和研发自查时参考。 问题场景 某业务系统存在用户资料、订单记录、工单附件等资源。前端页面正常情况下只展示当前登录用户自己的数据,但后端部分接口通过传入资源 ID 查询详情,接口形态类似: GET /api/order/detail?id=10086开发侧的初始判断通常是:前端不会展示别人的 ID,用户也不知道其他资源 ID,所以风险不高。但从安全角度看,只要接口以客户端传入的资源标识作为查询依据,就必须在服务端验证当前用户是否有权限访问该资源。 这类问题常见于以下场景: 详情页接口只校验登录态,不校验资源归属。 列表接口做了用户过滤,但详情、导出、下
T0xfce
背景 文件上传是 Web 系统里很常见的功能,头像、附件、工单图片、导入模板都离不开它。也正因为使用频率高,相关风险在代码审计和渗透测试中长期存在:扩展名判断不严、MIME 信任客户端、上传目录可执行、对象存储回源配置不当、图片处理库触发异常等。 这篇文章整理一次代码审计中对上传模块的检查思路,重点放在风险识别和加固落地,不讨论非法利用链路,也不提供针对真实目标的攻击操作。类似方法适合用于内部安全评审、上线前检查和老系统整改。 场景与问题 被审计系统是一个典型的 Java Web 应用,提供用户头像上传、后台资料附件上传、富文本图片上传三个入口。业务侧原本的设计比较直接:前端限制文件类型,后端检查后缀,保存到本地目录,再把访问 URL 返回给前端。 从安全角度看,几个问题比较典型: 文件类型判断依赖原始文件名后缀,缺少内容校验。 上传目录位于 Web 可访问路径下,且与应用同域。 不同业务入口复用同一套上传逻辑,但权限校验不一致。 图片压缩处理发生在保存之后,异常文件可能已落盘。 历史文件没有统一清理策略,难以追踪来源。 审计切入点 做上传模块审计时,我一般不会只盯某一个 Contro
T0xfce
背景Struts2 这类历史漏洞在很多企业内网仍然有参考价值:一方面,老系统迁移周期长,仍可能存在旧版本组件;另一方面,Struts2 漏洞链条通常比较典型,适合用来梳理 Java Web 框架中的参数绑定、表达式解析、拦截器调用链和安全边界问题。这篇文章整理的是一次在本地隔离实验环境中的分析记录,重点放在漏洞成因、复现验证思路、日志侧观测和修复建议上。文中不会提供面向真实目标的攻击利用流程,也不会给出可直接用于未授权入侵的载荷。问题场景某些 Struts2 历史漏洞的共同特点是:用户可控输入在框架处理流程中被错误地带入表达式求值或对象属性绑定过程,最终导致超出预期的代码路径被触发。实际排查时,不能只看业务代码是否显式调用危险 API,还要关注框架层的隐式处理逻辑。常见风险入口包括:请求参数名或参数值被框架解析为表达式。Content-Type、文件上传字段、错误处理流程等非业务字段进入异常处理链。拦截器栈中存在不安全的参数绑定或类型转换逻辑。旧版本依赖长期未升级,安全补丁未覆盖到运行环境。实验环境与边界建议使用完全隔离的本地环境进行分析,例如 Docker 容器或本机虚拟机。不要将存
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是简单的“后端可以发 HTTP 请求”这么单一。真正难处理的地方在于:业务通常确实需要访问外部资源,而攻击者能够影响请求目标、解析过程、重定向行为或请求协议。审计时如果只检查参数是否以 http:// 开头,往往会漏掉大量风险。本文以代码审计和防守验证为主线,整理 SSRF 的常见成因、审计思路、验证方法以及修复时容易忽略的边界条件。示例均以本地测试环境或受控回连服务为前提,不涉及对真实内网系统的探测。一、常见业务场景与风险边界以下功能经常出现服务端主动请求外部地址的逻辑:根据 URL 抓取网页标题、生成预览或转换文件。头像、文档、图片等远程资源导入。Webhook、回调地址、第三方接口配置。PDF、Markdown、Office 文档中的远程资源加载。监控系统、代理服务或服务端图片转码接口。风险并不只表现为读取云平台元数据。更常见的问题包括访问本机管理接口、读取内部服务响应、向内部系统发送非预期请求,以及利用出站网络权限扩大影响范围。因此,评估 SSRF 时应同时关注三个维度:请求目标:是否能访问回
T0xfce
背景 文件上传是 Web 系统里很常见的能力:头像、附件、报表导入、工单截图、插件包等都可能涉及上传。也正因为它离业务近、入口多,很多安全问题并不是出在单个函数,而是出在一整条处理链路里:前端限制、后端校验、存储位置、访问方式、解析规则、权限控制,只要其中某一环假设错误,就可能产生风险。 这篇整理偏代码审计和防护基线,不讨论攻击利用细节,也不提供可直接用于入侵的样例。重点是从审计角度判断一个上传功能是否安全,以及如何把风险收敛到可控范围。 常见问题场景 审计上传功能时,我通常会先把场景分成几类,因为不同场景的风险点不一样: 普通附件上传:如图片、PDF、Office 文档,主要关注类型校验、存储隔离、访问权限和内容安全。 结构化文件导入:如 CSV、Excel、XML、JSON,除了文件类型,还要关注解析器安全、公式注入、实体解析、反序列化等问题。 压缩包上传:如 ZIP、TAR,用于批量导入或插件安装,重点关注路径穿越、解压炸弹、覆盖文件、符号链接。 业务包或扩展包上传:如主题、插件、规则包,这类最危险,需要严格的签名校验、沙箱或离线审核流程。 如果一个系统把所有上传都交给同
T0xfce
{"title":"一次后台接口越权问题的代码审计与修复思路","content":"背景 越权漏洞在企业系统里一直很常见,尤其是后台管理、SaaS 多租户、工单系统、内容平台这类业务。它不像 SQL 注入或命令执行那样显眼,但实际影响往往不低:普通用户可以查看他人数据、低权限账号可以修改高权限资源,严重时会造成业务数据泄露或权限体系失效。 这篇文章整理一次比较典型的后台接口越权审计思路。重点放在如何发现、验证和修复这类问题,不涉及真实目标攻击,也不提供非法利用流程。文中示例均为简化后的本地代码和接口模型,适合用于内部安全评审或开发自查。 问题场景 假设某系统存在一个项目管理功能,用户登录后可以查看自己所在项目的详情。接口大致如下: GET /api/project/detail?id=1001 Authorization: Bearer <token>从业务设计看,用户只能访问自己所属组织或自己参与的项目。但在实际审计中经常会看到一种问题:接口只校验了“是否登录”,没有校验“当前用户是否有权访问该资源”。 典型错误代码类似这样: // 伪代码:存在风险 @GetMappi
T0xfce
背景文件上传是 Web 系统里很常见的功能,也是代码审计中高频出现问题的位置。头像上传、附件上传、工单图片、富文本编辑器、导入导出等模块,都可能因为校验不完整、存储路径不合理或解析配置错误,变成安全风险点。这篇文章整理一次典型代码审计中的文件上传问题分析过程,重点放在成因、审计方法和修复思路上。内容不会提供攻击利用引导,更多是帮助开发和安全同学判断一个上传模块是否可靠,以及如何把风险降下来。常见场景审计中遇到的上传逻辑通常类似下面几类:用户头像、身份证明、资质材料等图片上传。后台管理系统中的附件上传、模板导入。富文本编辑器内置上传接口。工单、论坛、评论系统中的图片或文件附件。第三方对象存储直传或后端中转上传。看起来都是普通业务功能,但只要文件类型判断、文件名处理、目录权限或 Web 容器解析规则里有一个环节出问题,就可能产生严重后果。问题成因文件上传漏洞很少是单点问题,更多是多个弱点叠加造成的。常见成因包括:只检查前端限制,没有在服务端重新校验。只根据文件后缀判断类型,没有校验文件内容。允许用户控制保存文件名或保存路径。上传目录位于 Web 可执行目录下。Web 容器对特殊后缀、双后缀
T0xfce
SSRF(服务端请求伪造)并不是“让服务器访问一个 URL”这么简单。真正容易出问题的地方,通常在于业务允许用户控制请求目标,却没有明确限制协议、目标地址、解析结果和重定向行为。审计时如果只搜索 HttpClient、RestTemplate 或 requests.get,往往会漏掉藏在图片抓取、Webhook、文件导入、链接预览和第三方回调中的风险。 一、问题场景与风险边界 常见业务流程如下: 用户提交一个图片或文档 URL,服务端负责下载并解析。 平台提供 Webhook,服务端向用户配置的地址发送事件通知。 Markdown、富文本或链接预览功能由后端抓取页面标题和摘要。 管理后台支持导入远程配置、远程头像或第三方接口数据。 当请求目标完全由外部输入控制时,风险不只包括访问内网服务,还可能涉及内部管理接口、云环境凭据服务、服务发现接口和本机管理端口。实际影响取决于网络隔离、服务权限、响应内容是否回显以及是否允许携带认证信息。 二、代码审计:从输入点追踪到请求出口 建议将审计分为“入口、变换、出口、响应处理”四个部分,而不是只盯着 HTTP 客户端调用。
T0xfce
背景最近整理内部靶场和真实告警时,发现 SSRF 仍然是云上业务里比较容易被低估的一类风险。它不像 SQL 注入那样有明显的数据回显,也不像文件上传那样容易看到落地文件,但一旦应用具备访问内网或云厂商元数据服务的能力,影响面会迅速扩大。这篇文章不讨论攻击利用细节,主要从防守视角复盘一个典型场景:业务系统提供 URL 抓取能力,输入校验不足,导致服务端可以向非预期地址发起请求。重点放在识别方法、代码审计点、验证方式和治理策略上,适合做日常安全评审和开发自查参考。典型场景很多业务都会实现类似能力:用户提交头像 URL,服务端下载并转存。文章发布时抓取远程封面图。Webhook 或回调地址测试。在线截图、PDF 生成、链接预览。导入第三方资源时,后端主动请求用户提供的地址。这些功能的共同点是:用户可控输入最终进入了服务端网络请求函数。只要边界处理不严格,就可能让服务端访问本不应该访问的地址。SSRF 的核心不是“能不能访问某个特殊地址”,而是“用户是否能够影响服务端请求目标”。只要这一点成立,就应该进入风险评估。问题表现在一次排查中,某个链接预览接口接受参数 url,后端会拉取目标页面标题和
T0xfce
文件上传类问题经常被简单归结为“校验扩展名不严格”,但在实际项目中,风险通常来自一整条处理链路:请求解析、文件名规范化、类型判断、临时目录落盘、压缩包解包、对象存储上传、静态文件映射以及后续异步处理。单点修补往往只能降低风险,不能替代完整的边界设计。本文以一次典型的代码审计场景为背景,整理文件上传功能中比较容易被忽略的风险点,并给出适合落地到研发流程中的审计和修复方法。示例均面向隔离测试环境和防守性验证,不涉及对真实系统的攻击操作。一、先明确需要保护的边界审计上传功能之前,建议先回答四个问题:上传文件最终保存在哪里,是本地目录、共享目录,还是对象存储?上传后的文件是否会被 Web 服务器直接映射访问?文件是否会进入图片解析、文档预览、压缩包解包或杀毒扫描流程?上传者能否影响最终文件名、目录层级、Content-Type 或处理参数?这几项决定了风险类型。文件本身不一定需要被服务器直接执行,才会产生安全问题。例如,路径处理缺陷可能导致覆盖应用配置;压缩包中的符号链接可能影响解包结果;图片解析器缺陷可能在异步处理阶段触发;对象存储的公开策略错误则可能造成敏感文件泄露。二、审计时不要只看扩展
T0xfce
背景 任意文件读取属于 Web 安全里比较常见但容易被低估的一类问题。它不像远程命令执行那样直观,但在真实环境中,一旦读取到配置文件、密钥、日志、源码包或部署脚本,往往会继续扩大影响面。 这篇文章整理一次典型 Java Web 下载接口的审计思路,重点放在如何发现问题、如何复现验证、如何评估影响以及如何修复。示例代码均为脱敏后的简化版本,不涉及真实目标,也不提供针对第三方系统的攻击操作。 问题场景 业务里常见文件下载功能,例如下载报表、导出附件、获取模板文件。很多项目会提供类似接口: GET /file/download?name=report.xlsx如果服务端直接拼接用户传入的文件名,并从磁盘读取文件,就可能出现目录穿越问题。一个典型的风险代码如下: String fileName = request.getParameter("name"); File file = new File("/data/app/upload/" + fileName); response.setContentType("application/octet-stream"); response.set
T0xfce
背景 任意文件读取是 Java Web 项目里比较常见、也容易被低估的一类问题。它通常不需要复杂利用链,只要下载、预览、导出、日志查看等接口对路径处理不严,就可能把配置文件、密钥、源码片段或运行日志暴露出去。 这篇文章整理的是一次常规代码审计中的复盘。场景比较典型:业务系统提供附件下载和日志预览能力,开发侧认为已经做了“目录限制”,但实际只做了字符串拼接和简单前缀判断,存在路径穿越风险。文章重点放在审计方法、漏洞成因、修复策略和验证方式,不涉及对真实目标的攻击操作。 问题场景 系统中有一个文件下载接口,大致功能是根据前端传入的文件名,从固定目录读取附件并返回给用户。简化后的代码如下: GET /file/download?name=report.pdfString baseDir = "/data/app/upload/"; String name = request.getParameter("name"); File file = new File(baseDir + name); if (!file.exists()) { response.setStatus(404)
T0xfce
背景 文件上传是 Web 系统里很常见的功能,但也是代码审计中长期高频出现问题的点。很多事故并不是因为单个校验缺失,而是上传入口、存储位置、访问方式、解析规则、权限控制组合在一起后形成了风险。 这篇文章整理一次偏真实场景的 Java 文件上传风险排查思路,重点放在如何审计、如何复现安全边界、如何加固。内容不会涉及攻击利用细节,更多是给研发和安全同学在做代码审计、上线前检查时参考。 典型场景 业务系统提供头像、附件、工单凭证等上传功能,后端常见实现方式如下: Spring MVC / Spring Boot 接收 MultipartFile。 按原始文件名或时间戳生成文件名。 文件保存到本地目录、NFS、对象存储或静态资源目录。 上传成功后返回可访问 URL。 这类功能表面看只是保存文件,但实际要关注几个问题: 上传目录是否可被 Web 容器直接解析或访问。 文件类型校验是否只依赖扩展名或 Content-Type。 文件名、路径是否存在路径穿越风险。 是否限制文件大小、数量和用户权限。 对象存储或 CDN 是否存在错误的公开读写策略。 问题代码示例 下面是审计中经常能见到的一类简化写法
T0xfce
背景 最近在做一批内部系统的安全巡检时,遇到一个比较典型的告警:某个 Java Web 服务的下载接口存在任意文件读取风险。这个问题本身不算新,但在真实业务里仍然很常见,尤其是历史系统、报表下载、附件预览、日志导出这类功能。 这篇文章不写攻击利用细节,主要从代码审计和修复角度整理一下:这类问题为什么出现、怎么判断风险边界、如何做可靠修复,以及在排查类似问题时哪些点容易漏。 问题场景 业务里常见的文件下载接口大概是这样的逻辑:前端传入文件名或相对路径,后端拼接到固定目录下,然后读取文件并返回给浏览器。 GET /download?file=report/2024-01.xlsx如果后端只做了简单字符串拼接,没有对路径做规范化和边界校验,就可能导致用户读取到预期目录之外的文件。 一个简化后的问题代码如下: String baseDir = "/data/app/files/"; String file = request.getParameter("file"); File target = new File(baseDir + file); if (!target.exists())
T0xfce
背景 Log4j 漏洞已经过去一段时间,但在实际安全工作里,类似组件级高危漏洞并不会因为热点消退就自然消失。很多内网系统、历史服务、第三方交付包里仍然可能残留旧版本依赖。相比单纯讨论漏洞原理,我更关注排查链路是否完整:能不能找到资产、判断是否受影响、确认修复是否有效,并留下可复用的方法。 这篇文章整理一次偏防守视角的 Log4j 风险排查流程,重点放在资产识别、依赖定位、验证思路和修复注意点。文中不包含利用攻击目标的操作,也不提供外部攻击引导,适合用于内部自查、应急复盘和代码审计场景。 问题场景 排查对象是一批 Java Web 服务,包含自研系统、老旧管理后台、定时任务服务以及部分供应商提供的 jar 包。最开始的问题并不是“有没有漏洞”,而是更现实的几个点: 服务数量多,部署方式不统一,有 Tomcat、Spring Boot fat jar、Docker 镜像和传统脚本启动。 部分系统没有准确的依赖清单,代码仓库和线上部署包版本不完全一致。 开发侧只关注 Maven 依赖,但实际运行时可能包含 shaded jar、lib 目录旧包或供应商内嵌组件。 安全修复后缺少验证手段,容易
T0xfce
SSRF(Server-Side Request Forgery,服务端请求伪造)并不是“发现一个可控 URL”这么简单。真正影响风险等级的因素包括:请求由哪个组件发起、是否能访问内网地址、是否跟随重定向、是否携带敏感凭据,以及应用对响应内容如何处理。本文以代码审计和修复验证为主线,整理一套适用于 Web 服务的 SSRF 分析方法,重点放在可复现、可解释和可持续修复上。 一、问题背景与典型场景 常见的 SSRF 入口包括图片抓取、Webhook、在线文档转换、URL 预览、远程文件导入、第三方回调测试等功能。它们通常具有相似的数据流: 用户提交一个 URL 或主机名; 服务端对其进行 DNS 解析、建立连接并发送请求; 服务端将响应保存、转换、解析或回显给用户。 风险并不只来自访问云平台元数据。即使没有云环境,服务端请求能力也可能触达管理后台、内部监控、数据库代理、调试接口或仅绑定在回环地址上的服务。因此审计时应先识别“请求能力”和“网络边界”,再判断具体影响。 二、审计时先画清数据流 建议不要一开始就围绕某个 Payload 反复尝试,而是先回答以下问题: 输入点在哪里?是完整 U
T0xfce
背景 这篇文章整理的是一次比较典型的 WebShell 入侵排查过程。场景并不复杂:一台对公网开放的业务站点出现异常外连,随后在 Web 目录中发现可疑脚本文件。这里不讨论攻击利用细节,也不提供可直接用于入侵的操作,只记录防守侧如何从日志、文件、进程和代码审计几个角度把事件闭环。 类似事件在中小型业务系统里很常见,尤其是历史包袱较重的 PHP、Java Web 项目:上传目录权限过大、组件版本长期不更新、日志留存不足、应用和系统权限混用,都会放大排查难度。 初始现象 最早的告警来自出口流量监控:业务服务器在非业务时间段向多个陌生 IP 发起 HTTP 请求,频率不高,但持续时间较长。同时,Nginx access.log 中出现一些访问冷门路径的请求,状态码集中在 200 和 404。 现场的几个现象比较有价值: Web 根目录下出现近期修改的脚本文件,文件名伪装成缓存文件或图片处理文件。 上传目录中混有非图片后缀文件,并且存在部分双后缀文件。 access.log 中有少量 POST 请求的响应体大小异常稳定。 PHP-FPM 进程用户具备较大的目录写权限。 这类线索不能单独定性,但
T0xfce
背景最近帮团队梳理了一批内网 Web 资产,目标不是做“打点”,而是从日常运维和代码审计角度确认几个高频风险:默认配置暴露、调试接口未关闭、反向代理规则过宽、管理后台缺少访问控制、日志中存在敏感信息。复盘下来发现,真正造成风险的往往不是单个高危漏洞,而是多个弱配置叠加后的攻击面扩大。这篇文章整理一套偏防守视角的检查方法,适合安全自查、上线前验收、内部红队演练后的整改复盘。文中示例均以授权环境和本地测试为前提,不涉及未授权攻击或恶意利用。典型场景这类问题常见于以下几种环境:业务快速迭代,测试环境配置被复制到生产环境。Nginx、Apache、Tomcat、Spring Boot Admin 等组件上线后未做最小化暴露。内网服务默认认为“只在内网就安全”,缺少身份认证和访问控制。日志、备份文件、构建产物长期堆积在 Web 根目录。反向代理统一入口配置复杂,存在路径穿透、接口误暴露等问题。经验上看,内网 Web 风险的核心不是“有没有漏洞”,而是“资产是否被清楚管理、边界是否可控、敏感接口是否默认拒绝”。审计思路我一般按“资产识别 → 暴露面确认 → 配置审计 → 代码与接口核验 → 日志与
T0xfce
背景 SSRF(Server-Side Request Forgery)这几年在真实业务里出现频率一直不低,尤其是带有“URL 预览、图片抓取、Webhook、在线导入、PDF 渲染、远程文件同步”等能力的系统。它的问题不在于某个请求函数本身危险,而是服务端替用户访问了不可信 URL,并且访问环境往往比普通用户浏览器更敏感。 这篇文章整理一次较典型的 SSRF 排查思路,重点放在代码审计、复现验证和修复策略上。内容只讨论授权测试环境中的分析方法,不涉及未授权利用、内网探测或攻击扩展。 场景描述 某业务提供“远程图片导入”功能,用户提交一个图片 URL,后端下载图片并存入对象存储。功能看起来很常见,入口大概类似: POST /api/image/import Content-Type: application/json { "url": " }后端逻辑包括三步: 校验 URL 字符串格式。 使用 HTTP 客户端请求该 URL。 判断响应 Content-Type 和文件大小后保存。 问题出在第一步和第二步之间:代码只判断了 URL 是否以 http 或 https 开头,没有对解
T0xfce
背景 这篇整理来自一次站点被植入 WebShell 的应急复盘。目标不是讨论“如何利用”,而是把排查过程、常见痕迹、日志关联方式和后续加固点记录下来,方便以后遇到类似事件时少走弯路。 受影响环境大致是常见的 Java Web 应用,前面有 Nginx 反向代理,后端 Tomcat,业务目录存在文件上传功能。事件表现为:服务器 CPU 偶发升高,站点目录出现异常 JSP 文件,Nginx 访问日志里有少量非常规请求。 问题场景 初始告警来自主机侧文件完整性监控:Web 根目录下新增了几个 JSP 文件,文件名看起来像随机字符串,例如 update_2024.jsp、test1.jsp 这类容易混入日常维护文件的命名。 管理员反馈近期没有发布这些文件,也没有临时调试需求。结合访问日志查看,发现这些 JSP 文件被少量外部 IP 请求过,请求时间和文件创建时间接近。 这类事件排查重点一般有几个: 确认异常文件的写入时间、属主、权限和内容特征。 从 Web 日志还原首次访问、上传入口、可疑参数。 确认是否存在命令执行、横向移动、敏感文件读取等后续行为。 清理落点后,定位根因并做长期加固,避免只
T0xfce