某些頁面使用參數調用功能,沒有經過權限驗證,比如index.php?action=upload
密碼硬編碼
有的程序會把數據庫鏈接賬號和密碼,直接寫到數據庫鏈接函數中。
隨機函數
rand()
rand()最大隨機數是32767,當使用rand處理session時,攻擊者很容易破解出session,建議使用mt_rand()
mt_srand()和mt_rand()
e="text-indent: 0.85cm; margin-bottom: 0cm; line-height: 125%">PHP4和PHP5<5.2.6,這兩個函數處理數據是不安全的。在web應用中很多使用mt_rand來處理隨機的session,比如密碼找回功能等,這樣的后果就是被攻擊者惡意利用直接修改密碼。
特殊字符和多字節編碼
多字節編碼
PHP危險函數
緩沖區溢出
confirm_phpdoc_compiled
影響版本:
phpDocumentor phpDocumentor 1.3.1
phpDocumentor phpDocumentor 1.3 RC4
phpDocumentor phpDocumentor 1.3 RC3
phpDocumentor phpDocumentor 1.2.3
phpDocumentor phpDocumentor 1.2.2
phpDocumentor phpDocumentor 1.2.1
phpDocumentor phpDocumentor 1.2
mssql_pconnect/mssql_connect
影響版本:PHP <= 4.4.6
crack_opendict
影響版本:PHP = 4.4.6
snmpget
影響版本:PHP <= 5.2.3
ibase_connect
影響版本:PHP = 4.4.6
unserialize
影響版本:PHP 5.0.2、PHP 5.0.1、PHP 5.0.0、PHP 4.3.9、PHP 4.3.8 e="font-size: 10pt">、PHP 4.3.7、PHP 4.3.6、PHP 4.3.3、PHP 4.3.2、PHP 4.3.1、PHP 4.3.0、PHP 4.2.3、PHP 4.2.2、PHP 4.2.1、PHP 4.2.0、PHP 4.2-dev、PHP 4.1.2、PHP 4.1.1、PHP 4.1.0、PHP 4.1、PHP 4.0.7、PHP 4.0.6、PHP 4.0.5、PHP 4.0.4、PHP 4.0.3pl1、PHP 4.0.3、PHP 4.0.2、PHP 4.0.1pl2、PHP 4.0.1pl1、PHP 4.0.1
session_destroy()刪除文件漏洞
影響版本:不祥,需要具體測試
測試代碼如下:
session_save_path(‘./’);
session_start();
if($_GET[‘del’]) {
session_unset();
session_destroy();
}else{
$_SESSION[‘do’]=1;
echo(session_id());
print_r($_SESSION);
}
?>
當我們提交cookie:PHPSESSIONID=/../1.php,相當于刪除了此文件
unset()-zend_hash_del_key_or_index漏洞
zend_hash_del_key_or_index PHP4小于4.4.3和PHP5小于5.1.3,可能會導致zend_hash_del刪除了錯誤的元素。當PHP的unset()函數被調用時,它會阻止變量被unset。
信息泄露
phpinfo
如果攻擊者可以瀏覽到程序中調用phpinfo顯示的環境信息,會為進一步攻擊提供便利
PHP環境
open_basedir設置
open_basedir能限制應用程序能訪問的目錄,檢查有沒有對open_basedir進行設置,當然有的通過web服務器來設置,例如:apache的php_admin_value,nginx+fcgi通過conf來控制php設置
allow_url_fopen設置
如果allow_url_fopen=ON,那么php可以讀取遠程文件進行操作,這個容易被攻擊者利用
> allow_url_include設置
如果allow_url_include=ON,那么php可以包含遠程文件,會導致嚴重漏洞
safe_mode_exec_dir設置
這個選項能控制php可調用的外部命令的目錄,如果PHP程序中有調用外部命令,那么指定外部命令的目錄,能控制程序的風險
magic_quote_gpc設置
這個選項能轉義提交給參數中的特殊字符,建議設置magic_quote_gpc=ON
register_globals設置
開啟這個選項,將導致php對所有外部提交的變量注冊為全局變量,后果相當嚴重
safe_mode設置
safe_mode是PHP的重要安全特性,建議開啟
session_use_trans_sid設置
如果啟用 session.use_trans_sid,會導致 PHP 通過 URL 傳遞會話 ID,這樣一來,攻擊者就更容易劫持當前會話,或者欺騙用戶使用已被攻擊者控制的現有會話。
display_errors設置
如果啟用此選項,PHP將輸出所有的錯誤或警告信息,攻擊者能利用這些信息獲取web根路徑等敏感信息
expose_php設置
如果啟用 expose_php 選項,那么由 PHP 解釋器生成的每個響應都會包含主機系統上所安裝的 PHP 版本。了解到遠程服務器上運行的 PHP 版本后,攻擊者就能針對系統枚舉已知的盜取手段,從而大大增加成功發動攻擊的機會。
參考文檔:
https://www.fortify.com/vulncat/zh_CN/vulncat/index.html
http://secinn.appspot.com/pstzine/read?issue=3&articleid=6
http://riusksk.blogbus.com/logs/51538334.html
http://www.owasp.org/index.php/Category:OWASP_Code_Review_Project
This entry was tagged php漏洞, 代碼審計. Bookmark the permalink.
Post navigation
← lxde+ubuntu on android
使用google SSL的方法 →
3 comments
原文轉自:http://www.sectop.com/?p=111