Posts Tagged ‘AcidBASE’

Patchen van BASE wachtwoord opslag

vrijdag, februari 17th, 2012

BASE is een in PHP geschreven webinterface voor het bekijken van Snort IDS alerts die naar een database geschreven zijn.
Echter is de gebruikers authenticatie wachtwoord opslag van BASE niet bepaalt zo veilig meer als de database gestolen wordt.
Wachtwoorden worden namelijk als md5 zonder salts in database opgeslagen. Het md5 hash algoritme is tegenwoordige met rainbow tables of online via opzoek website’s eenvoudig te op te zoeken of vrij snel met een videokaart te kraken. Tijd dus om het hash algoritme in BASE te vervangen door een betere, hier is hoe md5 vervangen wordt door het sha512 algoritme met prefix en suffix salts.

Eerst passen we het bestand /includes/base_auth.inc.php aan.
Regel 332 vervangen we door:

$hash = hash("sha512", ($this->prefixsalt . $passwd . $user . "BASEUserRole" . $this->suffixsalt));

Vervolgens vervangen we regel 354 in het hetzelfde bestand met:

$cryptpwd = hash("sha512", $this->prefixsalt . $password . $this->suffixsalt);

Dan gaan we terug naar het begin van het bestand voegen we de na “var $db;” op regel 34 de volgende regels toe, waarbij we voor de $prefixsalt en $suffixsalt variabelen we een willekeurige random stuk tekst kiezen als salts.

private $prefixsalt = "veryrandomstringhere";
private $suffixsalt = "yetanotherveryrandomstring";

Vervolgens passen we in de database het wachtwoord veld aan zodat het een langere hash kan opslaan. Dit doen we met een tijdelijk PHP script die ook meteen ook een nieuwe wachtwoordhash voor de gebruiker waarmee je aanmeld in de database van BASE update.

< ?php 
$adminusername = "admin"; // acidbase gebruiker.
$aminpassword = "lamepassword"; // (nieuw) gebruiker wachtwoord.
 
error_reporting(0);
include_once("/includes/base_auth.inc.php"); 
$baseuser = new BaseUser(); 
$hash = $baseuser->cryptpassword($aminpassword ); 
$dblink = mysql_connect($alert_host, $alert_user, $alert_password);
if (!$dblink) {
    die("database settings incorrect.");
}
 
mysql_db_select($alert_dbname);
$resupdfield = mysql_query("ALTER TABLE `base_users` CHANGE COLUMN `usr_pwd` `usr_pwd` VARCHAR(128) NOT NULL AFTER `usr_login`");
$resupduserpwd = mysql_query("UPDATE `base_users` SET `usr_pwd`= '".mysql_real_escape_string($hash)."' WHERE `usr_login` = '".mysql_real_escape_string($adminusername)."' LIMIT 1");
if ($resupduserpwd && $resupdfield) {
    echo "<p>AcidBASE gebruiker updaten succesvol.<br />\n
          Je kunt dit bestand nu verwijderen.</p>";
} else {
    echo "<p>AcidBASE gebruiker updaten mislukt.</p>";
}

Pas $adminusername en $aminpassword met de gegevens van de account waarmee je inlogt op acidbase. Sla vervolgden de code hierboven op als update_user.php in de hoofdmap van AcidBASE. Vervolgens ga je naar AcidBASE webinterface en roep je update_user.php aan. Als updaten succesvol is kun je het script verwijderen, je kunt nu inloggen op AcidBASE dat gebruik maakt van sha512 met prefix en suffix salt gehashte wachtwoorden.