漏洞挖掘之再探某园区系统

news2024/9/26 5:15:52

漏洞挖掘之再探某园区系统

上次提到还有一处可能存在任意用户登录的点,最近没什么研究就写一下,顺便看看还有其他漏洞不

0x01 任意用户登录

1、漏洞分析

通过上次提到的搜索new UserBean()的思路,发现还有一处创建用户的方法

public void addUser(WsAdminParam<ExUserBean> adminParam) {
    ExUserBean bean = (ExUserBean)adminParam.getParam();
    UserBean userBean = new UserBean();
    userBean.setOwnerCode(bean.getOrgCode());
    userBean.setRoleIds(bean.getRoleIds());
    userBean.setLoginName(bean.getLoginName());
    userBean.setIsReuse(bean.getIsReuse() ? 1 : 0);
    userBean.setLoginPass(bean.getLoginPass());
    userBean.setUserName(bean.getUserName());
    userBean.setUserType(0);
    this.userManager.addUser(userBean);
    UserCache.addUserToUserList(userBean);
}

可以看到通过传入WsAdminParam类型参数,获取param对象的成员遍历对UseBean进行赋值初始化,最后保存到数据库中

接下来就是找哪里调用了addUser这个方法,根据前面我们发现调用都是接口.方法名,于是构造ExUserManager.addUser

图片

并没有其他调用,难道这只是单纯实现了方法?

扩大搜索面只搜索ExUserManager接口名,排除类定义等干扰信息我们有了新的收获

interfaceMethodsMap.put(AdminWebService.INTERFACE_QUERY_USER,WsMethod.bulid(ExUserManager.class.getMethod("queryUser", WsAdminParam.class), ExUserBean.class));
interfaceMethodsMap.put(AdminWebService.INTERFACE_DELETE_USER,WsMethod.bulid(ExUserManager.class.getMethod("deleteUsers", WsAdminParam.class), ExUserBean.class));
interfaceMethodsMap.put(AdminWebService.INTERFACE_ADD_USER,WsMethod.bulid(ExUserManager.class.getMethod("addUser", WsAdminParam.class), ExUserBean.class));
interfaceMethodsMap.put(AdminWebService.INTERFACE_VIEW_USER,WsMethod.bulid(ExUserManager.class.getMethod("viewUser", WsAdminParam.class), ExUserBean.class));
interfaceMethodsMap.put(AdminWebService.INTERFACE_UPDATE_USER,WsMethod.bulid(ExUserManager.class.getMethod("updateUser", WsAdminParam.class), ExUserBean.class));
interfaceMethodsMap.put(AdminWebService.INTERFACE_UPDATE_USER_PASSWORD,WsMethod.bulid(ExUserManager.class.getMethod("updateUserPassword", WsAdminParam.class), ExUserBean.class));

在AdminWebServiceImpl类的静态代码块中初始化了interfaceMethodsMap数组,其中将ExUserManager方法对象进行存储。

executeInterface方法中对interfaceMethodsMap数组进行了取值操作

图片

假设我们想调用addUser这个方法需要指定interfaceMethodsMap的key为admin_011_02(下面会讲到),map会返回我们WsMethod对象,那么WsMethod#getExtClass返回的值就是map中的 WsMethod.bulid 的第⼆个参数,也就是ExUserBean

图片

WsAdminParam.fromJson(jsonParam, method.getExtClass());⽅法如下:这⾥将我们传⼊的第⼆个参数⾸先进⾏json解析,移除json中的param参数,然后再分别进⾏json反序列化,第⼀次反序列化是将移除的param json数据转化为ExUserBean类型,第⼆次反序列化是将 传⼊的json转化为 WsAdminParam 类型,最后将ExUserBean重新设置到 WsAdminParam 对象中,因此我们传⼊的参数主要是在反序列化为 WsAdminParam 对象

图片

观察 WsAdminParam 类成员变量,发现需要这些参数:

