Web安全文件上传漏洞原理分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web安全文件上传漏洞原理分析相关的知识,希望对你有一定的参考价值。
0x01 文件上传漏洞简介
为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另一扇门。即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率。企业支持门户,给用户各企业员工有效地共享文件。允许用户上传图片,视频,头像和许多其他类型的文件。向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的。上传文件本身没有错,问题与漏洞在于服务器怎么处理上传的文件。
0x02 上传漏洞的危害
这个漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。
0x03 上传漏洞成因
上传文件的时候,如果服务器脚本语言,未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件,包括上传脚本文件。如果是正常的php文件,对服务器则没有任何危害。PHP可以像其他的编程语言一样,可以查看目录下的文件,查看文件中的吗内容,可以执行系统命令等。上传文件的时候,如果服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的PHP文件,从而控制整个网站,甚至是服务器。
0x04 上传漏洞原理
index.html:
1 <html>
2 <head>
3 <meta charset="utf-8">
4 <title>文件上传漏洞 - 烨</title>
5 </head>
6 <body>
7 <center>
8 <h2>文件上传漏洞</h2>
9 <p>2017.7.30 By.烨</p>
10 <p>
11 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。<br>
12 这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。<br>
13 如果服务器的处理逻辑做的不够安全,则会导致严重的后果。<br>
14 </p>
15 <hr>
16 <h2>漏洞演示</h2>
17 <form action="upload.php" method="post" onsubmit="checkFile()" enctype="multipart/form-data">
18 <input type="file" name="file" id="file">
19 <input type="submit" value="上传文件" name="submit">
20 </form>
21 </center>
22 </body>
23 </html>
upload.php:
1 <?php
2 error_reporting(0); //抑制所有错误信息
3 @header("content-Type: text/html; charset=utf-8"); //语言强制
4 ob_start();
5
6 if(isset($_POST["submit"])){
7 $name = $_FILE[‘file‘][‘name‘];
8 $name = md5(date(‘Y-m-d h:m:s‘)).strrchr($name,".");//上传文件重命名
9 $size = $_FILES[‘file‘][‘size‘];
10 $tmp = $_FILES[‘file‘][‘tmp_name‘];
11 move_uploaded_file($tmp,$name);
12 echo "文件上传成功!path:".$name;
13 }
14 ?>
我们提前准备一个上传的文件 1.php
1.php的源码如下:
<?php
phpinfo()
?>
然后我们在本地搭建网站上传测试一下:
上传成功,我们来打开我们上传的文件
成功打开我们的文件,这时再查看我们的网站根目录:
0x05 解析漏洞
接下来为大家列举一些比较常用的解析漏洞:
nginx解析漏洞:
http://www.xxxx.com/1.jpg/a.php
http://www.xxxx.com/1.jpg%00.php
IIS7.0/7.5解析漏洞:
http://www.xxxx.com/UploadFiles/image/1.jpg/.php
IIS6.0解析漏洞:
http://www.xxxx.com/UploadFiles/image/1.jpg;x.php
Apache解析漏洞:
http://www.xxxx.com/test.php.x1.x2.x3
以上是关于Web安全文件上传漏洞原理分析的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段