Edit by Qsaka
這篇paper只是個(gè)人的學(xué)習(xí)筆記,如有疏漏之處,歡迎指出。
0X01 SQL注入
這里主要是PHP的防范注入的幾個(gè)配置,注入手法不再贅述
magic_quotes_gpc
對 $_GET $_POST $_COOKIE 變量中的 ' " \ 空字符(NULL) 進(jìn)行轉(zhuǎn)義。但這個(gè)特性在 PHP5.3.0 中已經(jīng)不推薦使用,并且在 PHP5.4.0 中已經(jīng)移除。注意它并不會過濾 $_SERVER
magic_quotes_runtime
對從數(shù)據(jù)庫或文件中獲取的數(shù)據(jù)進(jìn)行過濾,過濾內(nèi)容與 magic_quotes_gpc 一致。但在PHP5.4中被廢棄。
magic_quotes_sybase
將 $_GET $_POST $_COOKIE 變量中的'替換為",并對空字符(NULL)`進(jìn)行轉(zhuǎn)義。此選項(xiàng)會完全覆蓋magic_quotes_gpc。
safe_mode
safe_mode在 PHP5.3.0 中廢棄, PHP 5.4.0 中移除。
0X02 XSS
htmlspecialchars()默認(rèn)只過濾"
0X06 文件操作
文件操作包括上傳,讀取,寫入,下載,包含,刪除。
文件包含
文件包含分為本地文件包含(LFI),遠(yuǎn)程文件包含(RFI)。進(jìn)行遠(yuǎn)程文件包含需要allow_url_include = On。遠(yuǎn)程文件包含也可以通過PHP的輸入/輸出流 php:// 或偽協(xié)議 data:// 來實(shí)現(xiàn)
如果文件包含被加以某種限制,如 include($_GET['file'].'.html')。這里給出幾種bypass的方法
- 通過
%00截?cái)嗟姆绞絹磉M(jìn)行包含。但是這要在未對NULL字符進(jìn)行過濾的情況下。而且在 PHP5.3 之后的版本無法利用。 - 利用多個(gè)
.來進(jìn)行截?cái)?。windows下需要>=240個(gè),linux下>=2040個(gè)。這種方法同樣在 PHP5.3.0 后被修復(fù) - 特別的,當(dāng)可以進(jìn)行遠(yuǎn)程文件包含時(shí),我們可以利用URL中的
? #來實(shí)現(xiàn)截?cái)唷?code>file=http//www.example.com/shell.php?, 這樣.html會被認(rèn)為成請求參數(shù)
文件上傳
- 利用apache或iis6.0的解析漏洞
-
php3 php4 php%20繞過 -
%00截?cái)?,?1.php%00.jpg - 更改文件頭
content-type
0X07 代碼執(zhí)行
代碼執(zhí)行相關(guān)函數(shù) eval() assert() preg_replace() call_user_func() call_user_func_array() array_map() array_filter() array_reduce() 等
0X08 命令執(zhí)行
命令執(zhí)行相關(guān)函數(shù) exec() system() shell_exec() passthru() pcntl_exec() popen() proc_open(), 除此之外被反引號括起的字符串也會被當(dāng)做命令執(zhí)行
0X09 變量覆蓋
變量覆蓋漏洞是指用戶傳入的變量會將程序內(nèi)部原有變量的值覆蓋??赡芤l(fā)變量覆蓋漏洞的函數(shù)有 extract() parse_str()
PHP中的可變變量也可以導(dǎo)致變量覆蓋,比如下面的過濾操作
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$$_key = addslashes($_value);
}
}
變量覆蓋漏洞一般需要和其他的攻擊方式進(jìn)行結(jié)合。
0X0B 邏輯漏洞
這里簡單列舉幾種
-
header()跳轉(zhuǎn)后沒有exit() -
is_numeric()可用hex繞過,導(dǎo)致二次注入 -
==與=== - 在線支付邏輯漏洞總結(jié)
- 驗(yàn)證碼安全問題匯總
- 密碼找回邏輯漏洞總結(jié)
0X0A 權(quán)限繞過
權(quán)限繞過其實(shí)也算邏輯漏洞,分為水平越權(quán)和垂直越權(quán)兩類。
wooyun小川的paper: 我的越權(quán)之道
Reference
代碼審計(jì)入門總結(jié)
高級PHP應(yīng)用程序漏洞審核技術(shù)
PHP文件包含漏洞總結(jié)
論P(yáng)HP常見的漏洞
業(yè)務(wù)安全漏洞挖掘歸納總結(jié)