图片

那我们在executeInterface方法中传入的jsonParam的值应为:

{
 "authorinize": {
 "userName": "11",
 "password": "11",
 "loginCode": "11"
 },
 "locale": "1",
 "param": {"orgCode":"001","loginName":"test","roleIds":"1","loginPass":"test","isReuse":0,"oldLoginName":"xxx","oldRoleIds":"1","userName":"test"},
 "paramStr": "11",
 "langLocale": "11",
 "orders": [{"propertyName": "1","isAscending": true}]
}

其中param对应了初始化ExUserBean对象的变量值

图片

那么executeInterface方法在哪调用呢?

我们发现AdminWebServiceImpl类注解为@WebService

@WebService(
    targetNamespace = "http://webservice.dhsoft.com"
)
public class AdminWebServiceImpl implements AdminWebService

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。

Java中常用注解来注册WebService服务,常见注解有

@WebService:此注示用来标明此java类为某个WebService的实现类或者标明此java接口定义了某个WebService的接口。即定义服务

@WebMethod:定义方法,在公共方法上面表示该方法要作为服务发布,仅支持在使用@webservice注解来注解的类上使用@WebMethod注解

@WebResult:注解用于定制从返回值至 WSDL 部件或 XML 元素的映射。即定义返回值

@WebParam:注解用于定制从单个参数至 Web Service 消息部件(message元素)和 XML 元素的映射。即定义参数

向上进入AdminWebService接口

图片

其中定义了interfaceMethodsMap数组interfaceId的具体值,我们调用addUser时interfaceId=admin_011_002;并且将executeInterface注册在了WebService服务中。

根据java中WebService的配置,我们在配置文件中找的AdminWebService注册的路由(厚码保命)

图片

而在web.xml中WebService服务是由CXFServlet来处理的

图片

此时路由并没有配置拦截器可以未授权访问。

图片

2、漏洞复现

我们利用burp中的插件Wsdler帮助我们生成webservice的xml格式

首先访问该seervice的wsdl

图片

随后burp抓取该请求包,并parse wsdl

图片

随后在插件中得到请求格式

图片

我们把前面构造的两个参数带入到请求包中,成功创建用户

图片

并使用该用户登录到后台

图片

0x03 其他利用点

我们对比两个添加用户的方法发现构造完userbean对象后都调用了this.userManager.addUser方法,我们可以精确搜索

图片

发现还有其他两个接口可以创建用户。

而在AdminWebServiceImplinterfaceMethodsMap中除了adduser还有其他方法

图片

比如queryUser可以查看用户信息

图片

viewUser可以查看对应用户的密码

图片

另外在lib中看到低版本的xstream依赖

图片

xstream主要是在调用fromXML和toXML方法如果传入参数可控就大概率存在反序列化漏洞

利用jar-analyzer工具快速找出项目中调用相关方法的位置

图片

挑选addDevs方法,找的具体实现的代码

图片

这里getFormatedDevXStream是获取XStream对象

图片

如果validateAndReturnXmlInfo方法的返回可控就可以进行反序列化,跟进发现

图片

图片

可以看到validateAndReturnXmlInfo其实是获取请求参数xmlInfo的值,这个我们是可控,构造payload。

