记一次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是一个轻量级的数据库管理工具,攻击者尝试了以下方法:
- 弱口令攻击:尝试常见用户名密码组合未果
- 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 上传绕过技术
-
路径遍历:
--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代码
- 成功上传
-
.user.ini利用:
- 上传
.user.ini文件设置auto_prepend_file指令:auto_prepend_file=1.jpg - 上传恶意
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。防御方应采取纵深防御策略,从多个层面加固系统安全性,特别是对管理接口和文件上传功能的保护。