Hacking PHP

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 邏輯漏洞

這里簡單列舉幾種

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é)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容