<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 文件上傳漏洞 文件上傳功能在web應用系統很常見,比如很多網站注冊的時候需要上傳頭像、上傳附件等等。 當用戶點擊上傳按鈕后,后臺會對上傳的文件進行判斷,比如是否是指定的類型、后綴名、大小等等,然后將其按照設計的格式進行重命名后存儲在指定的目錄。 如果說后臺對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊者可能會上傳一些惡意的文件,比如一句話木馬,從而導致后臺服務器被webshell。 **工具推薦** BurpSuite工具+SwitchOmega瀏覽器插件 ### A 上傳漏洞存在的必要條件 1. 存在上傳點 2. 可以上傳動態文件 3. 上傳目錄有執行權限,并且上傳的文件可執行 4. 可訪問到上傳的動態文件 ### B 上傳檢測流程 ``` 1.前端提交 可能遇到JavaScript檢測、flash as檢測等 2.數據傳輸 可能遇到waf攔截、ips攔截等 3.后端處理 可能遇到擴展名檢測、文件格式檢測、mime ytpe檢測、內容檢測等 4.寫入文件系統 可能遇到文件重命名、殺毒軟件查殺等 5.訪問文件 可能遇到無執行權限、位置位置等 ``` ### C 客戶端檢測繞過 客戶端檢測一般只檢測文件擴展名,可通過對客戶端代碼的一些修改或攔截器修改報文即可繞過 #### 1 JavaScript檢測繞過 1. 查看onchange、onsubmit等事件 onchange事件會在與的內容改變時發生,如選擇文件 onsubmit會在確認按鈕點擊時發生 2. 刪除掉相關事件中的檢測函數 #### 2 提交報文修改檢測 這種方法在前端繞過中是通用的,無需理會具體前端的檢測代碼,直接繞過并提交 1. 將文件名改為符合要求的文件名后上傳 2. 通過bp截包后,進行改包或重放完成文件上傳 #### 3 APP端bp抓包 1. 將bp的代理端口監聽問“all interface” 2. 在手機wifi設置中將代理地址設置為bpip:8080 3. 訪問http://bpip:8080下載證書 4. 安卓將擴展名修改為.crt,然后設置-安裝-平局存儲-從SD卡安裝 5. ios直接按提示安裝完,進入設置-通用-關于本機-證書信任設置,添加信任 如果安卓app使用了證書校驗,可以配合xposed框架的JustTrustMe使用,ios沒辦法 如果使用mumu模擬器,需要用adb打開wifi設置 ``` adb connect 127.0.0.1:7555 adb shell am start -a android.settings.WIFI_SETTINGS ``` ### D 服務器檢測繞過 #### 1 mime類型檢測繞過 waf或代碼中,可能會檢測mime類型,只允許指定的幾種mime類型通過 好在mime類型是瀏覽器生產的,所以可以通過bp抓包后,修改mime類型來繞過此種檢測 常見的白名單mime type ``` image/jepg image/png text/plain application/zip application/msword ``` #### 2 簡單文件頭檢測繞過 文件頭是位于文件開頭的一段承擔一定任務的數據,一般在文件的開頭部分,如 gif的文件頭是`GIF89a`,`GIT87a` jepg的文件頭是`\xff\xd8\xff`(需轉碼) png的文件頭是`\x89PNG\x0d\x0a`(需轉碼) 這種檢測方法,可以通過在上傳的文件前最佳合法的文件頭進行繞過,如 `GIF89a<?php phpinfo();?>` #### 3 完整文件結構檢測 通過調用圖像函數(如getimagesize、imagecreatefromgif、imagecreatefrompng等)檢測文件是否是圖像,需要文件內容保持相對完整,所以無法通過加文件頭的方法繞過 針對這種,可以將圖片文件與與上傳文件合并的方式來繞過檢測,合并命令為copy,如 ``` copy /b a.gif+php.info upload_phpinfo.gif ``` #### 4 惡意文件內容檢測 如果服務器端的waf,會檢測提交的內容中是否包含webshell等數據時,前幾種方式就都不行了 常見的關鍵字為 ``` eval() base64_encode() assert() java.lang.Runtime java.lang.ProcessBuilder ``` 推薦使用強混淆的weevely進行嘗試,kali中自帶 https://github.com/sunge/Weevely 或者嘗試開源的webshell收集項目(要自己判斷是否掛馬) https://github.com/tennc/webshell #### 5 一些小技巧 1. 文件參數多filename屬性 如果waf攔截一些擴展名,可以通過抓包后,寫入過個filename屬性的方式來嘗試繞過 2. 目錄可控時,可以嘗試使用目錄穿越的方法 例如文件上傳到`\A\B\C`目錄,但是禁止訪問該路徑下的指定類型文件,那么可以嘗試截包,將上傳路徑改為`../../`的方式傳文件到`\A`下,如果代碼中存在穿越目錄的漏洞,就能成功 3. 擴展名檢測類型可控的情況,如 1 可以從后臺修改允許/禁止的擴展名類型(拿到后臺權限) 2 提交參數中存在允許/禁止的擴展名類型(改前端頁面代碼) 3 前端單獨抽出了文件擴展名進行了提交(截包) ### E 常見解析漏洞 #### 1 IIS/NGINX+php fastcgi取值錯誤解析漏洞 此漏洞屬于配置錯誤,不屬于軟件漏洞 開啟了`cgi.fix_pathinfo`,且未設置`security.limit_extensions`以限制可以執行的文件類型,那么當執行的文件不存在時,會繼續查找上一級文件是否存在,如 `abcde.jpp/.php`,找不到,就會向上查找`abcde.jpg.php` #### 2 nginx文件名邏輯漏洞(CVE-2013-4547) 影響版本:nginx 0.8.41~14.3/1.5.0~1.5.7 當上傳一個以空格(%20)結尾的文件,如“abcde.jpg ”,然后訪問的時候截包,將文件名改為`abcde.jpg%20%00.php`時,文件會被當做php腳本執行 #### 3 apache解析漏洞(配置錯誤) 如果在apache的conf文件中有如下配置:當后綴不能解析時,會往前尋找可解析的后綴 ``` AddHandler application/x-httpd-php .php ``` 則abcde.php.jpg也會被當做php去執行,所以當我們拿到服務器,想要自己留后門時,可以設置指定的擴展名.xxx ``` AddHandler application/x-httpd-php .xxx ``` #### 4 IIS 5.X/6.0解析漏洞 1. 分號文件名漏洞 服務器默認不解析分號后面的內容,因此如果截包上傳`abcde.asp;.jpg`的文件后,再通過瀏覽器訪問改文件,會被當成`abcde.asp`執行 2. xxx.asp目錄抖動 服務器會將xxx.asp目錄下的文件,都當做asp文件解析 ### F 高級繞過技巧 #### 1 重繪圖繞過 當應用調用圖片庫對上傳的圖像文件進行了圖像轉換,會使我們合并到圖片中的webshell被刪掉而失敗,針對這種情況的繞過步驟為: 1. 將正常圖片用目標使用的圖形庫進行轉換 2. 尋找轉換前后未變化的部分 3. 將未變化的部分替換為欲上傳的webshell 4. 將替換后的文件再次轉換,看改部分是否仍然存在,然后進行上傳 有一個開源代碼可用: https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE #### 2 phpinfo與本地文件包含聯合使用 使用場景是可以獲取phpinfo,也存在文件包含漏洞,但找不到路徑的情況下,可以聯合使用 1. php在解析multipart/form-data請求時,會創建臨時文件,并寫入上傳內容,當腳本執行結束后就刪除 2. phpinfo中可以輸出`$_FILES`信息,里面包含臨時文件地址 3. 通過多種方式爭取時間,在臨時文件刪除錢進行執行包含 如大量垃圾數據使phpinfo頁面過大,導致php的輸出切換為流式輸出 或通過大量請求來延遲php腳本的執行速度 有開源代碼可用: https://github.com/hxer/vulnapp.git #### 3 在線解壓縮的漏洞利用 如果某個網站,可以讓你上傳壓縮包,然后網站會將你的壓縮包解壓的情況,可以如下利用: 1. 將webshell打包到壓縮包中 1. 模板上傳傳常用壓縮包上傳后進行自動解壓 部分網站會檢測壓縮包中的內容,可以嘗試建立目錄再進行壓縮 2. 使用目錄穿越`../`的方法向上一級目錄進行上傳 2. 將文件/文件夾軟連接打包到壓縮包中 如鏈接到/etc/password文件,或連接到根目錄等發生
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看