记一次webshell的获取
字数 1383 2025-08-26 22:11:56

WebShell获取技术分析与防御指南

1. 漏洞发现与信息收集

1.1 初始探测

  • 目标网站:http://t.xxx.com.cn(PHP网站)
  • 发现子域名:http://t.test.xxx.com.cn(返回403状态)
  • 使用目录爆破工具发现以下关键文件:
    • /m.php - Adminer数据库管理工具
    • /ua.php
    • /receiver.php - 文件上传接口
    • /abc/config.php - 配置文件
    • /abc/index.php

1.2 Adminer利用

Adminer是一个轻量级的数据库管理工具,攻击者尝试了以下方法:

  1. 弱口令攻击:尝试常见用户名密码组合未果
  2. MySQL客户端文件读取漏洞
    • 使用Rogue-MySql-Server工具
    • 在攻击者控制的服务器上搭建恶意MySQL服务
    • 通过Adminer连接此恶意服务
    • 成功读取服务器文件:
      • /data01/htdocs/m.php
      • /abc/config.php(获取数据库凭据)

2. 文件上传漏洞利用

2.1 漏洞分析

receiver.php文件上传接口存在以下特点:

  • 使用黑名单过滤上传文件类型
  • 需要filetokento参数
  • totoken都存在时,文件会上传到/oss/public/目录
  • 存在路径遍历漏洞,可通过to参数重定向上传路径

2.2 上传绕过技术

  1. 路径遍历

    --57052814523281
    Content-Disposition: form-data; name="to"
    
    /../../data01/htdocs/1.shtml
    --57052814523281
    Content-Disposition: form-data; name="token"
    
    oYc8Xe1HsViIfAcF
    --57052814523281
    Content-Disposition: form-data; name="file"; filename="1.php"
    Content-Type: application/octet-stream
    
    123
    --57052814523281--
    
    • 成功上传.shtml文件但无法执行PHP代码
  2. .user.ini利用

    • 上传.user.ini文件设置auto_prepend_file指令:
      auto_prepend_file=1.jpg
      
    • 上传恶意1.jpg文件包含PHP代码
    • 访问任意PHP文件(如config.php)时,会自动包含并执行1.jpg中的代码

3. 完整攻击链

  1. 发现Adminer并利用MySQL客户端漏洞读取配置文件
  2. 获取数据库凭据但权限有限
  3. 分析receiver.php文件上传接口
  4. 利用路径遍历上传.user.ini和恶意图片文件
  5. 通过.user.ini的自动包含功能获取WebShell

4. 防御措施

4.1 针对Adminer的防护

  • 限制Adminer的访问IP
  • 使用强密码认证
  • 禁用不必要的数据库管理工具
  • 更新到最新版本以修复已知漏洞

4.2 文件上传安全

  • 使用白名单而非黑名单验证文件类型
  • 禁用路径遍历功能(如../
  • 限制上传目录的权限
  • 对上传文件进行重命名
  • 禁用上传目录的脚本执行权限

4.3 服务器配置安全

  • 限制.user.ini的使用或禁用危险指令
  • 定期检查服务器上的异常文件
  • 使用最小权限原则配置服务账户
  • 保持所有软件组件更新到最新版本

5. 检测与响应

  1. 日志监控

    • 监控异常的文件上传请求
    • 关注包含路径遍历特征的请求
  2. 文件完整性检查

    • 定期检查关键目录的文件变更
    • 特别关注.user.ini等配置文件
  3. 入侵检测

    • 部署WAF检测异常请求
    • 设置对Adminer等管理工具的访问告警

6. 总结

本案例展示了攻击者如何通过组合多种技术(子域名枚举、目录爆破、MySQL客户端漏洞、文件上传漏洞和.user.ini利用)最终获取WebShell。防御方应采取纵深防御策略,从多个层面加固系统安全性,特别是对管理接口和文件上传功能的保护。

WebShell获取技术分析与防御指南 1. 漏洞发现与信息收集 1.1 初始探测 目标网站: http://t.xxx.com.cn (PHP网站) 发现子域名: http://t.test.xxx.com.cn (返回403状态) 使用目录爆破工具发现以下关键文件: /m.php - Adminer数据库管理工具 /ua.php /receiver.php - 文件上传接口 /abc/config.php - 配置文件 /abc/index.php 1.2 Adminer利用 Adminer是一个轻量级的数据库管理工具,攻击者尝试了以下方法: 弱口令攻击 :尝试常见用户名密码组合未果 MySQL客户端文件读取漏洞 : 使用 Rogue-MySql-Server 工具 在攻击者控制的服务器上搭建恶意MySQL服务 通过Adminer连接此恶意服务 成功读取服务器文件: /data01/htdocs/m.php /abc/config.php (获取数据库凭据) 2. 文件上传漏洞利用 2.1 漏洞分析 receiver.php 文件上传接口存在以下特点: 使用黑名单过滤上传文件类型 需要 file 、 token 和 to 参数 当 to 和 token 都存在时,文件会上传到 /oss/public/ 目录 存在路径遍历漏洞,可通过 to 参数重定向上传路径 2.2 上传绕过技术 路径遍历 : 成功上传 .shtml 文件但无法执行PHP代码 .user.ini利用 : 上传 .user.ini 文件设置 auto_prepend_file 指令: 上传恶意 1.jpg 文件包含PHP代码 访问任意PHP文件(如 config.php )时,会自动包含并执行 1.jpg 中的代码 3. 完整攻击链 发现Adminer并利用MySQL客户端漏洞读取配置文件 获取数据库凭据但权限有限 分析 receiver.php 文件上传接口 利用路径遍历上传 .user.ini 和恶意图片文件 通过 .user.ini 的自动包含功能获取WebShell 4. 防御措施 4.1 针对Adminer的防护 限制Adminer的访问IP 使用强密码认证 禁用不必要的数据库管理工具 更新到最新版本以修复已知漏洞 4.2 文件上传安全 使用白名单而非黑名单验证文件类型 禁用路径遍历功能(如 ../ ) 限制上传目录的权限 对上传文件进行重命名 禁用上传目录的脚本执行权限 4.3 服务器配置安全 限制 .user.ini 的使用或禁用危险指令 定期检查服务器上的异常文件 使用最小权限原则配置服务账户 保持所有软件组件更新到最新版本 5. 检测与响应 日志监控 : 监控异常的文件上传请求 关注包含路径遍历特征的请求 文件完整性检查 : 定期检查关键目录的文件变更 特别关注 .user.ini 等配置文件 入侵检测 : 部署WAF检测异常请求 设置对Adminer等管理工具的访问告警 6. 总结 本案例展示了攻击者如何通过组合多种技术(子域名枚举、目录爆破、MySQL客户端漏洞、文件上传漏洞和 .user.ini 利用)最终获取WebShell。防御方应采取纵深防御策略,从多个层面加固系统安全性,特别是对管理接口和文件上传功能的保护。