Vaadin组件下的新反序列化链寻找

2025-02-17 16 0

前言

对于常见的Vaadin反序列化的流程大致可归纳为以下几个步骤

  1. 寻找到一个反序列化入口,调用PropertysetItem#toString方法

  2. 在上述方法中,能够调用任意类的getValue方法,上文中也是找到了NestedMethodProperty#getValue方法,在该方法中将调用属性的getter方法

  3. 对于getter方法的选取,上文中使用了TemplateImpl

OK,能够调用任意类的getValue方法,在Vaadin相关依赖中是否存在其他恶意的getValue方法呢?本文据此展开。

寻找有害getValue

Vaadin组件下的新反序列化链寻找插图

满足条件的相关类并不是很多,其中NestedMethodProperty类可以排除掉,上文中选用的就是该类

AbstractSelect

首先是AbstractField类,其getValue方法仅仅是实现了取值的功能,并不存在利用的可能

Vaadin组件下的新反序列化链寻找插图1

然后是AbstractSelect类,重点分析一下该方法的流程:

Vaadin组件下的新反序列化链寻找插图2

  1. 首先是调用父类的getValue方法,获取retValue值,也即是AbstractField#getValue,最终调用的是AbstractField#getFieldValue根据不同的情况返回不同的属性值,其均可控

  2. 进入一个if判断语句,若属性值multiSelect为true则步入,该属性值可控
    接下来若super.getValue方法返回的值不是Set或者Collection则进入最后一个else语句,这里因为items可控,能够调用任意的containsId方法

SQLContainer#containsId

前面提到能够调用任意类的containsId方法,因items属性为Container类,所以其仍存在限制

Vaadin组件下的新反序列化链寻找插图3

这里存在一个SQLContainer#containsId的实现

Vaadin组件下的新反序列化链寻找插图4

前面部分都没有什么奇怪的操作,也比较简单明了,这里我们关注最后一个if语句,若传参itemId,也即是前面通过super.getValue得到的返回值,该返回值属于RowId实例,并且不是TemporaryRowId的实例:这里将会调用queryDelegate.containsRowWithKey(((RowId) itemId).getId()),这里的属性名queryDelegate直译为查询委派,可能会有数据库执行的功能实现

Vaadin组件下的新反序列化链寻找插图5

该方法有两个实现类:

TableQuery

Vaadin组件下的新反序列化链寻找插图6

这里使用了generateSelectQuery动态生成查询语句

重点在于:如果activeConnection属性值若为null,则步入if (!isInTransaction())if语句,并调用beginTransaction进行处理

Vaadin组件下的新反序列化链寻找插图7

最终是调用到父类AbstractTransactionalQuerybeginTransaction方法

Vaadin组件下的新反序列化链寻找插图8

这里调用了connectionPool.reserveConnection方法进行连接的reserve操作,也即是JDBCConnectionPool接口的实现类

Vaadin组件下的新反序列化链寻找插图9

JDBCConnectionPool

J2EEConnectionPool

Vaadin组件下的新反序列化链寻找插图10

J2EEConnectionPool#reserveConnection的调用过程中,若dataSource为空,则会调用lookupDataSource进行lookup操作,这里的dataSourceJndiName变量我们是可控的,这里会造成JNDI注入攻击

SimpleJDBCConnectionPool

而在


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

[Meachines] [Easy] PC gRPC HTTP2 SQLI+KTOR-HTTP扫描+pyLoad 0.5.0 js2py滥用权限提升
x64环境下完全隐藏导入表技术全解析
[Meachines] [Easy] Wifinetic FTP匿名登录+Reaver WPS PIN密码泄露权限提升
[Meachines] [Easy] Horizontall Strapi RCE+KTOR-HTTP扫描+Laravel Monolog 权限提升
网络钓鱼即服务平台 Darcula 现已支持自动生成针对任何品牌的钓鱼工具包
如何依据GDPR起诉公司数据滥用与隐私侵犯行为

发布评论