解析web文件操作常見安全漏洞(目錄、文件名檢測漏洞_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:網站模板:web上存漏洞及原理分析、防范方法(安全文件上存方法)
      這類漏洞,主要是可以讀取用戶傳入路徑名稱,采用不正確的過濾方法,導致惡意用戶,將文件上存到非預期的地方,帶來安全隱患。 其實,我們抓住幾個地方即可,我們先來分析下,既然用戶要上存文件,而且文件將是多種多樣格式;可能有的文件內容與用戶傳入格式不一致,有

       做web開發,我們經常會做代碼走查,很多時候,我們都會抽查一些核心功能,或者常會出現漏洞的邏輯。隨著技術團隊的壯大,組員技術日益成熟。 常見傻瓜型SQL注入漏洞、以及XSS漏洞。會越來越少,但是我們也會發現一些新興的隱蔽性漏洞偶爾會出現。這些漏洞更多來自開發人員,對一個函數、常見 模塊功能設計不足,遺留下的問題。以前我們能夠完成一些功能模塊,現在要求是要安全正確方法完成模塊才行。 接下來,我會分享一些常見功能模塊,由于設計原因導致漏洞出現。下面,我們先看下,讀取文件型功能漏洞。

        我們先看下下面一段代碼,通過用戶輸入不同目錄,包含不同文件

      <?php ///讀取模塊名稱 $mod = isset($_GET['m'])?trim($_GET['m']):'index'; ///過濾目錄名稱不讓跳轉到上級目錄 $mod = str_replace("..",".",$mod); ///得到文件 $file = "/home/www/blog/".$mod.".php"; ///包含文件 @include($file);

        這段代碼,可能在很多朋友做的程序里面有遇到過,對于新人來說,也是很容易出現這樣問題,記得走查遇到該代碼時候,我問到,你這個代碼安全方面能做到那些?

      答:1. 對”..”目錄有做替換,因此用戶傳入模塊名里面有有..目錄都會被替換掉了。

               2.構造拼接file名稱,有前面目錄限制,有后面擴展名限制,包含文件就會限制在該目錄了

      • 這段代碼真的做到了目錄安全檢測嗎?

      我們來測試下,如果$mod傳入這個值將會是什么樣的結果。

      image

      $mod 通過構造輸?mod=…%2F…%2F…%2F…%2Fetc%2Fpasswd%00 ,我們看結果將是:

      image

      居然include(“/etc/passwd”)文件了。

      • 怎么逃脫了我參數限制呢?

       

        首先:做參數過濾類型去限制用戶輸入本來就不是一個好方法,一般規則是:能夠做檢測的,不要做替換 只要是檢測不通過的,直接pass 掉!這是我們的一個原則。過濾失敗情況,舉不勝舉,我們來看看,實際過程。

      1、輸入”…/…/…/” 通過把”..” 替換為”.”后

      2、結果是”../../../” 就變成了這個了

      有朋友就會說,如果我直接替換為空格是不是就好了?在這個里面確實可以替換掉。但是不代表以后你都替換為空格就好了。再舉例子下。如:有人將字符串里面javascript替換掉。代碼如下:

      ……

      $msg = str_replace(“javascript”,””,$msg);

      看似不會出現了javascript了,但是,如果輸入:jjavascriptavascript 替換,會替換掉中間一個變為空后。前面的”j” 跟后面的會組成一個新的javascript了。

        其次:我們看看,怎么逃脫了,后面的.php 限制呢。用戶輸入的參數有:”etc/passwd

      分享:網站模板:web上存漏洞及原理分析、防范方法
      網站提供上存功能,是很多站點經常會有功能,商城,論壇還有常見一些網盤站點。常見互聯網上面,我們也是經常聽說,某某站點出現上存漏洞,某某開源項目有 上存漏洞。 從互聯網開始出現動態程序,上存漏洞像幽靈一樣,頻繁的出現在各種系統中。為什么,一個上存漏洞會

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-07-01
      相關PHP教程