本日的课程是关于“文件上传漏洞”,据安界网的老师先容,文件上传漏洞仅次于命令实行危害,也是比较大的漏洞。

文件上传漏洞简介:

文件上传漏洞一样平常会涌如今有上传功能的网站中。

如果一个网站对用户上传的文件没有过滤掌握,或者上传功能处存在毛病,攻击者就可以利用这个漏洞来上传木马,也便是昨天名词先容里面的Webshell。

php上传过滤黑客入门实践若何绕过前端过滤上传文件 Docker

以是总而言之,文件上传漏洞形成的紧张缘故原由便是没有对上传的文件进行严格的判断考验(如是不是正常的文件上传,而非恶意文件上传),导致攻击者可以上传shell。

它的危害也正如最开始所先容,文件上传漏洞可能会造成网站被修改、挟制,做事器被远程掌握,数据库被打包(俗称脱裤)等等。

其次文件上传漏洞的利用办法紧张分为前端绕过利用、文件名过滤绕过利用、文件头过滤绕过、特性上传漏洞(.htaccess、.user.ini)、文件截断上传、竞争条件文件上传等。

本日老师所讲的便是个中最大略的第一类,前端过滤绕过上传。

前端JS过滤绕过示例代码(靶场源码,可以保存为php文件,自己考试测验攻击):

<?php

if (isset($_POST['submit'])) {

if (file_exists(UPLOAD_PATH)) {

$temp_file = $_FILES['upload_file']['tmp_name'];

$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'];

if (move_uploaded_file($temp_file, $img_path)){

$is_upload = true;

} else {

$msg = '上传出错!
';

}

} else {

$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!
';

}

}

?>

<div id="upload_panel">

<ol> <li>

<h3>前端JS绕过练习/h3>

<form enctype="multipart/form-data" method="post" onsubmit="return checkFile()">

<p>请选择要上传的图片:<p>

<input class="input_file" type="file" name="upload_file"/>

<input class="button" type="submit" name="submit" value="上传"/>

</form>

<div id="msg">

<?php

if($msg != null){

echo "提示:".$msg;

}

?>

</div>

<div id="img">

<?php

if($is_upload){

echo '<img src="'.$img_path.'" width="250px"/>';

}

?>

</div>

</li>

</ol>

</div>

<script type="text/javascript">

function checkFile() {

var file = document.getElementsByName('upload_file')[0].value;

if (file == null || file == "") {

alert("请选择要上传的文件!");

return false;

}

//定义许可上传的文件类型

var allow_ext = ".jpg|.png|.gif";

//提取上传文件的类型

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>

第一次看肯定是看的不是很明白,这么一长串实在紧张的是末了一段<script>......</script>中的内容,<script>标签中的内容便是Javascript脚本,在本例中进行判断文件的类型(根据后缀即拓展名)是否是".jpg|.png|.gif";中的一个,如果不是就不许可上传。

那对付前端JS验证怎么样去绕过呢?

1.通过抓包工具绕过(以Burp为例)

事理:JS代码的验证是在前端进行的,我们可以先将木马的后缀改为.jpg等符合上传哀求的类型,这样子就可以通过前真个JS验证,然后再通过BUrp抓包拦截数据,将拓展名后缀改成.php,由于后端没有再进行二次验证,以是就可以成功的上传一个后缀为.php的木马文件了。

Step1.准备图片木马(后缀为.jpg等图片格式,内容为PHP一句话木马)

Step2.浏览器挂上Burp的代理,准备开始

Step3.上传包含一句话木马的图片

Step4.Burp拦截数据,并将红标处的后缀改成.php

Step5.成功上传,得到shell地址

2.直接修正前端JS验证代码上传绕过

前真个JS代码是可以被进行修正的。
以是可以通过一些工具(如FireBug)对JS文件进行删除、修正即可绕过,达到上传目的。

大家可以自己去用课上的靶场代码,亲自搭建一下试试。
如果你在过程中有什么疑问,或碰着其他一些网络安全的问题,可以私信安仔,安仔会尽快回答的,末了祝大家每天都有新进步!

欢迎大家点击关注我的头条号,0根本节制更多黑客秘籍

私信回答‘’资料‘’领取更多技能文章和学习资料,加入专属的安全学习圈一起进步

安界贯彻人才培养理念,结合专业研发团队,打造课程内容体系,推进实训平台发展,通过一站式发展操持、推举就业以及陪护辅导的师带徒做事,为学员的连续学习和职业发展保驾护航,真正实现和完善网络安全精英的教练场平台;

想实现进高企、就高职、拿高薪,微信关注“安界网”,发送“福利”,获取更多安全福利课程。

纵然低学历也可实现职业发展中的第一个“弯道超车”!
赶紧私信我!
等你来!