您好,登錄后才能下訂單哦!
小編給大家分享一下代碼審計中常用導致漏洞函數有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
A、本地文件包含
include() 向上包含,向下包含,如果包含出錯繼續向下執行
include_once() 同上,只進行包含一次
require() 向上包含,向下包含,如果包含出錯不下向下執行
require_once() 同上,只進行包含一次
B、遠程文件包含:
在php.ini文件中
allow_url_include = on
C、文件包含截斷
a、%00截斷(php版本小于5.3)
b、問號截斷(問號后面相當于請求的參數,偽截斷)
c、英文(.) 反斜杠(/) 截斷
搜索關鍵函數:
file_get_contents() highlight_file() fopen() 打開文件 read file() 讀取文件 fread() fgetss() fgets() parse_ini_file() show_source() file()
搜索關鍵函數:
move_uploaded_file() 接著看調用這個函數的代碼是否存在為限制上傳格式或者可以繞過
(1) 未過濾或本地過濾:
服務器端未過濾,直接上傳PHP格式的文件即可利用
(2) 黑名單擴展名過濾:
限制不夠全面:IIS默認支持解析.asp,.cdx, .asa,.cer等
擴展名可繞過:
(3)空格繞過
不被允許的文件格式.php,但是我們可以上傳文件名為1.php(注意后面有一個空格)
(4)文件頭 content-type驗證繞過:
getimagesize()函數:驗證文件頭只要為GIF89a,就會返回真
限制$_FILES["file"]["type"]的值 就是人為限制content-type為可控變量。
防范:
使用in_array()或 利用三等于===對比擴展名
保存上傳文件是重命名,規則采用時間戳拼接隨機數:md5(time() + rand(1,1000))
搜索關鍵函數:
unlink()利用回溯變量的方式
老版本下的session_destroy(),可以刪除文件,現已基本被修復
Metinfo的任意文件刪除漏洞$action = delete即可刪除.sql的文件,如果文件不是sql直接刪除提交的文件名
target.com/recovery.php?&action=delete&filename=../../index.php
常規函數:
eval() assert() preg_replace(), call_user_func(), call_user_func_array(), array_map()
array_filter 依次將array數組中的每個值傳遞到callbach函數。如果callback函數返回true,則array數組的當前值會被包含
create_function
usort:使用自定一函數對數組進行排序
${}:中間的php代碼將會被解析
執行函數:
preg_replace()函數:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
當$pattern處存在e修飾符時,$replacement 會被當做php代碼執行
搜索關鍵函數:
system() exec() shell_exec() passthru() pcntl_exec() popen() proc_open()
以上是“代碼審計中常用導致漏洞函數有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。