ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

漏洞复现篇——文件上传之js绕过

2021-06-18 14:56:25  阅读:185  来源: 互联网

标签:FILES 文件 name upload js 复现 file 上传


漏洞说明:
Web应用系统虽然对用户上传的文件进行了校验,但是校验是通过前端javascript代码完成的。由于恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件,就会导致基于js的校验很容易被绕过。

实验环境:

  • 火狐浏览器
  • PHPstudy
  • Burp Suite抓包软件
  • upload-labs-master上传漏洞靶场
  • 文件上传的页面,需要前端和后端两个文件,如下:

index.html文件

<<!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
</head>
<body>
<form action="fileupload.php" onsubmit="checkupload();" method="POST" enctype="multipart/form-data">
	<input type="file" name="uploadfile">
	<input type="submit">
</form>

<script type="text/javascript">
	function checkupload() {
		var filetag = document.getElementById("uploadfile");
		var filename = filetag.value;
		// alert(filename)
		var lastpos = filename.lastIndexof(".")+1;
		// alert(lastpos);
		var ext = filename.substring(lastpos);
		// alert(ext);
		if (ext != "jpg") {
			alert("文件类型错误,上传失败");
			return false; 
		}
	}
</script>
</body>
</html>

fileupload.php文件

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
  
 if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
?>

首先判断是否存在前端js绕过漏洞

按F12打开调试面板,选择网络,然后上传非图片文件,如果网络中没有数据变化说明存在js漏洞,如果有变化说明不存在。
在这里插入图片描述

绕过方法一:删除或者禁用js

在输入框中输入about:config点击接受
在这里插入图片描述
在搜索框中输入java然后找到javascript.enabled选项双击,出现false
在这里插入图片描述
回到upload-labs-master选择第一关上传html文件
在这里插入图片描述
上传成功
在这里插入图片描述

绕过方法二:使用代理上传文件,比如Burp Suite

在桌面创建1.php文件,写入一句话***保存,然后将后缀名改为jpg
在这里插入图片描述
点击浏览选中创建好的jpg文件
在这里插入图片描述
然后点击上传,效果如下上传成功
在这里插入图片描述
使用Burp Suite抓包
在这里插入图片描述
将文件格式改成php文件,点击Forward发送数据包

在这里插入图片描述
查看C:\phpStudy\PHPTutorial\WWW\upload-labs-master下的upload文件夹,出现1.php文件上传成功。

在这里插入图片描述

标签:FILES,文件,name,upload,js,复现,file,上传
来源: https://blog.51cto.com/u_15274949/2922452

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有