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