免责申明
本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。
0x00 前言
最近学一学JAVA代码审计,拿出来一个被师傅们审了无数次的代码复现一些漏洞审计的思路
0x01 信息搜集
网站架构,这里一般从pom.xml配置文件中可以看到一些该项目配置的一些信息,或者在README.md文件当中也可以看到一些网站的信息
我们这里看到网站是基于Spring Boot开发的,使用了插件fastjson,数据库层面应当是使用的Mybatis主要看这三个,因为SpringBoot以及FastJson曾经都爆出过高危的漏洞,其他的不认识哈哈
然后我们在看看pom.xml文件
在pom.xml文件当中可以更加详细的看到一些版本等信息,这里应该是ida新版本的原因,这里我的ida他会自动识别这个版本是否曾经爆出来漏洞,并且会自动将该漏洞的CVE编号给我返回出来,帮我减少了很多时间
然后我们启动项目,但是事先看下配置文件,查看是哪一个端口
一般这种绿色的小图标是SpringBoot的配置文件
这里我们将我们的数据库账号密码修改好,然后看到对应绑定的是80端口,我80端口应该没有占用,所以我们直接将数据库账号密码修改好之后就可以了,注意在java代码审计当中有很多源码是需要手动导入sql数据的,我们都搭建好之后尝试访问。
0x03 审计流程
存储XSS漏洞
在个人中心->用户面板->写便签 存在XSS漏洞,点击保存之后
成功的解析了html的标签,我们这里查找一下对应的方法,看到路由地址为writep,在SpringBoot当中是通过@RequestsMapping进行的路径映射,跟进之后发现,使用了实体传参的技术,所谓实体传参就是就是两个文件,一个文件写入各种传参的值,另一个文件直接调用,舍去了在方法括号当中写入参数,这里另一个文件为Notepaper
可以看到我们可控参数为三个第一个为notepaperId,title,concent,回到上一层看代码
进行了一些简单的操作以及判断之后直接ndao.save对传入的数据保存到了数据库当中所以造成了存储XSS漏洞
漏洞复现
SQL注入漏洞
前面我们说到,项目使用的是Mybatis进行操作sql语句的,那么我们全局搜索${}
我们继续跟踪
然后继续跟踪查看那里进行调用了sortMyNotice
进行跟入
这里可以看到可控参数为方框当中的几个值,并且我们通过逆向分析参数也找到了对应的映射地址为informlistpaging,并且那个被${}包裹的参数baseKey也在当中,并且也没有一点过滤我们现在进行尝试访问
漏洞复现
访问目录抓包传参
sqlmap梭哈
不过可惜的是并没有组件漏洞,前面我们提到使用了fastjson组件,这个组件在审计当中审计关键词为
JSON.parse (String text)
JSON.parseObject(String text)
该网站后端代码当中不存在这个方法的调用,即使这个组件存在漏洞但是也无法使去利用
0x03 结尾
如果师傅们想要这套源码练习审计的话可以联系我哦
原文始发于微信公众号(进击安全):[JAVA代码审计]某OA代码审计
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论