长亭百川云 - 文章详情

虽然但是......有件事比RCE还让人开心

赛博少女

58

2024-07-13

"本故事纯虚构,如有雷同,纯属巧合"

忙活到晚上十点多,好多辛酸

正文


消息框闪烁,是领导丢过来一个exe

“审一下,只要RCE”

打开虚拟机,安装过程很傻瓜,下一步下一步就可,心想审完晚上就可以去吃很久以前了,很可惜,license过期了。按照之前的思路,尝试修改了服务器时间,还是不太行。

还好应用是运行在tomcat之上,tomcat报错日志很完整,可以准确定位到lincense校验逻辑

将jar放到本地idea,反编译后,做了一些混淆操作,看起来不太友好。因为是Tomcat的项目,先配置调试一波,by the way,因为是启动时做的license校验,需要使用LIsten to remote JVM的方式调试,且参数suspend需设置为y

set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10010

因为加了一些防反编译的措施,所以正常的调试也遇到了很多问题,行号不对应,断点只能下到方法上,凑活看吧,不过根据类名以及全局搜索License关键字,还是勉强可以定位到check逻辑

首先尝试直接将getLicense 全部清除,直接new 一个新的

太暴力了,Tomcat启动报错,访问哪个页面都是500

然后尝试构造License这个类,这里又遇到了混淆的坑,License类里面套了多个ilililililililll类,这个类不可读,放弃了。

再从头调试,虽然只能端到方法上,但是死盯着debugg框,发现了一组base64数据,解密出来长这个样子,毫无疑问就是那个过期的license解密出来的数据了

这时候我们换个思路,尝试调用加密逻辑伪造license

首先寻找license的源文件,在安装目录的conf下,找到了license.xml 长得样子很像license,里面有签名 有效实现等参数

然后再去代码中查找相关解密函数

我先将断点下到了解密函数中,尝试很多次都停不下来,直接停到解密后的数据

沉思.....将断点下到配置文件加载处,license.xml确实是被加载到jvm中....

只能硬着头皮本地直接调用了

将修改后的lincese.xml放到虚拟机中,还是无效.....陷入僵局.....

只能在从头跟代码了,期间注意到启动时加载了很多配置文件,一个个去翻,皇天不负有心人,翻到一个css文件夹下的文件时,突然兴奋了起来,里面是一串base64编码后的数据

直接解码后正是上述debug中的license,真狗,原来根本没调用加密解密逻辑。不过后面还跟了一串签名校验,此时已经跟了很多代码,代码比较熟悉了,直接就定位到了签名校验处:

注释掉校验逻辑,再改一下license,有效期到2099年,放上去,大功告成!

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

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