文件上傳漏洞
一, 前端校驗上傳文件
添加 Javascript 代碼,然后在 form 表單中 添加 onsubmit="returb checkFile()"
<script>
function checkFile() {
// var file = document.getElementsByName('photo')[0].value;
var file = document.getElementById('photo').value;
if (file == null || file == "") {
alert("請選擇要上傳的文件!");
return false;
}
//定義允許上傳的文件類型
var allow_ext = ".jpg|.png|.gif";
//提取上傳文件的類型 xxx.yyy.shell.php
var ext_name = file.substring(file.lastIndexOf("."));
//判斷上傳文件類型是否允許上傳
if (allow_ext.indexOf(ext_name) == -1) {
var errMsg = "該文件不允許上傳,請上傳" + allow_ext + "類型的文件,當前文件類型為:" + ext_name;
alert(errMsg);
return false;
}
}
</script>
<!-- 上傳附件,必須要加上 enctype="multipart/form-data" 屬性 -->
<form action="reg.php" method="POST" enctype="multipart/form-data" onsubmit="return checkFile()">
<tr>
<td width="40%">用戶名:</td>
<td width="60%"><input type="text" id="username" name="username" /></td>
</tr>
<tr>
<td>密 碼:</td>
<td><input type="password" id="password" name="password"/></td>
</tr>
<tr>
<td>頭 像:</td>
<td><input type="file" name="photo" id="photo"></td>
</tr>
<tr>
<td colspan="2"><button type="submit">注冊</button></td>
</tr>
</form>
繞過前端:
1. 在瀏覽器設置中禁用js
通常不建議使用這種方式, 因為前端js中可能存在很多其他js的功能, 例如ajax請求.
2. 用burpsuite等工具修改請求.
因為前端js對文件類型做了限制, 那么將需要執(zhí)行的php文件后綴名修改為jpg, 先繞過js檢查, 提交請求后用burp suite捕獲.
在burpsuite中修改提交的數(shù)據, 將 filename 參數(shù)中的文件擴展名改回php再發(fā)送.
文件上傳成功后, 通過前端工具查找上傳的文件路徑, 比如頭像的url路徑, 然后訪問執(zhí)行代碼:
http://192.168.112.200/security/upload/20231025_172754.php?cmd=phpinfo();
二, 后端校驗上傳文件
前端有可能通過burp suite等工具繞過. 后端對提交過來的文件類型進行限制.
判斷文件后綴名
// 不允許上傳的文件的后綴名是.php
$fileName = $_FILES['photo']['name']; // 獲取文件的原始文件名
$extName = end(explode(".", $fileName));
if ($extName == 'php') {
die("invalid-file");
}
判斷 Content-Type文章來源:http://www.zghlxwxcb.cn/news/detail-719037.html
$fileType = $_FILES["photo"]["type"];
if ($fileType != 'image/jpeg' && $fileType != 'image/png' && $fileType != 'image/gif') {
die("invalid-file");
}
繞過后端:
1. 嘗試大小寫繞過, 例如修改請求信息filename="mm.php"
修改為 mm.PhP
2. 使用burpsuite修改Content-type文章來源地址http://www.zghlxwxcb.cn/news/detail-719037.html
到了這里,關于文件上傳漏洞(1), 文件上傳繞過原理的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!