JavaSec | 某次代码审计比赛记录

 目录:

一、背景

二、系统 A

  2.1、 多处后台sql 注入

  2.2、 后台多处存储型xss

  2.3、 3处垂直越权

三、系统 B

  3.1、 鉴权绕过

  3.2、 后台存储型XSS

四、系统 C

  4.1、 前台用户多处越权

  4.2、swagger信息泄露

  4.3、支付代码逻辑缺陷

  4.4、 文件上传

  4.5、存储存储型XSS

  4.6、信息泄露

一、背景

之前某位同事组织了代码审计比赛,周末我抽空看了3套java系统。发现这些CMS有CSRF漏洞,但因为主流浏览器已无法利用,所以没有在文章中展示,也没有提交。

目前只找到当时的 PDF版本,复制过来后格式可能有些不太整齐,请见谅,以下简单记录一下代审思路,比较简单,适合新手学习。

二、系统 A

2.1、 多处后台sql 注入

备注

目前系统存在多处直接拼接参数执行SQL操作,存在SQL注入风险,这里仅举一处作为示例。

复现

img

 

sleep()函数测时间盲注

img

 

代码如下,

img

 

传参直接拼接到了sql 语句中,

img

 

2.2、 后台多处存储型xss

备注

仅展示1处

复现

编辑HTML代码,插入页面提交,

img

 

代码如下

接受前端传参,没有过滤直接入库

img

 

2.3、 3处垂直越权

备注

作者为获取老师和学生信息分别写了3个ajax接口,但鉴权未完善,导致学生也能访问敏感信息。目前发现其中一个接口可通过学号获取学生信息。

复现

img

 

代码如下,

接口处没做鉴权,

img

 

有两个过滤器:一个只拦截“/admin/*”路径用于管理员访问,另一个只校验用户是否登录。

img

 

三、系统 B

3.1、 鉴权绕过

备注

鉴权逻辑有待优化,目前拦截器存在问题,可能导致接口被越权访问。。

复现

用学生账户登录,访问 http://192.168.3.34:8888/teacher/list,即可查看老师的相关信息(包括账户和密码)。

img

 

代码如下,

接口处没有二次鉴权,直接查看结果后返回

img

 

拦截器代码的核心逻辑有问题,url.split("/")[0] 结果是空字符串 ""。比如分割 /teacher/list 得到 ["", "teacher", "list"],而任何字符串都包含空字符串,所以正常登录时条件总是成立。

3.2、 后台存储型XSS

复现

img

 

代码如下

接受参数后,直接入库,没有任何过过滤

img

 

四、系统 C

4.1、 前台用户多处越权

备注

当前仅以越权查看订单信息展示,

复现

A用户查看到B用户订单信息,同理可以查看到任意用户任意订单

img

 

代码如下

虽然获取了userid 但是并未使用, 而是直接将前端传入的订单号带入数据库查看

img

 

4.2、swagger信息泄露

复现

直接在无痕浏览器即可以打开

http://192.168.3.34:8080/v2/api-docs

http://192.168.3.34:8080/swagger-ui.html#/316492970221592controller

img

 

代码如下,

img

 

4.3、支付代码逻辑缺陷

备注

当前代码,没有校验是否成功支付的逻辑,直接点击“支付成功”即可

复现

点击购买任意商品,走到支付,

img

 

img

 

img

 

代码如下,

img

 

img

 

4.4、 文件上传

备注

因为是spring 的jar包部署,正常情况下,文件上传危害有限,目前相当于存储型XSS

复现

img

 

代码如下

直接获取后缀保存。

img

 

4.5、存储存储型XSS

备注

需要管理员在后台做设置,危害一般般 当前仅展示1处

复现

在上面正常添加就行,

img

 

代码如下

img

 

4.6、信息泄露

备注

鸡肋,可忽略

复现

直接get请求就行

http://192.168.3.34:8080/personal/updateInfo

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值