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)唷indows下需要>=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)部原有變量的值覆蓋∧枋危可能引發(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é)