



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 目标医院面试
- 学生讲解血液循环
- 商场营销活动策划与执行
- 肾脏透明细胞癌影像学诊断
- 现代育儿理念讲解
- 人体有限元技术研究与应用
- 选字填空课程讲解
- 医学图像研0汇报
- 北京市海淀首经贸2026届化学高一第一学期期末联考试题含解析
- 现代医学核心知识体系概述
- 原发性骨质疏松症诊疗指南(2022)解读
- 新概念英语“第一册”单词对照表
- 新生儿早期基本保健(EENC)-新生儿早期基本保健(EENC)概述(儿童保健课件)
- 加油站高处坠落事故现场处置方案
- 比亚迪汉DM-i说明书
- 心肾综合征及其临床处理
- 男性性功能障碍专家讲座
- GB/T 1040.3-2006塑料拉伸性能的测定第3部分:薄膜和薄片的试验条件
- 第37次全国计算机等级考试考务培训-课件
- 新生入学登记表新生入学情况表word模版
- 《高情商沟通》课件
评论
0/150
提交评论