溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java代碼審計(jì)后臺(tái)注入漏洞舉例分析

發(fā)布時(shí)間:2021-12-03 14:54:17 來源:億速云 閱讀:172 作者:iii 欄目:安全技術(shù)

這篇文章主要講解了“Java代碼審計(jì)后臺(tái)注入漏洞舉例分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java代碼審計(jì)后臺(tái)注入漏洞舉例分析”吧!

部署簡介

1、下載代碼文件,可以本機(jī)調(diào)試或上傳到自己服務(wù)器運(yùn)行。

2、安裝運(yùn)行程序:

(1)將解壓文件夾中的opencarrun安裝包復(fù)制到tomcat-->webapps--> 下;

(2)將sql導(dǎo)入mysql;

(3)啟動(dòng)tomcat;

(4)啟動(dòng)完畢后,前臺(tái)訪問地址:http://localhost:8080/opencarrun/

3、開發(fā)包安裝

打開MyEclipse-->File-->Import-->選擇Existing Porjects into Workspace-->Next-->Select root directory 選擇剛才解壓的開發(fā)包文件中的opencar-->Finish

sql審計(jì)過程

漏洞位置:

WebRoot\WEB-INF\lib\car-weishang-1.0.jar!\com\weishang\my\admin\DeleteAunt.class

功能模塊:刪除外聘員工

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out =response.getWriter();
    ShopService ss = new ShopService();
   HttpSession session = request.getSession(true);
    Object user = session.getAttribute("user");
    Locale loc = new Locale("zh", "CN");
    ResourceBundle rb =ResourceBundle.getBundle("messages", loc);
    String adminTip = rb.getString("adminTip");
   String json = "";
    if (user== null) {
        RequestDispatcher rd =request.getRequestDispatcher("/WEB-INF/jsp/login.jsp");
        request.setAttribute("tip", adminTip);
        rd.forward(request, response);
    } else {
       String[] auntIds = request.getParameterValues("aunt_id");
       String ids = "";

        for(int i = 0; i < auntIds.length; ++i) {
            ids = ids + auntIds[i] + ",";
        }

        ids = ids.substring(0, ids.length() - 1);
        String flag = ss.deleteAunt(ids);
        if (flag.equals("ok")) {
            json = "{\"tip\":\"" + rb.getString("delete") + rb.getString("success") + "\"}";
        } else {
            json = "{\"tip\":\"" + rb.getString("delete") + rb.getString("failure") + "\"}";
        }

        out.print(json);
    }

}

request.getParameterValues("aunt_id") 獲取獲取用戶值,賦值給字符串?dāng)?shù)組變量 aunt_id, aunt_id經(jīng)過處理交給ids變量,而ids變量進(jìn)入deleteAunt方法,這里通過flag變量判斷執(zhí)行是否成功,這樣只可能存在盲注了,跟進(jìn)去:

deleteAunt方法位于

/WebRoot/WEB-INF/lib/car-weishang-1.0.jar!/com/weishang/my/service/ShopService.class

public String deleteAunt(String ids) {
    String sql =
"delete from aunt where aunt_id in (" + ids + ")";
    
int flag = this.jdbc.executeUpdate(sql);
   
this.jdbc.close();
   
return flag > 0 ? "ok" : "bad";
}

從這個(gè)方法看是一個(gè)執(zhí)行刪除操作,變量ids, 也就是我們問題參數(shù)直接被拼接到sql語句中,未做編譯,未做任何過濾,從而造成注入漏洞,

修復(fù)建議

做全局過濾,或使用參數(shù)綁定

感謝各位的閱讀,以上就是“Java代碼審計(jì)后臺(tái)注入漏洞舉例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Java代碼審計(jì)后臺(tái)注入漏洞舉例分析這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI