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

17站長(zhǎng)網(wǎng)

17站長(zhǎng)網(wǎng) 首頁 安全 漏洞分析 查看內(nèi)容

PHP漏洞全解

2022-9-27 15:37| 查看: 2754 |來源: 互聯(lián)網(wǎng)

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

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

本文最后更新于 2022-9-27 15:37,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):17tui@17tui.com
·END·
站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長(zhǎng)網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 啦啦啦 中文 日本 韩国 免费 | 和搜子的日子 在线观看 | 免费人成在线观看视频不卡 | 日韩AV片无码一区二区三区不卡 | 久久视频在线视频观看精品15 | a级成人免费毛片完整版 | 亚洲第一页视频 | 中文字幕在线永久 | 交换邻居波多野结衣中文字幕 | 色综合 亚洲 自拍 欧洲 | 日本免费一区二区三区最新vr | 用快播看黄的网站 | 热热久久超碰精品中文字幕 | 91精品国产91 | 99视频国产在线 | 免费看大黄高清网站视频在线 | 海角国精产品一区一区三区糖心 | 伊人久在线观看视频 | 纯肉小黄文高H | 妈妈的职业3完整版在线播放 | 国产爱豆果冻传媒在线观看视频 | 99RE6这里只有精品国产AV | 日本理伦片午夜理伦片 | 久久香蕉国产免费天天 | 97公开超碰在线视频 | 97影院午夜午夜伦不卡 | 免费国产黄线在线播放 | 久久AV喷吹AV高潮欧美 | 999精品在线| 国产午夜亚洲精品理论片八戒 | 大香伊人中文字幕精品 | 成人a毛片久久免费播放 | 毛片大片免费看 | 国产免费午夜高清 | 国产自啪偷啪视频在线 | 97人人超碰国产精品最新蜜芽 | 扒开双腿疯进出爽爽爽动态图 | 亚洲精品久久久久中文字幕二区 | 在线 亚洲 日韩 欧洲视频 | 国产成人综合网在线观看 | 欧美日韩另类在线观看视频 |