已解决
文件上传漏洞(1), 文件上传绕过原理
来自网友在路上 160860提问 提问时间:2023-10-25 20:52:42阅读次数: 60
最佳答案 问答题库608位专家为你答疑解惑
文件上传漏洞
一, 前端校验上传文件
添加 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.phpvar 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对文件类型做了限制, 那么将需要执行的php文件后缀名修改为jpg, 先绕过js检查, 提交请求后用burp suite捕获.
在burpsuite中修改提交的数据, 将 filename 参数中的文件扩展名改回php再发送.
文件上传成功后, 通过前端工具查找上传的文件路径, 比如头像的url路径, 然后访问执行代码:
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
$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
查看全文
99%的人还看了
相似问题
- Docker篇之利用docker搭建ftp服务器可实现多用户上传
- 【Vue3】解决Vue打包后上传服务器 资源路径加载错误
- 推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
- git 将本地已有的一个项目上传到新建的git仓库的方法
- 微信小程序发货信息录入接口 错误上传时间非法,请按照 RFC 3339 格式填写?
- 如何防止研发把代码上传到私人gitee/github?
- 中间件安全:Apache Tomcat 文件上传.(CVE-2017-12615)
- git下载安装配置及Git在Gitee上拉取和上传代码教程
- 文件上传漏洞(CVE-2022-23043)
- react 手机端 rc-table列隐藏(根据相关条件是否隐藏)、实现图片上传操作
猜你感兴趣
版权申明
本文"文件上传漏洞(1), 文件上传绕过原理":http://eshow365.cn/6-24467-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!