探寻Hessian JDK原生反序列化不出网的任意代码执行利用链

[2024-03-22 更新]

需要注意的是,这条链存在一条致命缺陷,在Method类中有一个名为slot的int类型参数,该参数用于给jvm定位该Method在类的方法列表的索引,代码详见。但是这个slot参数并不是固定的,在每次jvm加载类时,该slot将有可能发生变化。

在Hessian的流程中,将会很耿直的直接获取该slot值直接序列化与反序列化,在反序列化利用链触发invoke时如果slot值异常,jvm在提取Method时就会获取到错误的Method对象,直接进行调用时如果参数的数量或类型错误时将有可能产生异常,但是jvm并没有做对应异常处理,这将会导致jvm直接崩溃。

所以很遗憾的是该利用链目前并不稳定,不建议实战使用。🥲

希望在未来有方法能解决该问题。

最近看到一些师傅在做一个CTF的时候找到了Hessian的JDK原生反序列化的利用链,简单了解Hessian的反序列化原理,发现其只需要通过调用SerializerFactorysetAllowNonSerializable(true);函数关闭Serializable派生类检查,就可以使其序列化、反序列化任何没有继承Serializable的类,这点相较于原生反序列化稍微有点特殊。

在一个师傅的文章里找到了一条JDK原生的可以invoke任意函数,或实例化任意类的gadget:

UIDefaults.get
  UIDefaults.getFromHashTable
    UIDefaults$LazyValue.createValue
      SwingLazyValue.createValue
继续阅读“探寻Hessian JDK原生反序列化不出网的任意代码执行利用链”

.Net ViewState反序列化实现无文件哥斯拉内存马

基础

  1. 需要拿到硬编码的 machineKey,一般储存在根目录下的 web.config 文件中。
  2. 较常见与使用了多点负载均衡部署的传统 ASP.net MVC 开发的网站之中,因为machineKey默认为动态生成,在负载均衡环境中,需要固定使用相同的machineKey才能互相识别其他节点生成的页面里的VIEWSTATE数据。
  3. 通用系统里的 machineKey 一般不会更改。

前言

常规ViewState的反序列化利用方式为找到网站路径后,通过echo等方式写入aspx\ashx\asmx马,实现getshell,本文将要介绍的是一种比较特殊的利用方式,只需要在请求包之中携带包含WebShell逻辑的ViewState序列化数据,且不产生新文件,也不会写入任何网站文件,即可实现WebShell逻辑。

继续阅读“.Net ViewState反序列化实现无文件哥斯拉内存马”

CVE-2022-22947 注入哥斯拉内存马

前言

CVE-2022-22947是Spring Cloud Gateway的一个SpEL命令注入漏洞,前一阵c0ny1师傅给出了使用SpEL语句注入内存马的方式,但是怎能仅止步于基础的CMD Shell,于是考虑注入更高级别的内存马。

由于Spring Cloud Gateway使用Spring+Netty+WebFlux框架进行开发,不存在Servlet API,所以只能选择对Servlet没有依赖的内存马,比如:Godzilla

继续阅读“CVE-2022-22947 注入哥斯拉内存马”

对一个使用JWT验证的系统渗透纪实

某次,对某客户的系统进行渗透测试,上头的命令是必须拿下网站系统管理员用户的权限,经过分析后发现该系统使用SpringBoot框架开发,使用JWT类型的身份验证方式,并且开启了Actuator端点。

继续阅读“对一个使用JWT验证的系统渗透纪实”

BurpCrypto: 对单加密参数的登录接口进行密码爆破的一种方法

在各种渗透测试的密码爆破的攻势下,有部分应用系统开发者开始另辟蹊径,将用户名密码加密至一个单参数的base64编码数据中。

如图所示:

这样处理后常规的密码爆破方式就无计可施了,但是借助BurpCrypto插件,依然可以顺利爆破,下面我来介绍一下如何操作。

继续阅读“BurpCrypto: 对单加密参数的登录接口进行密码爆破的一种方法”

BurpCrypto: 万能网站密码爆破测试工具

完整使用说明现已更新至项目Github页面:

https://github.com/whwlsfb/BurpCrypto/blob/master/README-zh_CN.md

在Web渗透测试中有一个关键的测试项:密码爆破。

目前越来越多的网站系统在登录接口中加入各式各样的加密算法,依赖于BurpSuite中的那些编码方式、Hash算法已经远远不够,这里给大家介绍一款支持AES/RSA/DES加密算法,甚至可以直接将加密算法的Javascript脚本运行与BurpSuite中的插件:BurpCrypto

继续阅读“BurpCrypto: 万能网站密码爆破测试工具”

Lede软路由开启Softether UDP加速

最近被梅林固件折腾的没脾气了,总是运行一段时间就无法SSH、服务无法重启、DNS无法解析等问题,内存、CPU、日志也都看不出来问题。

昨天终于把家里的出口设备从华硕的AC66U-B1换成了运行在ESXi中的Lede软路由,把VPN服务也从OpenVPN换成了Softether,发现Softether真的是比OpenVPN强太多了,但是遇到一个小问题,就是无论如何都开启不了UDP加速,状态里显示是支持UDP加速,但是未激活。

继续阅读“Lede软路由开启Softether UDP加速”