Java代码审计后台注入漏洞举例分析

这篇文章主要讲解了“Java代码审计后台注入漏洞举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java代码审计后台注入漏洞举例分析”吧!

目前成都创新互联已为上千余家的企业提供了网站建设、域名、网络空间、网站托管、服务器租用、企业网站设计、潞州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

部署简介

1、下载代码文件,可以本机调试或上传到自己服务器运行。

2、安装运行程序:

(1)将解压文件夹中的opencarrun安装包复制到tomcat-->webapps--> 下;

(2)将sql导入MySQL;

(3)启动tomcat;

(4)启动完毕后,前台访问地址:http://localhost:8080/opencarrun/

3、开发包安装

打开MyEclipse-->File-->Import-->选择Existing Porjects into Workspace-->Next-->Select root directory 选择刚才解压的开发包文件中的opencar-->Finish

sql审计过程

漏洞位置:

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

功能模块:删除外聘员工

public voiddoGet(HttpServletRequest request,HttpServletResponse response) throwsServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out =response.getWriter();
    ShopService ss = newShopService();
   HttpSession session = request.getSession(true);
    Object user = session.getAttribute("user");
    Locale loc = newLocale("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(inti = 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") 获取获取用户值,赋值给字符串数组变量 aunt_id, aunt_id经过处理交给ids变量,而ids变量进入deleteAunt方法,这里通过flag变量判断执行是否成功,这样只可能存在盲注了,跟进去:

deleteAunt方法位于

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

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

从这个方法看是一个执行删除操作,变量ids, 也就是我们问题参数直接被拼接到sql语句中,未做编译,未做任何过滤,从而造成注入漏洞,

修复建议

做全局过滤,或使用参数绑定

感谢各位的阅读,以上就是“Java代码审计后台注入漏洞举例分析”的内容了,经过本文的学习后,相信大家对Java代码审计后台注入漏洞举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

网站栏目:Java代码审计后台注入漏洞举例分析
当前网址:https://www.cdcxhl.com/article16/jhdhdg.html

成都网站建设公司_创新互联,为您提供网站收录网站排名全网营销推广关键词优化网站设计公司响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设