青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網

17站長網 首頁 安全 漏洞分析 查看內容

PHP漏洞全解

2022-9-27 15:37| 查看: 2692 |來源: 互聯網

  PHP網頁的安全性問題   針對PHP的網站主要存在下面幾種攻擊方式:   1.命令注入(Command Injection)   2.eval注入(Eval Injection)   3.客戶端腳本攻擊(script Insertion)   4.跨網站腳本攻擊(Cr

  PHP網頁的安全性問題
  針對PHP的網站主要存在下面幾種攻擊方式:
  1.命令注入(Command Injection)
  2.eval注入(Eval Injection)
  3.客戶端腳本攻擊(script Insertion)
  4.跨網站腳本攻擊(Cross Site scripting, XSS)
  5.SQL注入攻擊(SQL injection)
  6.跨網站請求偽造攻擊(Cross Site Request Forgeries, CSRF)
  7.Session 會話劫持(Session Hijacking)
  8.Session 固定攻擊(Session Fixation)
  9.HTTP響應拆分攻擊(HTTP Response Splitting)
  10.文件上傳漏洞(File Upload Attack)
  11.目錄穿越漏洞(Directory Traversal)
  12.遠程文件包含攻擊(Remote Inclusion)
  13.動態函數注入攻擊(Dynamic Variable Evaluation)
  14.URL攻擊(URL attack)
  15.表單提交欺騙攻擊(Spoofed Form Submissions)
  16.HTTP請求欺騙攻擊(Spoofed HTTP Requests)
  幾個重要的php.ini選項
  Register Globals
  php>=4.2.0,php.ini的register_globals選項的默認值預設為Off,當register_globals的設定為On時,程序可以接收來自服務器的各種環境變量,包括表單提交的變量,而且由于PHP不必事先初始化變量的值,從而導致很大的安全隱患.
  例1:
  //check_admin()用于檢查當前用戶權限,如果是admin設置$is_admin變量為true,然后下面判斷此變量是否為true,然后執行管理的一些操作
  //ex1.php
  
  if (check_admin())
  {
  $is_admin = true;
  }
  if ($is_admin)
  {
  do_something();
  }
  ?>
  這一段代碼沒有將$is_admin事先初始化為Flase,如果register_globals為On,那么我們直接提交 http://www.sectop.com/ex1.php?is_admin=true,就可以繞過check_admin()的驗證
  例2:
  //ex2.php
  
  if (isset($_SESSION["username"]))
  {
  do_something();
  }
  else
  {
  echo "您尚未登錄!";
  }
  ?>
  當register_globals=On時,我們提交http://www.sectop.com/ex2.php?_SESSION[username]=dodo,就具有了此用戶的權限
  所以不管register_globals為什么,我們都要記住,對于任何傳輸的數據要經過仔細驗證,變量要初始化
  safe_mode
  安全模式,PHP用來限制文檔的存取.限制環境變量的存取,控制外部程序的執行.啟用安全模式必須設置php.ini中的safe_mode = On
  1.限制文件存取
  safe_mode_include_dir = "/path1:/path2:/path3"
  不同的文件夾用冒號隔開
  2.限制環境變量的存取
  safe_mode_allowed_env_vars = string
  指定PHP程序可以改變的環境變量的前綴,如:safe_mode_allowed_env_vars = PHP_ ,當這個選項的值為空時,那么php可以改變任何環境變量
  safe_mode_protected_env_vars = string
  用來指定php程序不可改變的環境變量的前綴
  3.限制外部程序的執行
  safe_mode_exec_dir = string
  此選項指定的文件夾路徑影響system.exec.popen.passthru,不影響shell_exec和"` `".
  disable_functions = string
  不同的函數名稱用逗號隔開,此選項不受安全模式影響
  magic quotes
  用來讓php程序的輸入信息自動轉義,所有的單引號("'"),雙引號("""),反斜杠("")和空字符(NULL),都自動被加上反斜杠進行轉義
  magic_quotes_gpc = On 用來設置magic quotes 為On,它會影響HTTP請求的數據(GET.POST.Cookies)
  程序員也可以使用addslashes來轉義提交的HTTP請求數據,或者用stripslashes來刪除轉義
  命令注入攻擊
  PHP中可以使用下列5個函數來執行外部的應用程序或函數
  system.exec.passthru.shell_exec.``(與shell_exec功能相同)
  函數原型
  string system(string command, int &return_var)
  command 要執行的命令
  return_var 存放執行命令的執行后的狀態值
  string exec (string command, array &output, int &return_var)
  command 要執行的命令
  output 獲得執行命令輸出的每一行字符串
  return_var 存放執行命令后的狀態值
  void passthru (string command, int &return_var)
  command 要執行的命令
  return_var 存放執行命令后的狀態值
  string shell_exec (string command)
  command 要執行的命令
  漏洞實例
  例1:
  //ex1.php
  
  $dir = $_GET["dir"];
  if (isset($dir))
  {
  echo "
";
  system("ls -al ".$dir);
  echo "
";
  }
  ?>
  我們提交http://www.sectop.com/ex1.php?dir=| cat /etc/passwd
  提交以后,命令變成了 system("ls -al | cat /etc/passwd");
  eval注入攻擊
  eval函數將輸入的字符串參數當作PHP程序代碼來執行
  函數原型:
  mixed eval(string code_str) //eval注入一般發生在攻擊者能控制輸入的字符串的時候
  //ex2.php
  
  $var = "var";
  if (isset($_GET["arg"]))
  {
  $arg = $_GET["arg"];
  eval("$var = $arg;");
  echo "$var =".$var;
  }
  ?>
  當我們提交 http://www.sectop.com/ex2.php?arg=phpinfo();漏洞就產生了
  動態函數
  
  func A()
  {
  dosomething();
  }
  func B()
  {
  dosomething();
  }
  if (isset($_GET["func"]))
  {
  $myfunc = $_GET["func"];
  echo $myfunc();
  }
  ?>
  程序員原意是想動態調用A和B函數,那我們提交http://www.sectop.com/ex.php?func=phpinfo 漏洞產生
  防范方法
  1.盡量不要執行外部命令
  2.使用自定義函數或函數庫來替代外部命令的功能
  3.使用escapeshellarg函數來處理命令參數
  4.使用safe_mode_exec_dir指定可執行文件的路徑
  esacpeshellarg函數會將任何引起參數或命令結束的字符轉義,單引號"'",替換成"'",雙引號""",替換成""",分號";"替換成";"
  用safe_mode_exec_dir指定可執行文件的路徑,可以把會使用的命令提前放入此路徑內
  safe_mode = On
  safe_mode_exec_di r= /usr/local/php/bin/
  客戶端腳本植入
  客戶端腳本植入(script Insertion),是指將可以執行的腳本插入到表單.圖片.動畫或超鏈接文字等對象內.當用戶打開這些對象后,攻擊者所植入的腳本就會被執行,進而開始攻擊.
  可以被用作腳本植入的HTML標簽一般包括以下幾種:
  1. 無限彈框
  插入 跳轉釣魚頁面
  或者使用其他自行構造的js代碼進行攻擊
  防范的方法
  一般使用htmlspecialchars函數來將特殊字符轉換成HTML編碼
  函數原型
  string htmlspecialchars (string string, int quote_style, string charset)
  string 是要編碼的字符串
  quote_style 可選,值可為ENT_COMPAT ENT_QUOTES ENT_NOQUOTES,默認值ENT_COMPAT,表示只轉換雙引號不轉換單引號.ENT_QUOTES,表示雙引號和單引號都要轉換.ENT_NOQUOTES,表示雙引號和單引號都不轉換
  charset 可選,表示使用的字符集
  函數會將下列特殊字符轉換成html編碼:
  & ----> &
  " ----> "
  ' ----> '
  < ----> <
  > ----> >
  把show.php的第98行改成
  
  然后再查看插入js的漏洞頁面
  xss跨站腳本攻擊
  XSS(Cross Site scripting),意為跨網站腳本攻擊,為了和樣式表css(Cascading Style Sheet)區別,縮寫為XSS
  跨站腳本主要被攻擊者利用來讀取網站用戶的cookies或者其他個人數據,一旦攻擊者得到這些數據,那么他就可以偽裝成此用戶來登錄網站,獲得此用戶的權限.
  跨站腳本攻擊的一般步驟:
  1.攻擊者以某種方式發送xss的http鏈接給目標用戶
  2.目標用戶登錄此網站,在登陸期間打開了攻擊者發送的xss鏈接
  3.網站執行了此xss攻擊腳本
  4.目標用戶頁面跳轉到攻擊者的網站,攻擊者取得了目標用戶的信息
  5.攻擊者使用目標用戶的信息登錄網站,完成攻擊
  當有存在跨站漏洞的程序出現的時候,攻擊者可以構造類似 http://www.sectop.com/search.php?
  key= ,誘騙用戶點擊后,可以獲取用戶cookies值
  防范方法:
  利用htmlspecialchars函數將特殊字符轉換成HTML編碼
  函數原型
  string htmlspecialchars (string string, int quote_style, string charset)
  string 是要編碼的字符串
  quote_style 可選,值可為ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默認值ENT_COMPAT,表示只轉換雙引號不
  轉換單引號。ENT_QUOTES,表示雙引號和單引號都要轉換。ENT_NOQUOTES,表示雙引號和單引號都不轉換
  charset 可選,表示使用的字符集
  函數會將下列特殊字符轉換成html編碼:
  & ----> &
  " ----> "
  ' ----> '
  < ----> <
  > ----> >
  $_SERVER["PHP_SELF"]變量的跨站
  在某個表單中,如果提交參數給自己,會用這樣的語句
  
" method="POST">
  ......
  
  $_SERVER["PHP_SELF"]變量的值為當前頁面名稱
  例:
  http://www.sectop.com/get.php
  get.php中上述的表單
  那么我們提交
  http://www.sectop.com/get.php/">
  那么表單變成
  
" method="POST">
  跨站腳本被插進去了
  防御方法還是使用htmlspecialchars過濾輸出的變量,或者提交給自身文件的表單使用
  
  這樣直接避免了$_SERVER["PHP_SELF"]變量被跨站
  SQL注入攻擊
  SQL注入攻擊(SQL Injection),是攻擊者在表單中提交精心構造的sql語句,改變原來的sql語句,如果web程序沒有對提交的數據經過檢查,那么就會造成sql注入攻擊.
  SQL注入攻擊的一般步驟:
  1.攻擊者訪問有SQL注入漏洞的網站,尋找注入點
  2.攻擊者構造注入語句,注入語句和程序中的SQL語句結合生成新的sql語句
  3.新的sql語句被提交到數據庫中進行處理
  4.數據庫執行了新的SQL語句,引發SQL注入攻擊
  跨網站請求偽造
  CSRF(Cross Site Request Forgeries),意為跨網站請求偽造,也有寫為XSRF.攻擊者偽造目標用戶的HTTP請求,然后此請求發送到有CSRF漏洞的網站,網站執行此請求后,引發跨站請求偽造攻擊.攻擊者利用隱蔽的HTTP連接,讓目標用戶在不注意的情況下單擊這個鏈接,由于是用戶自己點擊的,而他又是合法用戶擁有合法權限,所以目標用戶能夠在網站內執行特定的HTTP鏈接,從而達到攻擊者的目的.

本文最后更新于 2022-9-27 15:37,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:[email protected]
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 国产免费啪嗒啪嗒视频看看 | 国产传媒精品1区2区3区 | 午夜亚洲WWW湿好爽 午夜亚洲WWW湿好大 | 国产亚洲欧洲日韩在线三区 | 一个人免费视频在线观看 | 午夜性伦鲁啊鲁免费视频 | 乡土女性网动态图解 | 无码AV精品一区二区三区 | 久久精品国产欧美成人 | 特大黑人娇小亚洲女mp4 | 啪啪漫画无遮挡全彩h网站 啪啪漫画无遮挡全彩h同人 | 在线观看黄色小说 | 果冻传媒2021一二三在线观看 | 永久免费观看视频 | 免费人成网站在线观看10分钟 | younv 学生国产在线视频 | 日本一本在线播放 | 在教室伦流澡到高潮H免费视频 | 青柠在线观看免费完整版 | 国产精品成人观看视频免费 | 欧美国产精品久久久乱码 | 一本道高清无码v | 少妇无码太爽了视频在线播放 | 久久综合久久鬼色 | 别插我B嗯啊视频免费 | 交换年轻夫妇HD中文字幕 | 在线少女漫画 | 亚洲国产成人精品久久久久 | 欧美另类一区 | 日韩精品一区二区三区AV在线观看 | 国产精品亚洲精品久久品 | 日韩精品 中文字幕 有码 | 成人影片下载网站 | 4480YY旧里番在线播放 | 国产人A片777777久久 | 日本久久久久久久做爰片日本 | 精品亚洲永久免费精品 | 亚洲男女羞羞无遮挡久久丫 | 久久婷婷色香五月综合激情 | 亚洲野狼综合网站 | 中国女人逼 |