PHP代碼審計(3)

發表于:2013-10-23來源:DoDo作者:DoDo點擊數: 標簽:php
某些頁面使用參數調用功能,沒有經過權限驗證,比如index.php?action=upload 密碼硬編碼 有的程序會把數據庫鏈接賬號和密碼,直接寫到數據庫鏈接函數中。

  某些頁面使用參數調用功能,沒有經過權限驗證,比如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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97