全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品JAVA web网站代码审计入门本人还处于代码审计的初级阶段,此文章类似于编码规范,有啥建议,评论给我由于刚开始学代码审计的时候,就感觉一团代码,不知道从何下嘴。先从底层开始审计:底层漏洞:1. 查看该系统所用框架:Struts2的相关安全: (1) 低版本的struts2,低版本的Struts2存在很多已知的版本漏洞。一经使用,很容易造成比较大的危害。 (2) 开启 Struts2的动态调用方法,现在发现的如s2-033 ,s2-032等漏洞,都是由于系统开启了动态调用方法,导致远程代码执行。 (3) 在jsp页面中使用Struts2的ognl表达式传输数据。 (4) 开启Struts2的devMode,易造成远程代码执行 (5) 存在Struts2本身自带的ognl页面 (6) 使用Struts2自带的redirect等方法Spring的相关安全: Spring在jsp中使用el表达式时,注意spring的boot框架版本,因为有些低版本会存在远程命令执行。mybatis xml相关安全: 在SQL语句中,使用$进行传参,导致SQL注入;其他安全: 在使用java自带的环境时,如weblogic或者jboss,请注意查看版本号,因为此类环境低版本,大部分包含java反序列化漏洞,导致远程代码执行; glassfish环境某些版本存在任意文件读取;2. 查找SQL注入:DAO:是否存在拼接的SQL语句如:String sql = select * from user where id=+id;XML中:是否使用$,因为在xml中,#value#此时value是以参数的形式插入进去,$value$此时value是以字符串的形式直接插入到xml中,会导致sql注入;select * from tb_card_bin where card_length = #cardLength# and instr(bin_no, $cardNoFirstNum$) = 13.第三方控件漏洞如:fckeditor,wordpress等等。查找完底层漏洞后,查看系统中相应的action或者do方法。如果用的是ssh框架的话,这些方法的相关配置保存在Struts2的配置文件中。如果用的是springmvc框架的话,这些方法可能保存在applicationContext.xml(spring的配置文件),或者采用的是扫描注入的话,建议全局搜索RequestMapping等注入路径的关键字来确定action方法所在。以下,以action方法为例:4. 文件上传漏洞文件上传的action有一个比较显著的特征:Spring MVC默认支持两种文件上传操作方式。一种是使用MultipartHttpServletRequest或者MultipartFile作为方法参数,第二种是使用javax.servlet.http.Part作为方法参数。代码举例:RequestMapping(value = /accounting/voucher/importVoucher.htm, method = RequestMethod.POST)SuppressWarnings(unchecked)public String importBankGlide(RequestParam(voucherFile)MultipartFile voucherFile, RequestParam(returnFile) MultipartFile returnFile,ServletRequest request, ModelMap model) if (voucherFile = null | voucherFile.getSize() 0) /并未对文件进行检查,直接上传 File file = new File(model.get(path); else model.put(ERROR_MESSAGE, 上传附件失败,请重新发起: + result.getResultMessage(); return /accounting/voucher/importVoucher;文件上传存在的主要原因,一,未对文件名称进行检测直接上传;二,未对传入的文件内容进行检测直接上传;5. 远程命令执行在调用本机的shell,去运行特殊的命令时,没有对传入的参数进行检查,导致命令执行;Runtime.getRuntime().exec此方法用来执行shellcom.opensymphony.xwork2.ognl.OgnlValueStack的protected Object findValue(String expr, String field, String errorMsg)该方法是用来执行ognl表达式。6. 远程代码执行第一,通过使用脚本引擎中的eval去执行些特殊的东西,这种地方要着重去看,是否会有用户输入的变量传入。第二,通过反射来执行代码:Class c=Class.forName(com.wqx.test4.Test);/创建这个类的实例,前提是存在这个类,并且存在此种方法Object obj=c.newInstance();/通过class来取得这个方法对象 并且声明 这个类的参数类型java.lang.reflect.Method method=c.getMethod(sayhello, Class.forName(java.lang.String);/invoke 来执行方法对象 记得参数类型要跟这里的参数匹配method.invoke(obj, wqx);7. 越权下载首先,fileName是用户可以控制的,如下:String fileName = ././././1.xml;/此处为用户输入内容File file = new File(/Users/dly/Desktop/test2/src/main/webapp/upload/ + fileName);FileInputStream fileInputStream = new FileInputStream(file);BufferedReader buff= new BufferedReader(new InputStreamReader(fileInputStream);System.out.println(buff.readLine();此时,1.xml存在,会导致越权下载。8. 敏感信息泄漏第一,代码泄漏,.svn的文件夹和git的文件夹中可能包含代码;第二,ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025现代家居快速装配系统性能到位情况下装配投资良好分析研究
- 2025现代农业产业园建设规划与作物收效分析研究报告
- 2025环保产业规划行业市场深度调研及发展趋势与投资前景预测研究报告
- 2025玉米种植产业链安全风险管控研究及产业化发展对策
- 2025玉米产业链供应链整合研究及农产品期货市场风险管理机制创新及政府调控政策分析
- 建筑工地安全监理旁站规范
- 2025狗粮猫粮行业市场供需分析及投资评估规划分析研究报告
- 2025游戏画面渲染优化技术提升游戏玩家视觉体验研究分析
- 2025游戏电竞行业商业模式创新与用户粘性提升研究
- 校车安全管理规范与驾驶员培训
- 25道鼎和财产保险股份有限公司保险财务人员岗位常见面试问题含HR常问问题考察点及参考回答
- 道路运输企业两类人员安全考核题库(含答案)
- 三年级上学期数学期末试卷带答题卡
- JGJ376-2015 建筑外墙外保温系统修缮标准
- 人力资源外包服务劳务外包劳务派遣投标方案
- 循环流化床锅炉防磨防爆检查与检修剖析课件
- 20212022(2)学期医用物理学学习通超星课后章节答案期末考试题库2023年
- GB/T 21296.6-2022动态公路车辆自动衡器第6部分:平板模块式
- 中华碑帖精粹:赵孟頫胆巴碑
- 《绿色化学》教学大纲
- 人教版七年级英语上册期末试题3套带答案
评论
0/150
提交评论