飘雪影院在线神马影院

俺去也影院 一文教你学会java代码审计

发布日期:2024-10-13 10:01    点击次数:191

俺去也影院 一文教你学会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.7

2、成立不妥

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 = truemanagementactuator

3.未授权探望

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后探望(不影响通晓),即可绕过登录终结。

图片

关键字:InterceptoraddInterceptors

3.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 参数是否为空

图片

无具体关键字,需要对名目代码逐条分析检察俺去也影院,判断是否存在逻辑问题。

本站仅提供存储功绩,悉数内容均由用户发布,如发现存害或侵权内容,请点击举报。

 




Powered by 飘雪影院在线神马影院 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024