实战渗透 - 一个怎么够?我全都要!
字数 1308 2025-08-20 18:17:41

实战渗透教学:从备份文件扫描到Getshell

1. 信息收集与备份文件扫描

1.1 扫描策略

  • 目标命名规则:子域名.主域名.com
  • 扫描文件规则:
    • 子域名.zip子域名.rar
    • abc.子域名.主域名.com 对应 abc.zipabc.rar
  • 使用工具:
    • 自定义异步扫描工具(基于aiohttp, aiomysql)
    • Kemoon师傅的snail2.0工具(针对.svn,.git,.rar,.zip泄露)

1.2 识别备份文件

通过响应头中的Content-Type判断:

  • RAR文件: application/octet-stream
  • ZIP文件: application/x-zip-compressed

2. 源代码审计

2.1 系统架构分析

  • 中间件: Tomcat
  • 开发框架: Spring MVC
  • 数据库: Oracle
  • 默认凭证: System/****2020

2.2 安全控制分析

  • web.xml配置了登录过滤器
  • /images/, /scripts/, /css/目录外,其他访问都会重定向到/login.jsp
  • 未发现敏感操作的Servlet地址

3. 认证绕过

3.1 默认凭证利用

  • 使用FOFA搜索同系统站点
  • 测试默认凭证System/****2020
  • 成功登录后获得系统管理员权限

3.2 SSO控制器漏洞

发现SSOcontroller/CSS开头的路由地址存在认证问题:

@RequestMapping(method = {RequestMethod.GET}, value = {"/CSS/sso"})
public ModelAndView sso(HttpServletRequest request, HttpServletResponse response, String xxx) {
    // 认证逻辑
}

认证流程分析:

  1. 检查Referer头:
    String referer = request.getHeader("REFERER");
    if (referer == null) {
        // 跳转错误页面
    }
    
  2. 检查非admin账户:
    if ("admin".equals(xxx)) {
        // 跳转错误页面
    }
    
  3. 用户存在性检查:
    User dbUser = this.userService.getUserByUserID(xxx);
    if (dbUser == null || dbUser.getLocked().intValue() == 1) {
        // 错误处理
    } else {
        // 直接登录
        mav = this.userLoginController.login(request, dbUser, "1");
    }
    

利用方法:

  • 构造请求头Referer: 任意值
  • 爆破有效用户名(非admin账户)
  • 直接登录无需密码

4. 文件上传漏洞

4.1 漏洞代码分析

String type = matUrl.getOriginalFilename().substring(matUrl.getOriginalFilename().lastIndexOf("."));
String OriginalFilename = matUrl.getOriginalFilename().substring(0, matUrl.getOriginalFilename().lastIndexOf("."));
String saveName = System.currentTimeMillis() + type;
String saveName2 = OriginalFilename + type;
String contextPath = request.getSession().getServletContext().getRealPath("/upload");
File savefile = new File(contextPath + "/" + saveName);
// 文件保存逻辑...

漏洞点:

  • 未对文件扩展名进行校验
  • 直接拼接用户控制的文件名和扩展名
  • 最终保存为时间戳+原始扩展名的形式

4.2 利用方法

  1. 构造上传表单:
    <form action="漏洞URL" method="post" enctype="multipart/form-data">
        <input type="file" name="Filedata"/>
        <input type="submit" value="提交"/>
    </form>
    
  2. 上传JSP webshell:
    <%String name = "yuanhai";%>
    <h1>hello<%=name%></h1>
    
  3. 访问上传的文件(需携带有效会话Cookie)

5. 批量利用与评分

5.1 批量利用策略

  • 使用FOFA搜索同系统站点(案例中发现79个站点)
  • 自动化测试SSO认证漏洞
  • 自动化上传webshell

5.2 评分计算

  • 每个站点提交可获得3-6分
  • 79个站点总计可获得246分(教育SRC平台)

6. 防御建议

6.1 针对备份文件泄露

  • 禁止在web目录存放源代码压缩包
  • 使用.gitignore等机制排除敏感文件
  • 定期检查web目录文件权限

6.2 针对认证漏洞

  • 禁用或修改所有默认凭证
  • 实现强密码策略
  • 对SSO接口增加二次验证

6.3 针对文件上传漏洞

  • 实施严格的白名单校验
  • 对上传文件重命名(不使用用户输入)
  • 限制上传目录的执行权限
  • 对上传内容进行安全检查

7. 工具与资源

  • 自定义备份文件扫描工具(即将开源)
  • snail2.0信息泄露扫描工具:https://github.com/lakemoon602/snail2.0
  • FOFA搜索引擎:https://fofa.info/
  • 教育SRC平台:https://src.sjtu.edu.cn/
实战渗透教学:从备份文件扫描到Getshell 1. 信息收集与备份文件扫描 1.1 扫描策略 目标命名规则: 子域名.主域名.com 扫描文件规则: 子域名.zip 或 子域名.rar abc.子域名.主域名.com 对应 abc.zip 或 abc.rar 使用工具: 自定义异步扫描工具(基于aiohttp, aiomysql) Kemoon师傅的snail2.0工具(针对.svn,.git,.rar,.zip泄露) 1.2 识别备份文件 通过响应头中的Content-Type判断: RAR文件: application/octet-stream ZIP文件: application/x-zip-compressed 2. 源代码审计 2.1 系统架构分析 中间件: Tomcat 开发框架: Spring MVC 数据库: Oracle 默认凭证: System/**** 2020 2.2 安全控制分析 web.xml 配置了登录过滤器 除 /images/ , /scripts/ , /css/ 目录外,其他访问都会重定向到 /login.jsp 未发现敏感操作的Servlet地址 3. 认证绕过 3.1 默认凭证利用 使用FOFA搜索同系统站点 测试默认凭证 System/****2020 成功登录后获得系统管理员权限 3.2 SSO控制器漏洞 发现 SSOcontroller 中 /CSS 开头的路由地址存在认证问题: 认证流程分析: 检查Referer头: 检查非admin账户: 用户存在性检查: 利用方法: 构造请求头 Referer: 任意值 爆破有效用户名(非admin账户) 直接登录无需密码 4. 文件上传漏洞 4.1 漏洞代码分析 漏洞点: 未对文件扩展名进行校验 直接拼接用户控制的文件名和扩展名 最终保存为时间戳+原始扩展名的形式 4.2 利用方法 构造上传表单: 上传JSP webshell: 访问上传的文件(需携带有效会话Cookie) 5. 批量利用与评分 5.1 批量利用策略 使用FOFA搜索同系统站点(案例中发现79个站点) 自动化测试SSO认证漏洞 自动化上传webshell 5.2 评分计算 每个站点提交可获得3-6分 79个站点总计可获得246分(教育SRC平台) 6. 防御建议 6.1 针对备份文件泄露 禁止在web目录存放源代码压缩包 使用.gitignore等机制排除敏感文件 定期检查web目录文件权限 6.2 针对认证漏洞 禁用或修改所有默认凭证 实现强密码策略 对SSO接口增加二次验证 6.3 针对文件上传漏洞 实施严格的白名单校验 对上传文件重命名(不使用用户输入) 限制上传目录的执行权限 对上传内容进行安全检查 7. 工具与资源 自定义备份文件扫描工具(即将开源) snail2.0信息泄露扫描工具:https://github.com/lakemoon602/snail2.0 FOFA搜索引擎:https://fofa.info/ 教育SRC平台:https://src.sjtu.edu.cn/