这里使用woodpecker插件进行XStream Payload的生成(工具地址:https://github.com/woodpecker-framework/woodpecker-framework-release;插件地址“https://github.com/woodpecker-appstore/xstream-vuldb”)

图片

复制出来去除缩进的空格和换行后将其进行URL全编码,访问接口并传参

图片

成功执行ping命令

更多网络安全优质免费学习资料与干货教程加v

送渗透工具、技术文档、书籍,面试题、视频(基础到进阶。环境搭建,HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等)、应急响应笔记、学习路线。

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA设计之跨时钟域(CDC)设计篇(4)----多bit信号的跨时钟域(CDC)处理方法(手撕代码)

1、为什么多bit信号跨时钟域与单bit不同 ? 跨时钟域的处理可以分为两个大类:单Bit信号跨时钟域处理、多Bit信号跨时钟域处理。分类的原因是多bit信号的传递不光只有亚稳态这一个问题,还可能会因为多个信号之间由于工艺、PCB布局等因素导致的信号传输延时(skew)的存在,从而…

【机器学习第8章——集成学习】

机器学习第8章——集成学习 8.集成学习8.1个体与集成弱分类器之间的关系组合时&#xff0c;如何选择学习器怎么组合弱分类器boosting和Bagging 8.2 BoostingAdaBoost算法步骤训练过程 8.3 Bagging与随机森林随机采样(bootstrap)弱学习器结合策略方差与偏差算法流程随机森林 8.4…

2024华硕迷你主机选购指南:全系列覆盖

在选择迷你主机时&#xff0c;消费者往往面临多种选择&#xff0c;而华硕作为知名的电脑硬件制造商&#xff0c;提供了多款性能各异的迷你主机以满足不同用户的需求。在面对华硕迷你主机的选择时&#xff0c;不同的需求和偏好将带领我们走向不同的选择。对于游戏爱好者&#xf…

谈谈我用BaaS开发应用的一年感受

作为一个独立开发者&#xff0c;我一直在寻找高效、便捷的开发工具&#xff0c;直到遇见了MemFire Cloud。今天&#xff0c;我想和大家分享一下我用这款BaaS&#xff08;Backend as a Service&#xff09;开发应用一年的感受。 初识MemFire Cloud 最初接触MemFire Cloud&#…

大模型正在重蹈AI的覆辙?

[ 科技圈这两年什么概念和技术最火&#xff1f;——大模型。 当大模型刚出现的时候&#xff0c;可能谁都不会想到&#xff0c;有一天会如此爆火。 据不完全统计&#xff0c;2020年至2023年间&#xff0c;中国已经发布的参数在10亿规模以上的大模型&#xff0c;就超过80个。 …

8.3 修改mysqld_exporter源码 ,改造成类似blackbox的探针型,实现一对多探测

本节重点介绍 : 官方的mysqld_exporter问题 只能一对一不能像探针一样采集多个实例dsn需要配置环境变量或者配置文件解析 需求说明 改造成类似blackbox的探针型&#xff0c;实现一对多探测改造方案 修改源码prometheus配置文件传参和实例地址获取改造grafana大盘配置成可以切换…

【实用指南】如何选择最适合您的圆形连接器?

圆形连接器是一种电子连接器&#xff0c;其基本结构为圆柱形并且拥有圆形的配合面&#xff0c;这种设计使得它们在物理上区别于矩形或其他形状的连接器。它们通常用于设备之间的互连&#xff0c;属于互连分类中的第5类。 圆形连接器的主要组成部分包括&#xff1a; 插头&#…

引用率全球Top2%大佬耗时几年编写深度学习神书分享!!

介绍 这本深度学习书籍是由一位拥有多重职称和荣誉的顶尖科学家所打造&#xff0c;被评为全球引用率最高的2%科学家之一。这本书被认为是目前最全面系统的深度学习著作&#xff0c;涵盖了深度学习的主流算法模型&#xff0c;对于研究生和博士生具有极高的参考价值。这份完整版…

FPGA的工作本科可以做吗?

在FPGA行业中&#xff0c;这样的偏见一直存在。 很多人认为&#xff0c;只有985、211的硕士才有资格涉足这一领域&#xff0c;甚至有人表示&#xff0c;即使是9、2本硕也难以找到工作&#xff0c;本科生就不要想了。 难到真的只有985&#xff0c;211的研究生才能有机会入行FPG…

人工智能深度学习系列—GANs的对抗博弈:深入解析Adversarial Loss

文章目录 1. 背景介绍2. Adversarial Loss计算公式3. 使用场景4. 代码样例5. 总结 1. 背景介绍 生成对抗网络&#xff08;GANs&#xff09;作为深度学习中的一大突破&#xff0c;其核心机制是通过对抗性训练生成逼真的数据。Adversarial Loss&#xff0c;即对抗性损失&#xf…

网站安全证书的作用和申请方法

网站安全证书的作用 网站安全证书&#xff0c;也被称为SSL证书、HTTPS证书或服务器证书&#xff0c;是一个由受信任的数字证书颁发机构&#xff08;CA&#xff09;审核颁发的数字文件。它的主要作用体现在以下几个方面&#xff1a; 增强用户信任&#xff1a;未使用HTTPS协议的…

幸福人生之理性决策

人人每天都在做决策&#xff0c;小到穿衣吃饭&#xff0c;大到恋爱工作&#xff0c;决策的正确性决定了人生的幸福指数。虽然有些小决策&#xff0c;依靠经验和感性已经足以达到一个满意的结果&#xff1b;有些决策即使错了&#xff0c;对漫长的人生来说也没有太多的影响。 但追…

win10自带dll修复丢失的几种方法,快速修复错误dll文件的方式

DLL文件&#xff0c;即动态链接库文件&#xff0c;是Windows操作系统中不可或缺的组成部分&#xff0c;它们包含了可由多个程序共享的代码和数据。当这些文件损坏或丢失时&#xff0c;可能会导致程序无法正常运行&#xff0c;甚至系统崩溃。 幸运的是&#xff0c;Windows 10操作…

JeecgBoot 低代码平台快速集成 Spring AI

JeecgBoot 是一款基于代码生成器的低代码开发平台&#xff01;前后端分离架构 SpringBoot2.x和3.x&#xff0c;SpringCloud&#xff0c;Ant Design Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT&#xff0c;支持微服务。强大的代码生成器让前后端代码一键生成…

Sun Frame:基于 SpringBoot 的轻量级开发框架(个人开源项目)

文章目录 &#x1f31e; Sun Frame&#xff1a;基于 SpringBoot 的轻量级开发框架&#xff08;个人开源项目&#xff09;&#x1f680; 欢迎使用 Sun Frame&#x1f31f; 项目亮点&#x1f4e6; 模块结构&#x1f310; Sun-Cloud&#x1f4e6; Sun-Common &#x1f4a1; 示例与…

云原生的候选应用

提示 该内容摘自电子书《为 Azure 构建云原生 .NET 应用程序》&#xff0c;可在**.NET Docs**上获取&#xff0c;也可以免费下载 PDF并离线阅读。 考虑一下您的组织需要构建哪些应用程序。然后&#xff0c;看看您投资组合中的现有应用程序。其中有多少需要云原生架构&#xff…

计算机毕业设计选题推荐-租房管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

[网鼎杯]2018Unfinish

使用ctf在线靶场https://adworld.xctf.org.cn/home/index。 进入靶场&#xff0c;发现是一个登录页面。 使用awvs进行扫描&#xff0c;发现存在login.php和register.php&#xff0c;并且register.php存在sql注入漏洞。 访问一下register.php试试&#xff0c;发现是一个注册页面…

JBoss未授权访问漏洞 *

JBoss是一个基于J2EE的开放源代码应用服务器&#xff0c;代码遵循LGPL许可&#xff0c;可以在任何商业应用中免费使用&#xff1b;JBoss也是一个管理EJB的容器和服务器&#xff0c;支持EJB 1.1、EJB 2.0和EJB3规范。,默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBo…

<数据集>COCO2017行人识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;10000张 标注数量(xml文件个数)&#xff1a;10000 标注数量(txt文件个数)&#xff1a;10000 标注类别数&#xff1a;1 标注类别名称&#xff1a; [person] 序号类别名称图片数框数1person1000041131 使用标注工具…