XOR Passwort Encode/Decode für IBM Websphere XML Konfigurationsdateien
IBM Websphere speichert Passwörter der WebSphere Application Server Konfiguration in XML Dateien im Profilpfad der WAS Adminkonsole (IBM Integrated Solutions Console – ISC). Diese Passwörter sind nicht verschlüsselt, sondern nur per XOR kodiert. Da
a xor b xor b = a
gilt, kann ein XOR kodiertes Passwort auch wieder im Klartext ausgegeben werden. IBM liefert Werkzeuge für den Decode/Encode Vorgang gleich mit.
Um dies zu verdeutlichen, betrachte ich einen Passwordhash einer IBM WebSphere Application Server Zelle (security.xml). Die kodierten Passwörter können einfach gefunden werden:
grep xor security.xml
Vorgehensweise für Websphere 8.0 und 8.5 – Decoding
Zuerst in das Verzeichnis <WAS_HOME> wechseln. Von dort den Decoder Prozess ausführen:
java/bin/java -Djava.ext.dirs=./plugins:./lib com.ibm.ws.security.util.PasswordDecoder {xor}HDc6PDQZNjM6Hjw8OiwsfQ==
Das Passwort ist mit dem führenden “{xor}” zu übergeben.
Vorgehensweise für Websphere 9.0 – Decoding
Wie bei WAS 8.x Installationen in das Verzeichnis <WAS_HOME> wechseln. Von dort den Decoder Prozess starten, die Pfade für Java sind in WAS 9.0 unter Umständen abweichend (je nachdem, wie es installiert wurde). Ich habe es in Beispiel mit Java 8.0 aufgerufen:
java/8.0/bin/java -Djava.ext.dirs=./plugins:./lib com.ibm.ws.security.util.PasswordDecoder {xor}HDc6PDQZNjM6Hjw8OiwsfQ==
Der Zugriff auf die Konfigurationsdateien ist daher unbedingt besonders zu schützen!
Encoding
Der Prozess des Encodings ist durch Austauschen von PasswordDecoder durch PasswordEncoder möglich:
java/8.0/bin/java -Djava.ext.dirs=./plugins:./lib com.ibm.ws.security.util.PasswordEncoder CheckFileAccess!
Die Thematik wird auch von IBM auf developerworks diskutiert: devloperworks – Encrypting WebSphere Application Server system passwords