0x01 文件上传漏洞简介php
为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另外一扇门。即使如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,由于它有助于提升业务效率。企业支持门户,给用户各企业员工有效地共享文件。容许用户上传图片,视频,头像和许多其余类型的文件。向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,得到到一个特定网站的权限,或危及服务器的可能性是很是高的。上传文件自己没有错,问题与漏洞在于服务器怎么处理上传的文件。html
0x02 上传漏洞的危害nginx
这个漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞能够直接获得WEBSHELL,危害等级超级高,如今的入侵中上传漏洞也是常见的漏洞。编程
0x03 上传漏洞成因安全
上传文件的时候,若是服务器脚本语言,未对上传的文件进行严格的验证和过滤,就容易形成上传任意文件,包括上传脚本文件。若是是正常的PHP文件,对服务器则没有任何危害。PHP能够像其余的编程语言同样,能够查看目录下的文件,查看文件中的吗内容,能够执行系统命令等。上传文件的时候,若是服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的PHP文件,从而控制整个网站,甚至是服务器。服务器
0x04 上传漏洞原理编程语言
index.html: post
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