免责声明:
本公众号致力于安全研究和红队攻防技术分享等内容,本文中所有涉及的内容均不针对任何厂商或个人,同时由于传播、利用本公众号所发布的技术或工具造成的任何直接或者间接的后果及损失,均由使用者本人承担。请遵守中华人民共和国相关法律法规,切勿利用本公众号发布的技术或工具从事违法犯罪活动。最后,文中提及的图文若无意间导致了侵权问题,请在公众号后台私信联系作者,进行删除操作。
bi类产品由于需要使用大量数据源,这些数据源的驱动jar可能是任何一款数据库,也可能是用户自己的jar,当用户能使用自己的jar时,我们只需要对其进行修改,就能实现夹带私货(任意代码执行)。
以下是帆软的案例:
有的小伙伴会问到,代码闭源怎么办?其实修改jar并不一定要在项目代码上修改后重新打包,我们可以直接对单个java文件修改后编译替换,以下是步骤与教程。
第一步:确认jar包原本使用的jdk版本
将jar解压为class文件,使用javap命令
jar -xvf 目标jar
javap -verbose target.class | grep major
55版本对应JDK11
第二步:重写一个需要修改的java类使用刚刚查的版本JDK编译
我这边修改了DB2驱动的connect方法
编译的时候需要使用-cp将原本的jar包作为依赖
javac -cp 原本的jar 目标.java
告警可以忽略,字节码文件已经编译出来了
第三步:替换jar包中的class
命令查找JAR包中要替换的class文件的确切位置。
jar tvf xxx.jar | grep 要替换的clas文件名
构造同样的目录结构将class文件放置在内
jar uvf xxx.jar com/xxx/xxx/xxx.class
这个命令会将class替换掉原来jar包中的class
当我们构造好jar包,在连接db2数据库时使用了我们自己的驱动时就会触发我们写的代码,Bi类的系统很多都支持包括阿里的chat2DB,这个姿势还能用于留后门,毕竟谁会想到去检查jdbc的jar包。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...