【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()
?>

然后我们在本地搭建网站上传测试一下:

【Web安全】文件上传漏洞原理分析_第1张图片

 

上传成功,我们来打开我们上传的文件

【Web安全】文件上传漏洞原理分析_第2张图片

成功打开我们的文件,这时再查看我们的网站根目录:

 

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

 

转载于:https://www.cnblogs.com/superye/p/7278924.html

你可能感兴趣的:(web安全,php,运维)