这篇文章主要讲解了“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
漏洞位置:
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") 获取获取用户值,赋值给字符串数组变量 aunt_id, aunt_id经过处理交给ids变量,而ids变量进入deleteAunt方法,这里通过flag变量判断执行是否成功,这样只可能存在盲注了,跟进去:
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";}
从这个方法看是一个执行删除操作,变量ids, 也就是我们问题参数直接被拼接到sql语句中,未做编译,未做任何过滤,从而造成注入漏洞,
做全局过滤,或使用参数绑定
感谢各位的阅读,以上就是“Java代码审计后台注入漏洞举例分析”的内容了,经过本文的学习后,相信大家对Java代码审计后台注入漏洞举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.freebuf.com/vuls/238175.html