记一次从代码审计到拿下内网edr的过程
字数 1271 2025-08-10 08:28:57

从代码审计到内网EDR攻防实战教学文档

0x01 前言

本教学文档详细记录了一次从外网代码审计到最终拿下内网EDR系统的完整过程。通过本案例,您将学习到如何从外网资产入手,通过源码审计获取初始权限,并进一步渗透内网关键安全系统的技术方法。

0x02 寻找源码到Getshell

查找源码阶段

  1. 目标分析:目标系统为通用系统,外网资产较少,常规渗透无果后转向源码审计

  2. 源码获取方法

    • 网盘泄露:尝试各种网盘泄露网站查找,未果
    • 代码仓库泄露:在Github、Gitlab等平台尝试多个关键词搜索,无收获
    • FOFA资产搜索
      • 使用favicon.ico或title特征搜索同类系统
      • 采集相关资产进行批量检查
      • 最终在某站点发现web.rar文件,成功获取源码

代码审计阶段

  1. 目录结构分析

    • 首先检查web.xml配置文件
    • 重点关注filter.PurFilter过滤器
  2. 权限绕过分析

    // PurFilter中定义的允许访问的路径和后缀
    String[] strPass = {"/login.jsp", "/login.do", "/logout.do", "/error.jsp"};
    String[] strSuffix = {".jpg", ".png", ".gif", ".css", ".js", ".html"};
    
    // URL处理逻辑
    String url = request.getRequestURI();
    int lastPoint = url.lastIndexOf(".");
    String suffix = url.substring(lastPoint).toLowerCase();
    

    漏洞原理

    • 使用getRequestURI()获取URL,该方法会返回完整URI包括分号后的内容
    • 可构造如/test/1.jsp;1.jpg的URL绕过权限校验
    • 分号后的.jpg后缀使请求通过校验,而实际仍由1.jsp处理
  3. 寻找上传点

    • 全局搜索multipart关键词
    • 发现一处未做充分校验的文件上传功能

获取权限阶段

  1. 利用上传漏洞

    • 构造特殊请求包上传Webshell
    • 成功获取目标系统控制权限
  2. 初步信息收集

    • 执行tasklist发现目标安装有某EDR终端防护系统

0x03 拿下内网EDR

获取EDR系统权限

  1. 内网探测

    • 扫描C段443端口
    • 发现EDR管理界面https://172.x.x.x
  2. 建立代理通道

    • 使用frp建立内网代理
  3. 漏洞利用

    • 测试公开EDR漏洞
    • 发现未修复的命令执行漏洞
    • 利用公开脚本获取反弹shell

登录EDR管理界面

  1. 初始思路

    • 查找数据库凭据
    • 检查进程发现使用MongoDB
    find /ac -type f -name "*.php" | xargs grep "password"
    find /ac -type f -name "*.php" | xargs grep "mongodb_password"
    
    • 因解密困难放弃此路径
  2. 未授权登录漏洞利用

    • 定位漏洞文件/ui/login.php
    • 备份原文件后修改认证逻辑:
      // 原始代码
      if($user == 'admin' && $pass == 'password') 
      
      // 修改为
      if(1==1)
      
    • 通过/ui/login.php?user=admin直接登录管理界面
  3. 后续操作

    • 添加白名单规避检测
    • 批量下发后门程序
    • 实现内网主机批量上线

0x04 技术总结

  1. 外网突破

    • 通过多种渠道获取外网系统源码
    • 深入代码审计发现权限绕过和文件上传漏洞
  2. 内网横向

    • 利用历史未修复漏洞获取EDR系统权限
    • 通过文件修改实现管理界面未授权登录
  3. 关键点

    • getRequestURI()方法的安全隐患
    • 分号在URL解析中的特殊作用
    • EDR系统管理界面的认证绕过
    • 内网代理和扫描技术的应用
  4. 防御建议

    • 严格校验文件上传功能
    • 避免使用getRequestURI()进行安全判断
    • 及时修复已知漏洞
    • 对关键系统文件进行完整性监控
    • 实施最小权限原则,避免过度信任内部系统

本案例展示了从外网到内网、从Web应用到安全系统的完整攻击链,强调了纵深防御和及时漏洞修复的重要性。

从代码审计到内网EDR攻防实战教学文档 0x01 前言 本教学文档详细记录了一次从外网代码审计到最终拿下内网EDR系统的完整过程。通过本案例,您将学习到如何从外网资产入手,通过源码审计获取初始权限,并进一步渗透内网关键安全系统的技术方法。 0x02 寻找源码到Getshell 查找源码阶段 目标分析 :目标系统为通用系统,外网资产较少,常规渗透无果后转向源码审计 源码获取方法 : 网盘泄露 :尝试各种网盘泄露网站查找,未果 代码仓库泄露 :在Github、Gitlab等平台尝试多个关键词搜索,无收获 FOFA资产搜索 : 使用favicon.ico或title特征搜索同类系统 采集相关资产进行批量检查 最终在某站点发现 web.rar 文件,成功获取源码 代码审计阶段 目录结构分析 : 首先检查 web.xml 配置文件 重点关注 filter.PurFilter 过滤器 权限绕过分析 : 漏洞原理 : 使用 getRequestURI() 获取URL,该方法会返回完整URI包括分号后的内容 可构造如 /test/1.jsp;1.jpg 的URL绕过权限校验 分号后的 .jpg 后缀使请求通过校验,而实际仍由 1.jsp 处理 寻找上传点 : 全局搜索 multipart 关键词 发现一处未做充分校验的文件上传功能 获取权限阶段 利用上传漏洞 : 构造特殊请求包上传Webshell 成功获取目标系统控制权限 初步信息收集 : 执行 tasklist 发现目标安装有某EDR终端防护系统 0x03 拿下内网EDR 获取EDR系统权限 内网探测 : 扫描C段443端口 发现EDR管理界面 https://172.x.x.x 建立代理通道 : 使用frp建立内网代理 漏洞利用 : 测试公开EDR漏洞 发现未修复的命令执行漏洞 利用公开脚本获取反弹shell 登录EDR管理界面 初始思路 : 查找数据库凭据 检查进程发现使用MongoDB 因解密困难放弃此路径 未授权登录漏洞利用 : 定位漏洞文件 /ui/login.php 备份原文件后修改认证逻辑: 通过 /ui/login.php?user=admin 直接登录管理界面 后续操作 : 添加白名单规避检测 批量下发后门程序 实现内网主机批量上线 0x04 技术总结 外网突破 : 通过多种渠道获取外网系统源码 深入代码审计发现权限绕过和文件上传漏洞 内网横向 : 利用历史未修复漏洞获取EDR系统权限 通过文件修改实现管理界面未授权登录 关键点 : getRequestURI() 方法的安全隐患 分号在URL解析中的特殊作用 EDR系统管理界面的认证绕过 内网代理和扫描技术的应用 防御建议 : 严格校验文件上传功能 避免使用 getRequestURI() 进行安全判断 及时修复已知漏洞 对关键系统文件进行完整性监控 实施最小权限原则,避免过度信任内部系统 本案例展示了从外网到内网、从Web应用到安全系统的完整攻击链,强调了纵深防御和及时漏洞修复的重要性。