突破上傳之檔案包含漏洞以及修復方案
1.檔案包含功能概述
對一個簡單的 PHP 小程式來說,在不同的 PHP 指令碼之間剪下或複製某一函式不是大問題, 但是當進入專案開發時,函式的數量將會變得相當龐大,並且函式具有較強的複雜性,這時你就會把它們儲存到一個便於隨時呼叫的函式庫中,以便於該函式在整個專案中可以隨時被呼叫。通常情況下這個函式庫是一個檔案,我們稱為程式碼庫。當為特定領域的功能編寫函式時,希望通過把自定義的這些函式組織到一起,並存放到 單獨的程式碼檔案中。當團隊開發專案時,如果有統一的通用函式檔案,則將大幅縮短專案的開發週期,並使 得專案的層次結構分明。
2.常見包含語句
include() 只有程式碼執行到include()語句時才將檔案包含進來,發生錯誤時只給出一個警告,向下執行
require() 程式一執行立即呼叫檔案,如果發生錯誤,語句會輸出錯誤資訊,並終止指令碼的執行。
include_once() 當重複呼叫同一檔案時,程式只能呼叫一次。
require_once()同上
3.本地和遠端包含
waf能夠攔截我們上傳的帶有危險函式的php檔案,所以我們需要將其改為其他格式上傳,比如txt,jpg
txt的小馬
php的包含檔案
一個可以建立新小馬的.txt
通過包含檔案的名字將txt檔案執行為php
菜刀可連
將自動建立木馬php的txt檔案以php執行
多出來的小馬php
在攻擊端的伺服器內放入txt的小馬
遠端包含txt檔案,192.168.1.153是攻擊機
菜刀可連
通過協議漏洞直接新建小馬檔案
2.關於修復方案
相對於直接關閉遠端包含引數開關,徹底切斷這個業務相比較。
目前業內最好的修復方案即是設定類似白名單的方法,通過篩選固定檔名方法,一方面不必切斷這個業務,另一方面又不會被輕易繞過
程式碼如下:
<?php
2. $file = $_GET['file'];
3.
4. //Whitelisting possible values
5. switch ($file) {
6. case 'main':
7. case 'foo':
8. case 'bar':
9. include '/home/wwwroot/default/' .$file .'.php';//已知的敏感檔案路徑
10. break;
11.
12. default:
13. include '/home/wwwroot/default/index.php';
14.}
15.?>
不滿足已知的檔案的名字就不能夠執行遠端包含
相關文章
- 網站漏洞修復之Metinfo 檔案上傳漏洞網站
- 任意檔案上傳漏洞修復
- 檔案包含漏洞(本地包含配合檔案上傳)
- TomcatAJP檔案包含漏洞及線上修復漏洞Tomcat
- 24:WEB漏洞-檔案上傳之WAF繞過及安全修復Web
- 網站漏洞修復 上傳webshell漏洞修補網站Webshell
- 網站漏洞測試 檔案上傳漏洞的安全滲透與修復網站
- 檔案上傳漏洞
- Web 安全漏洞之檔案上傳Web
- PHP檔案包含漏洞(利用phpinfo)復現PHP
- PHP檔案上傳漏洞原理以及防禦姿勢PHP
- WEB漏洞——檔案上傳Web
- 漏洞重溫之檔案上傳(總結)
- 什麼是檔案包含漏洞?檔案包含漏洞分類!
- 檔案包含漏洞示例
- 檔案上傳之解析漏洞編輯器安全
- Web安全-檔案上傳漏洞Web
- 淺析檔案上傳漏洞
- WEB安全:檔案上傳漏洞Web
- phpStudy poc漏洞復現以及漏洞修復辦法PHP
- 怎麼修復網站漏洞騎士cms的漏洞修復方案網站
- 檔案包含漏洞小結
- [web安全] 檔案包含漏洞Web
- 程式碼注入漏洞以及修復方法
- <web滲透-檔案上傳漏洞>Web
- 檔案上傳(解析)漏洞詳解
- 檔案上傳漏洞總結(全)
- 檔案上傳漏洞思路詳解
- 網站漏洞修復之圖片驗證碼的詳細修復方案網站
- "白話"PHP檔案包含漏洞PHP
- 檔案上傳漏洞(繞過姿勢)
- 解析漏洞與檔案上傳漏洞—一對好兄弟
- 3. 檔案上傳漏洞——漏洞總結筆記筆記
- Ajax 之檔案上傳
- PHP漏洞全解————10、PHP檔案包含漏洞PHP
- 檔案上傳漏洞防範-檔案型別檢測型別
- struts2架構網站漏洞修復詳情與利用漏洞修復方案架構網站
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點