一、文件上傳漏洞
1、文件上傳檢測:
????(1)js檢測(前端校驗):查看源碼!禁用js或burp抓包修改
????(2)mime類型檢測: 是描述消息內(nèi)容類型的因特網(wǎng)標(biāo)準(zhǔn)。
-
Content-Type(如下):
Content-Type.jpeg 測試方式
上傳正常的文件繞過方法
上傳正常的文件,然后burp抓包修改文件內(nèi)容
上傳惡意的文件,然后burp抓包修改MIME類型
????(3)文件后綴名檢測:黑名單或者白名單
- 黑名單檢測?
????上傳文件合法性校驗使用黑名單的方式,判斷上傳文件后綴,由于黑名單不全被攻擊者繞過導(dǎo)致上傳漏洞。
黑名單(繞過):內(nèi)置解析配置、服務(wù)器特殊配置
服務(wù)器特殊配置
如果在Apache中.htaccess的配置有效。且可被上傳。
那可以嘗試在.htaccess中寫入:
<FilesMatch “sec.jpg”>
SetHandler application/x-httpd-php
</FilesMatch>
sec.jpg 即可以php腳本解析
- 白名單(解析漏洞:中間件 先判斷服務(wù)器中間件)
????(4)內(nèi)容檢測
二、文件包含漏洞
1、原理:php文件包含函數(shù)(四個)過濾不嚴(yán):require、require_once、include、include_once。
include和require區(qū)別主要是,include在包含的過程中如果出現(xiàn)錯誤,會拋出一個警告,程序繼續(xù)正常運行;而require函數(shù)出現(xiàn)錯誤的時候,會直接報錯并退出程序的執(zhí)行。
2、文件包含漏洞的常見使用方法
1)php包含上傳文件
<?php
$file = $_GET['page'];
include $file;
?>
url?page=../../file.txt
2)php包含讀文件
- 將php源碼以base64編碼的形式讀出來
http://192.168.5.79/index.php?url=php://filter/read=convert.base64-encode/resource=flag
3)php包含寫文件
要是想利用包含寫文件,必須開啟PHP的url_allow_include遠(yuǎn)程URL功能,但是這個功能經(jīng)過測試在5.3.0的時候已經(jīng)用不了了,5.4.0直接廢除了,因此在PHP 5.3.0一下版本才能實現(xiàn)。
url?page=php://input
post提交我們要執(zhí)行的代碼
4)php包含日志
5)截斷包含
當(dāng)PHP源碼對于文件包含做出一定過濾的時候:
<?php
if(isset($_GET['page'])){
include $_GET['page'].'.php';
}else{
include 'index.php';
}
?>
可以利用%00截斷來繞過過濾
6)其他繞過
目錄跳轉(zhuǎn)的過濾我們可以構(gòu)造….//….//xxx.php,方式繞過,由于他只過濾一次,我們可以利用他的過濾動態(tài)拼接目錄跳轉(zhuǎn),從而繞過過濾。
