天天看點

檔案上傳漏洞——漏洞解析彙總

1、.htaccess檔案突破上傳

  • 該方法使用的前提:
  • 沒有禁止.htaccess檔案的上傳,且服務商允許使用者使用自定義.htaccess檔案。
  • 原理:
  • .htaccess檔案(或者"分布式配置檔案"),全稱是Hypertext Access(超文本入口)。提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的檔案, 以作用于此目錄及其所有子目錄。作為使用者,所能使用的指令受到限制。管理者可以通過Apache的AllowOverride指令來設定。
  • 不足:
  • 雖然好用,但是會誤傷其他正常檔案,容易被發現。

2、 apache 1.X 2.X解析漏洞(wamp2.0)

  • 漏洞原理:
  • Apache 解析檔案的規則是從右到左開始判斷解析,如果字尾名為不可識别檔案解析,就再往左判斷。比如 test.php.a.b的“.a”和”.b” 這兩種字尾是apache不可識别解析,apache就會把test.php.a.b解析成test.php。
  • 不足:
  • 1、如果在 Apache 的 conf 裡有這樣一行配置 AddHandler php5-script .php 這時隻要檔案名裡包含.php. 即使檔案名是 test2.php.jpg 也會以 php 來執行。
  • 2、如果在 Apache 的 conf 裡有這樣一行配置 AddType application/x-httpd-php .jpg 即使擴充名是 jpg,一樣能以 php 方式執行。

3、iis6.0解析漏洞

  • 目錄解析:
  • 形式:www.xxx.com/xx.asp/xx.jpg
  • 原理: 伺服器預設會把xx.asp目錄下的檔案都解析成asp檔案。
  • 檔案解析:
  • 形式:www.xxx.com/xx.asp;.jpg
  • 原理:伺服器預設不解析;号後面的内容,是以xx.asp;.jpg便被解析成asp檔案了。

4、IIS 7.0/IIS 7.5/Nginx <=0.8.37

  • 漏洞原理:
  • Nginx拿到檔案路徑(更專業的說法是URI)/test.jpg/test.php後,一看字尾是.php,便認為該檔案是php檔案,轉交給php去處理。
  • php一看/test.jpg/test.php不存在,便删去最後的/test.php,又看/test.jpg存在,便把/test.jpg當成要執行的檔案了,又因為字尾為.jpg,php認為這不是php檔案,于是傳回“Access denied.”
  • 注意:
  • 這其中涉及到php的一個選項:cgi.fix_pathinfo,該值預設為1,表示開啟。開啟這一選項PHP可以對檔案路徑進行“修理”。
  • 舉個例子,當php遇到檔案路徑“/1.jpg/2.txt/3.php”時,若“/1.jpg/2.txt/3.php”不存在,則會去掉最後的“/3.php”,然後判斷“/1.jpg/2.txt”是否存在,若存在,則把“/1.jpg/2.txt”當做檔案“/1.jpg/2.txt/3.php”,若“/1.jpg/2.txt”仍不存在,則繼續去掉“/2.txt”,以此類推。

5、編輯器解析漏洞

  • 線上web編輯器,也叫做富文本 編輯器。
  • 富文本編輯器,Rich Text Editor, 簡稱 RTE, 是一種可内嵌于浏覽器,所見即所得的文本編輯器。
  • 富文本編輯器不同于文本編輯器,程式員可到網上下載下傳免費的富文本編輯器内嵌于自己的網站或程式裡(當然付費的功能會更強大些),友善使用者編輯文章或資訊。比較好的文本編輯器有kindeditor,fckeditor,ewebeditor等。
  • 這樣的程式,能夠在網站上寫文檔的時候,就像使用word一樣,豐富多彩,且不需要寫文檔的人懂html代碼。
  • 但正是由于這種富文本編輯器,帶有word的功能,圖檔顯示(它的圖檔顯示相當于word的外部連結圖檔的形式。word可以是外部連結顯示圖檔,就是一個word文檔,但是會有多個其他圖檔的檔案,也可以是嵌入word内部資料,是以隻有一個word文檔),是以就很有可能造成檔案上傳漏洞。