俺去也影院 一文教你学会java代码审计
一、前置常识俺去也影院
本文主要评释基础的代码审计念念路与步地手段,合适有一定java基础,无审计教授的同学学习。
二、破绽挖掘
1、成立信息
先看pom.xml,了解到使用了哪个依赖库以及版块,从而不错详情是否存在破绽。
图中Shiro<=1.2.4版块,存在shiro550反序列化破绽,
图片
图片
application.yml
该成立文献可能存在数据库或其他组件的流畅信息,如数据库流畅信息。
图片
破绽关键字:Fastjson <=1.2.83 Jackson <=2.9.2 POI < 3.11 DOS XXEShiro <= 1.24 Spring 5.0.x < 5.0.6 1Spring 4.3.x < 4.3.72、成立不妥
2.1swagger接口文档知道
图下的便是将com.sky.controller.admin包下的悉数接口扫描成swagger接口调试文档。
图片
这便是探望swagger调试文档探望地址。
图片
图片
在名目审计中,swagger接口文档是不应该被用户探望的,接口文档可平直便是存在破绽问题。
搜索关键字:doc.htmlswaggeraddResourceHandlersDocket
2.2 springboot-actuator接口未授权
这个成立如实是将悉数 Actuator 端点都暴涌现来,包括了 /actuator/* 下的悉数端点。这意味着悉数的监控和处置端点都会对外公开,包括健康查抄、信息炫耀、成立信息、metrics 等。某些端点可能包含明锐信息,比如 /actuator/env 端点可能会走漏应用身手的环境变量。
图片
搜索关键字:management.endpoints.web.exposure.include=*endpoints.env.enabled=trueendpoints.enabled = truemanagementactuator3.未授权探望
3.1过滤器:
该步地判断了苦求url是否包含了/login.html或者register.html,若是包含就放行。
是以咱们不错http://127.0.0.1/login.html/../admin/test的步地绕过过滤。
图片
关键字:doFilterFilter
3.2把握器:
若是旅途的泉源是以/admin泉源况兼Session中的loginUser属性为 null,就会判断是否登录。
期骗:构造结构旅途为/;/admin或//admin后探望(不影响通晓),即可绕过登录终结。
图片
关键字:InterceptoraddInterceptors3.3shiro:
在shiro过滤器中对悉数旅途成立了anon匿名把握器俺去也影院,即不需要认证校验。
图片
关键字:anonauthcshiro
4、SQL注入
刻下大部分名目都是基于mybatis操作数据库,不使用预编译的情况就可能会导致sql注入破绽。
抱头摇 裸舞好像先容一下预编译与拼接:
占位符:#{},预编译指的是在推论 SQL 语句之前,先将 SQL 语句中的占位符(如 ?)替换为占位符对应的本色值,然后将这个如故编译好的 SQL 语句发送给数据库推论。
拼接符:${},不错用来替换 SQL 语句中的任何部分,包括表名、列名、要求等等。在推论 SQL 语句之前,MyBatis 会将 ${} 中的内容替换为相应的参数值,然后将获取的 SQL 语句发送给数据库推论。
mybatis中有些场所不成使用预编译的,这种场景下就容易出现sql注入破绽:
动态 SQL 中的表名、列名:若是在动态 SQL 中使用 ${} 来暗意表名、列名等标识符,因为这些标识符是在 SQL 通晓阶段详情的,无法使用预编译参数来替换。动态 SQL 中的 SQL 语句片断:举例在 <sql> 或 <selectKey> 等元素中使用 ${},这些片断是在 SQL 通晓阶段详情的,也无法使用预编译参数来替换。动态 SQL 中的 ORDER BY 字段:若是在 ORDER BY 子句中使用 ${} 来暗意排序字段,因为排序字段是在 SQL 通晓阶段详情的,相似无法使用预编译参数来替换。LIKE 操作中的暧昧查询字符串:若是在 LIKE 操作中使用 ${} 来暗意暧昧查询的字符串,因为这个字符串是平直拼接到 SQL 语句中的,不会被预编译。如图:暧昧查询处无法平直使用预编译,平直使用预编译会报错。
图片
安全写法:使用concat将%%与预编译组合起来。
图片
字据此处的sql语句,跟进检察哪个函数调用了该sql。
图片
进行跟进
图片
发现了是page调用了list,而且name可控,连接跟进是哪个函数调用了page。
图片
发现了是controller层的page调用了,探望的接口为emps,即http://127.0.0.1/emps,而且name参数可控。
图片
破绽点2:
order by后是无法使用预编译的,这种场所也容易存在sql注入。
图片
通过上头说的步地,一步一步跟,检察是阿谁探望接口调用了该sql语句(此处不祥)
此处asc参数为破绽点。
图片
输入asc=asc,id,(asc=asc,sql列名),回显平方。
图片
输入asc=asc,xxx,(asc=asc,不存在的sql列名),无回显数据。
图片
将数据包放到sqlmap跑一下
图片
图片
5.ssrf
刻下大部分java代码中的ssrf破绽都不赈济伪左券,基本只可进行内网探伤,危害也相对较低。
破绽示例,httpclients:
图片
这段代码只赈济http苦求,无法进行伪左券。
关键字:HttpClientHttpClientsHttpURLConnectionopenConnection赈济伪左券函数:openConnectionURLConnectionopenStream
6.文献操作类型破绽
文献操作类型破绽包括:文献上传,文献下载,文献读取,文献删除等。
破绽示例:文献名file可控而且莫得对后缀进行过滤,存在文献上传破绽,文献操作类型破绽在白盒中照旧挺多的,大多都是文献上传目次穿越。
图片
图片
关键字:new FileOutputStreamdownloaduploadFile.createTempFiletransferTonew FileInputStreamIOUtils.readFullyIOUtils.writeFileReaderfs.openfile.exists()file.delete()7.XXE
xxe破绽刻下如故未几了,遭遇的次数也很少,一般出刻下赈济xml文献导入或者csv,xslx文献导入(POI组件)的场所。
破绽示例:这段代码读取xml文献,但莫得明确禁用外部实体通晓,是以存在xxe破绽。
图片
设备步地:
SAXReader reader = new SAXReader();// 这是优先弃取. 若是不允许DTDs (doctypes) ,险些不错阻遏悉数的XML实体袭击setFeature('http://apache.org/xml/features/disallow-doctype-decl', true);// 若是不成皆备禁用DTDs,最少聘请以下门径,必须两项同期存在setFeature('http://xml.org/sax/features/external-general-entities', false);// 回绝外部实体POCsetFeature('http://xml.org/sax/features/external-parameter-entities', false);// 回绝参数实体POC关键字:SAXReaderSAXBuilderXMLReaderFactory.createXMLReader();DocumentBuilderFactoryXPathExpressionDocumentHelper.parseTextTransformerFactoryUnmarshallerStringReader组件:POI < 3.11 DOS XXE
8.RCE
存在不错推论高歌或者代码的函数就可能存在RCE破绽。
破绽案例:
在该接口中将接口授参未作念过滤平直传递到罗致了FelEngineImpl类的器具类中推论并复返后果,不错通过传入如导致代码注入从而推论淘气高歌
图片
图片
图片
图片
关键字:ProcessBuilderexecsystem()command Runtime.getRuntime().exec()ProcessUNIXProcessProcessImplProcessBuilder.start()GroovyShell.evaluate()evalclassLoader$$BCEL$$ServiceLoaderToolProvider.getSystemJavaCompiler()getSystemClassLoaderJavaFileObjectJdbcRowSetImplTemplatesImplTransformerFactoryImplresolveClassloadClassjavax.el.ELProcessor
9.逻辑过失
逻辑过失一般出在判断要求处,举例esle if,动态sql中的if判断。若设备写的if判断要求有逻辑问题,就会出现破绽。
破绽案例:
这段动态sql语句中的if判断要求,判断id是否为空,不为空就删除指定id的数据。然则若是用户输入的id参数为空,这会导致生成一个访佛于 delete from dish where id 的 SQL 查询语句。在这种情况下,莫得指定具体的要求来终结删除操作,因此这个删除语句会删除悉数这个词表中的数据,而非论 id 参数是否为空
图片
无具体关键字,需要对名目代码逐条分析检察俺去也影院,判断是否存在逻辑问题。
本站仅提供存储功绩,悉数内容均由用户发布,如发现存害或侵权内容,请点击举报。