1. 程式人生 > 其它 >核心記憶體錯誤檢測工具KFENCE

核心記憶體錯誤檢測工具KFENCE

檔案上傳 目的:獲取webshell 一句話木馬 <?php @eval($_POST['cmd']); phpinfo(); ?> 檔案上傳流程 客戶端:選擇傳送檔案->伺服器接受->網站程式判斷->臨時檔案->移動到指定程式 伺服器端:接收到資源程式 網站常用字尾名,網站都會當成php去執行 php php3 php5 phtml asp asa cdx cer aspx ashx shtml 過濾字尾時: 1.雙寫繞過:pphphp 2.大小寫繞過:pHP(windows系統) 以uploadlab靶場為例 uploadlab/Pass-01 防禦:前端做限制,只能上傳jgp,png,gif檔案 1.在前端用要求的格式(jpg等)上傳,抓包後修改後綴為php 2.在前端找到圖片位置 http://192.168.223.132/uploadlab/upload/test.php
3.用蟻劍或者中國菜刀連線,密碼就是POST傳進去的cmd PS:這裡其實GET型也可以,但是phpinfo()資料較大,可能GET會傳回來空 uploadlab/Pass-02 防禦:MIME後端驗證,沒有前端彈窗 MIME:多功能Internet郵件擴充套件,為了在傳送文字檔案時附加多媒體資料,讓郵件客戶程式能根據其型別進行處理,在HTML中通過Content-type來判定 方法:抓包,通過修改Content-type頭為 image/jpeg 進行繞過 uploadlab/Pass-03 防禦:過濾asp,aspx,php,jsp字尾的,並且大寫轉為小寫,$DATA 方法:用php5作為字尾進行上傳 PS:如果上傳成功但是返回空,就修改php配置檔案http.conf,把其中的 #AddType application/x-httpd-php .php .phtml 改為AddType application/x-httpd-php .php5 .phtml,使可以把php5檔案phtml的檔案都當作php檔案去解析 uploadlab/Pass-04 防禦:過濾所有的字尾,並且大小寫轉換,$DATA 方法:通過.htaccess配置檔案進行上傳,建立一個.htacess的txt檔案,裡面程式碼的意思是將1.jpg按照php的格式去執行,上傳時先上傳.htacess檔案,再上傳1.jpg .htaccess:.htaccess是一個純文字檔案,裡面存放著Apache伺服器相關的一些指令,類似於Apache的站點配置檔案,只支援本目錄(/upload)可以訪問控制,url規則等 <Files "1.jpg">
SetHandler application/x-httpd-php </Files> uploadlab/Pass-05 防禦:過濾字尾,.htaccess方法,$DATA 方法:用窮舉的方法,只過濾了部分字尾,還有一些字尾通過大小寫轉換可以繞過,如.Php5 實戰:抓包後,可以通過爆破,將所有可能的字尾,大小寫轉換,.htaccess全部放入字典,並對字尾爆破 uploadlab/Pass-06 防禦:過濾字尾,.htaccess方法,以及轉換成小寫,$DATA 方法:抓包後,在後綴後面新增空格即可,如"1.php " 原理:讀取檔案字尾是從右往左讀取的,如果遇到空格會停下,從而達到繞過的目的,也叫"00截斷",但是如果訪問檔案的時候,windows不會解析空格 00截斷:在GET型中可以直接用%00或者空格新增到字尾,但是如果是POST型,不會被URL解碼,只能通過Burp修改hex值為00或者將%00進行解碼,即空 uploadlab/Pass-07 防禦:過濾字尾,.htaccess方法,轉換成小寫,首位去空,$DATA 方法:在php後面加點,變成"1.php." 原理:後端過濾不嚴格,利用windows特性,解析時自動去掉字尾最後的".",訪問或者蟻劍連線時"."不影響 uploadlab/Pass-08 防禦:過濾字尾,.htaccess方法,轉換成小寫,首位去空,刪除末尾的點 方法:使用::$DATA連線,即上傳檔案1.php::$DATA,但是直接訪問時需要刪掉::$DATA 原理:在windows的時候如果檔名+"::$DATA"會把::$DATA之後的資料當成檔案流處理,不會檢測字尾名,且保持::$DATA之前的檔名,他的目的就是不檢查字尾名,例如:"phpinfo.php::$DATA"Windows會自動去掉末尾的::$DATA變成"phpinfo.php" uploadlab/Pass-09 防禦:過濾字尾,.htaccess方法,轉換成小寫,首位去空,刪除末尾的點,以及::$DATA 方法:雙寫點和空格繞過,如:"1.php. ." 原理:通過抓包後的看到後端的過濾,可以發現是先去除點,再去除空,只去除一次,所以我們再加一個點,就可以繞過, uploadlab/Pass-10 防禦:過濾敏感詞彙 方法:發現過濾敏感,如php等,會被直接刪掉,所以反覆嘗試雙寫繞過,可以用"1.pphphp"進行繞過 uploadlab/Pass-11 防禦:在後端對檔案上傳的型別進行限制 方法:通過抓包發現可以修改儲存路徑,所以先修改檔案型別為jpg格式,但把儲存路徑設定為1.php,發現還是不行,就在後面用%00進行繞過,得到儲存路徑 uploadlab/Pass-12 防禦:在後端對檔案上傳的型別進行限制 方法:和Pass-11一樣修改jpg,修改儲存路徑為1.php%00,但是發現不行,原因是11是GET傳參,但是POST傳參不會編碼URL,所以需要將%00解碼,即空