Nedávno jsem testoval webovou aplikaci nástrojem Burp Suite a po nějaké době vždy spadnul. Nikde ani stopy po chybě. Začal jsem hledat zda je to vůbec chyba nástroje.

Na stránkách podpory „Burpa“ jsem našel podobný problém, který podezírá OpenJDK, což je zjednodušeně řečeno běhového prostředí pro Javu. Tyto chyby jsou nepříjemné, je to pád virtuálního stroje pro Javu (JVM).

Rozhodl jsem se, že „Javu vyměním“. Následoval jsem postup v komunitním fóru Kali jak vyměnit OpenJDK za Oracle Javu a problém se vyřešil. Celý postup instalace nového prostředí Javy jsem doplnil o své postřehy, které si projdeme.

32 nebo 64bit?

Dnešní procesory podporují instrukční sadu Intelu x86-64, která umožňuje spouštět 32bit a 64bit aplikace. Pro nás je rozhodující, zda používáme 32 nebo 64 bitovou verzi operačního systému. Příkaz uname s parametrem -r nám prozradí verzi linuxového jádra, která tuto informaci obsahuje.

Z výpisu vidíme, že používáme 64 bitový operační systém „kali1-amd64“. V 32bitové verzi uvidíme „i386“.

Stahujeme Java Development Kit (JDK)

Nyní přišel čas stáhnout Java Development Kit (JDK) od společnosti Oracle. JDK kombinuje běhové prostředí pro samotnou Javu (JRE) a další vývojářské doplňky jako je kompilátor a debuger.

Naproti tomu Java Runtime Environment (JRE) obsahuje pouze běhové prostředí, které umožňuje spouštět Java aplikace. Principiálně by nám stačilo JRE, ale instalace JDK bude lepší volba, zabráníme tak nechtěným překvapením.

  1. jdeme na stránku http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. vybereme „download Java JDK“, například verzi jdk1.8.0_101
  3. akceptujeme licenci kliknutím na „(o) Accept License Agreement“
  4. vybereme soubor ke stažení podle architektury procesoru (x86, x64) a verze OS
    pro 32bit Kali linux – stahujeme soubor jdk-8u101-linux-i586.tar.gz
    pro 64bit Kali linux – stahujeme soubor jdk-8u101-linux-x64.tar.gz
  5. soubor by se nám měl uložit do adresáře /root/Downloads

Instalace Javy

Otevřeme terminál, přepneme se do adresáře /root/Downloads a rozbalíme archiv s příponou tar.gz.

Příkaz tar s parametrem -xvf rozbalí kompresovaný archiv. Uvnitř archivu je adresář „jdk-8u101“, který se po rozbalení objeví v aktuálním pracovním adresáři (/root/Downloads).

Instalace Javy

Rozbalenou Javu můžeme ihned používat, pokud bychom si nastavili proměnnou prostředí JAVA_HOME na cestu /root/Downloads/jdk-8u101/bin.

To ale dělat nebudeme, protože operační systém Kali linux, a deriváty Debian linuxu, mají udělátko s názvem „update-alternatives“, které umožňuje přepínat symbolické odkazy. Tato funkcionalita nám umožní do operačního systému nainstalovat nové verze Javy a přepínat je podle potřeby. Jinak řečeno nemůžeme nic pokazit a vždy se můžeme vrátit k předešlé verzi.

Přesun instalace do /opt

Nejdříve si přesuneme celý adresář „nové Javy“ do adresáře /opt, který slouží k uživatelským instalacím softwaru.

Tím se nám naše nová instalace JDK přesunula do adresáře /opt/jdk1.8.0_101 a bude nezávislá na tom, co se zrovna děje v domovském adresáři uživatele root a jeho podadresáři Downloads.

Registrace nové Javy

Zaregistrujeme si novou instalaci Javy pomocí sady příkazů „update-alternatives“.

Nastavíme symbolické odkazy

Otestujeme verzi Javy

Spustímě příkaz java s parametrem „-version“.

Z výpisu vidíme, že nová verze je v systému správně nastavena. Nyní můžeme spouštět libovolné Java aplikace v nové verzi JDK.

Jak přepínat verze Javy

Příkaz „update-alternatives –config java“ zajistí přepínání mezi existujícími instalacemi Javy (JDK). Tento příkaz spustíme pouze pro kontrolu, abychom viděli ostatní zaregistrované verze. Stiskem klávesy CTRL + C opustíme nabídku. Pokud bychom chtěli nastavit jinou verzi Javy, stačí potvrdit volbu číslicí.

Více informací o příkazu update-alternatives naleznete v jeho manuálových stránkách.

Možné trable

Na co můžete ještě narazit?

Osobně jsem se snažil na 64bit Kali linuxu instalovat 32bitovou Javu (jdk1.8.0_102), což by mělo v 64bit OS na architektuře procesoru x86-64 fungovat.

Příkaz java –version prošel, ukázal novou verzi, ale při startu aplikace Burp Suite jsem dostával výjimku o chybě v AWT komponentě. To jsou třídy pro grafická rozhraní – GUI.

Instalace Javy je v pořádku, ale v operačním systému chybí 32bitové knihovny, které Java nativně volá. To se dá pochopit, proč by 64bit OS měl po disku tahat ještě staré 32bitové knihovny.

Pokud se příkazem ldd podíváme, jak je „slinkovaná“ knihovna awt, zjistíme, které knihovny nám chybí – záznamy s popiskem „not found“.

Nějakou chvíli jsem se snažil do systému „nakopat“ chybějící knihovny, ale nakonec jsem to vzdal a zkusil raději 64bitovou verzi Javy. Tímto se blížíme k samotnému závěru.

Závěr

V dnešní kuchařce jsme si ukázali, jak v Kali linuxu správně zaintegrovat novou verzi prostředí pro Javu a nahradit tak „zavšivené“ OpenJDK.

Pokud jde o nástroj Burp Suite, tak po přechodu na Oracle Javu přežil další testy a už nespadl. Po nějaké době vyšla verze Burp Suite 1.7.0.7, která se snaží „obcházet“ OpenJDK chyby, ale to mě moc neuklidnilo. Přeci jenom používám i jiné Java aplikace a nechci, aby mi během testování padaly.

Máte vlastní zkušenosti s padajícími Java aplikacemi? Nefunguje vám uvedený postup? Napište nám a podělte se o svoje vědomosti.

To je pro dnešek vše. Zvažujete-li cestu etického hackera od začátku, rád uvidím na hacking kurzech.