长亭百川云 - 文章详情

有一个gadget正在泄露你的ID

回忆飘如雪

38

2024-07-14

 0x01 

背景

在Java反序列化漏洞炙手可热的当下,许多自动化工具都在使用ysoserial的gadget。而这些gadget当中,有一个gadget正在偷偷泄露你的id --- BeanShell1

这意味着经常使用shiro批量爆破gadget工具的小伙伴,蓝队同学可能解密下payload就能得到你的id了。

 0x02 

定位信息泄露属性

通过使用java-object-searcher搜索,找到敏感信息存储在bsh.NameSpace类的variables属性中。

通过阅读该类代码,发现只有setTypedVariable方法对variables进行put操作,在该处下断点。

重新调式,看到当前运行路径被put进来后,顺着调用堆栈往上分析。发现BeanShell1在Interpreter对象初始化时,调用bsh.Interpreter#initRootSystemObject设置了bsh.cwd值为当前运行路径,最终它被保存到了序列化数据中。

 0x03 

构造干净的BeanShell1

既然Interpreter对象通过setu方法存储了敏感信息,那么我们同样可以调用该方法将敏感信息覆盖掉,防止信息泄露。

所以要构造一个干净的BeanShell1 gadget,只需要在Interpreter对象创建后反射调用setu方法覆盖bsh.cwd值为.(第13-15行代码)即可。

目前已经给ysoserial项目pr,等待官方修复。当然大家也可以使用我二次开发的ysoserial-for-woopecker。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2