7、任意文件讀取與下載


7 任意文件讀取與下載

7.1 概念

      對用戶查看或下載的文件不做限制,就能夠查看或下載任意的文件,可能是源代碼文件、敏感文件等。

7.2 產生原因與危害

產生原因

      ·存讀取文件的函數

      ·讀取文件的路徑用戶可控,且未校驗或校驗不嚴

      ·輸出了文件內容

漏洞危害

      ·下載服務器任意文件。包含腳本代碼、系統敏感文件;

·可配合其他類型漏洞進一步攻擊

·進一步代碼審計,查找更多可利用代碼

任意文件讀取

<?php            

$filename=”test.txt”;

readfile($filename);

?>

<?php

$filename=”test.txt”;

Echo fiile_get_contents($filename);

?>

 

文件讀取函數:readfile()、file_get_contents()、fopen()中,$filename沒有經過校驗或者校驗不合格,用戶可控制變量讀取任意文件,如/etc/passwd、./index.php。

文件下載方式

      ·直接下載

      ·<a href=”http://www.a.com/ccc.rar”>下載</a>

 

 

在上述代碼中,$filename 沒有經過校驗,或者校驗不合格,用戶可以控制這個變量讀取

任意的文件,比如/etc/passwd、../index.php等等。這樣就造成了任意文件下載漏洞

 

7.3 挖掘與驗證

漏洞挖掘

      1.web漏洞掃描器(awvs、appscan、openvas、nessus)

      2.手動挖掘從連接和參數名查看

連接:readfile.php?file=**.txt、download.php?file=**.rar

參數名:&readpath=、&filepath=、&path=、&inputfile=、&url=、&data=、&readfile=、&menu=、META-INF= 、WEB-INF

漏洞驗證

      • Index.php?f=../../../../../../../../etc/passwd

• Index.php?f=../index.php

• Index.php?f=file:///etc/passwd

參數f的參數值為PHP文件時:

      1.文件被解析,則是文件包含漏洞

      2.顯示源代碼,則是文件查看漏洞

      3.提示下載,則是文件下載漏洞

7.4 漏洞修復方案

• 過濾 . 點,使用戶在url中不能回溯上級目錄

• 正則嚴格判斷用戶輸入的參數

• Php.ini配置open_basedir限定文件訪問范圍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM