任意文件下載漏洞


一丶漏洞原理

文件下載(一些網站由於業務需求,往往需要提供文件查看或文件下載功能,但若對用戶查看或下載的文件不做限制,則惡意用戶就能夠查看或下載任意敏感文件,這就是文件查看與下載漏洞。)

任意文件下載漏洞,正常的利用手段是下載服務器文件,如腳本代碼,服務器配置或者是系統配置等等。但是有的時候我們可能根本不知道網站所處的環境,以及網站的路徑,這時候我們只能利用./ ../來逐層猜測路徑,讓漏洞利用變得繁瑣。
此時如果 攻擊者提交的不是一個程序預期的的文件名,而是一個精心構造的路徑(如../../../etc/passwd),則很有可能會直接將該指定的文件下載下來。 從而導致后台敏感信息(密碼文件、源代碼等)被下載。
所以,在設計文件下載功能時,如果下載的目標文件是由前端傳進來的,則一定要對傳進來的文件進行安全考慮。 



如下代碼一個正常的網站,存在一個下載文件的功能,同時還會從瀏覽器接收文件名字,將存在任意文件下載漏洞。
<?php
    $filename = $_GET['filename'];
    echo '<h1>講開始下載文件!</h1><br /><br />';
    echo file_get_contents($filename);     //無過濾導致漏洞函數 file_get_contents 函數把整個文件讀入一個字符串中並輸出

    header('Content-Type: imgage/jpeg');
    header('Content-Disposition: attachment; filename='.$filename);
    header('Content-Lengh: '.filesize($filename));

?>

 

二丶漏洞發現

如何發現(網站URL中存在下載參數,並且未進行過濾../../../字符,且輸出了文件內容)
1.Google search
利用inurl:"readfile.php?file="

2.從鏈接上看,形如:
    • download.php?path=
    • download.php?file=
    • down.php?file=
    • data.php?file=
    • readfile.php?file=
    • read.php?filename=

3.從參數名看,形如:
    • &RealPath=
    • &FilePath=
    • &filepath=
    • &Filepath=
    • &Path=
    • &path=
    • &inputFile=
    • &Inputfile=
    • &url=
    • &urls=
    • &Lang=
    • &dis=
    • &data=
    • &Data=
    • &readfile=
    • &filep=
    • &src=
    • &menu=
    • META-INF
    • WEB-INF

4. index.php?f=../../../../../../etc/passwd

 index.php?f=../index.php

 index.php?f=file:///etc/passwd

 readfile.php?file=/etc/passwd
 
 readfile.php?file=../../../../../../../../etc/passwd

 readfile.php?file=../../../../../../../../etc/passwd%00(00截斷)

注:當參數f的參數值為php文件時,若是文件被解析則是文件包含漏洞,

    若顯示源碼或提示下載則是文件查看與下載漏洞

三丶漏洞繞過

 

1.若過濾字符或字母可嘗試編碼繞過

2.利用 ../../

but有些代碼會進行過濾(具體要根據代碼進行測試),會把 ../ 置空
利用....// 代替 ../
利用..// 代替 /

具體怎么繞過還是得看代碼是怎么寫的
3.

注意
①.注意 ../ 的數量,他代表查詢目錄父目錄的數量
②.當我們遇到一個任意文件下載漏洞時首先要注意下載的權限問題。因為權限決定我們能下載的文件范圍。
③.有些網站(主要是針對系統)並不會在URL里顯示給你看,這時候你需要抓包,從數據包里修改路徑,達到任意文件讀取。

 

四丶漏洞利用

利用:(信息收集信息>猜路徑 >>下載配置文件/代碼文件 >> 利用服務器軟件漏洞> shell> 提權)
1.任意文件下載漏洞的利用主要是為了信息收集,我們通過對服務器配置文件的下載,獲取到大量的配置信息、源碼,從而根據獲取的信息來進一步挖掘服務器漏洞從而入侵。

2.下載常規的配置文件,例如: ssh,weblogic,ftp,mysql等相關配置
下載各種.log文件,從中尋找一些后台地址,文件上傳點之類的地方,如果運氣好的話會獲得一些前輩們的后門。
下載web業務文件進行白盒審計,利用漏洞進一步攻入服務器

3.Windows:(windows的這些路徑不一定都存在)

    C:\boot.ini //查看系統版本

    C:\Windows\System32\inetsrv\MetaBase.xml          //IIS配置文件

    C:\Windows\repair\sam                                          //存儲系統初次安裝的密碼

    C:\Program Files\mysql\my.ini                               //Mysql配置

    C:\Program Files\mysql\data\mysql\user.MYD     //Mysql root

    C:\Windows\php.ini              //php配置信息

    C:\Windows\my.ini             //Mysql配置信息

    C:\Windows\win.ini             //Windows系統的一個基本系統配置文件

 
Linux:

    /root/.ssh/authorized_keys

    /root/.ssh/id_rsa

    /root/.ssh/id_ras.keystore

    /root/.ssh/known_hosts             //記錄每個訪問計算機用戶的公鑰

    /etc/passwd

    /etc/shadow

    /usr/local/app/php5/lib/php.ini                //PHP配置文件

    /etc/my.cnf                 //mysql配置文件

    /etc/httpd/conf/httpd.conf             //apache配置文件

    /root/.bash_history             //用戶歷史命令記錄文件

    /root/.mysql_history             //mysql歷史命令記錄文件

    /proc/mounts                 //記錄系統掛載設備

    /porc/config.gz                //內核配置文件

    /var/lib/mlocate/mlocate.db         //全文件路徑

    /porc/self/cmdline             //當前進程的cmdline參數

五丶漏洞防護

  • 過濾.(點),使用戶在url中不能回溯上級目錄
  • 正則嚴格判斷用戶輸入參數的格式
  • php.ini配置open_basedir限定文件訪問范圍

 


免責聲明!

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



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