今天开始,我们就要开始学习具体的漏洞了,但是希望大家学完后,不要轻易"入侵"网站哦,当时测试环境下除外。
今天的课程是关于“文件上传漏洞”,据安界网的老师介绍,文件上传漏洞仅次于命令执行危害,也是比较大的漏洞。
文件上传漏洞简介:
文件上传漏洞一般会出现在有上传功能的网站中。
如果一个网站对用户上传的文件没有过滤控制,或者上传功能处存在缺陷,攻击者就可以利用这个漏洞来上传木马,也就是昨天名词介绍里面的Webshell。
所以总而言之,文件上传漏洞形成的主要原因就是没有对上传的文件进行严格的判断检验(如是不是正常的文件上传,而非恶意文件上传),导致攻击者可以上传shell。
它的危害也正如最开始所介绍,文件上传漏洞可能会造成网站被篡改、劫持,服务器被远程控制,数据库被打包(俗称脱裤)等等。
其次文件上传漏洞的利用方式主要分为前端绕过利用、文件名过滤绕过利用、文件头过滤绕过、特性上传漏洞(.htaccess、.user.ini)、文件截断上传、竞争条件文件上传等。
今天老师所讲的就是其中最简单的第一类,前端过滤绕过上传。
前端JS过滤绕过示例代码(靶场源码,可以保存为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 . '文件夹不存在,请手工创建!';
}
}
?>
前端JS绕过练习/h3>
if($msg != null){
echo "提示:".$msg;
}
?>
if($is_upload){
echo '
';
}
?>
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;
}
}
第一次看肯定是看的不是很明白,这么一长串其实主要的是最后一段中的内容,