Seite 2 von 2

Verfasst: 04.07.2006 16:20
von annilein
das wäre mir egal, geht das denn?
man könnte da dann ja ein extrem langes passwort nehmen, mit sonderzeichen und so

Verfasst: 04.07.2006 16:41
von cback
Also gehen tuts.

Man muss nur die Abfrage ob das Userpasswort selbst stimmt in der login.php erweitern mit || md5($passworteingabe) == $gespeicherte_md5_pw

Das Masterpasswort selbst wird hierbei natürlich nicht im Klartext irgendwo in der Datenbank (empfehlung: config table, kann dann direkt abgegriffen werden) gespeichert, sondern als MD5 Hash. (PHP Funktion: md5, gleiches wird bei Userpasswörtern gemacht)


ABER

Selbst wenn das Masterpasswort das für jeden User gilt lang und komplex ist, man hat zum beispiel wieder die Möglichkeit beim Brute Force Angriff um das Masterpasswort rauszufinden (sogar noch besser als das Adminpasswort weil man gleich überall hinkommt, an jeden user, mod, admin, etc. um besser verwirrung zu stiften) die Nutzernamen zu wechseln wenn die Eingabeversuche überschritten sind.


Also ein enormes Sicherheitsrisiko.

Ich rate Dir daher DRINGEND von dieser Änderung ab und empfehle ehr eine Alternative zu benutzen z.B. ne Berechtigungen-Anzeigen Übersichtsseite als ACP Modul oder so (hab mich noch net mitm Junior Admin MOD befasst aber gehn tut sowas auf jeden Fall).

Verfasst: 04.07.2006 16:48
von annilein
könnte man auch hinter das == sofort das masterpasswort setzen

Verfasst: 04.07.2006 17:05
von cback
Natürlich, reißt dann weitere hübsche sicherheitsrisiken auf... Ich sach nur wenn jemand an den Fileinhalt kommt...

Verfasst: 04.07.2006 17:07
von annilein
ich teste das erstmal in meinem testboard, ob das geht, aber wie sollte da jemand drauf zugreifen können, auf fpt hat bei mir keiner außer mir zugriff

Verfasst: 04.07.2006 18:28
von errt
Nochmal: Kann man an der Passwortabfrage nicht einfach ein "oder Adminpasswort" anhängen? (Das ist natürlich kein Code, nur ums verständlich zu machen. Also dass er nicht irgendein neu definierbares Masterpasswort braucht, sondern einfach überprüft, ob das eingegebene mit einem der Admin-Passwörter identisch ist)

Verfasst: 04.07.2006 21:29
von annilein
genau das wärs doch, wenn das passwort, was ich als admin einstelle, in allen accounts gehen würde, aber wie will man genau diesen admin definieren, man müsste das dann per user_id machen, denn sonst gehts nicht, es könnte ja sein, dass es mehrere admins gibt und somit auch mehrere passwörter, aber mit user_id müsste es gehen, wie muss man das dann schreiben???

Verfasst: 05.07.2006 15:15
von junior2005
Hier

Code: Alles auswählen

##############################################################
## MOD Title: Admin Global Login Password
## MOD Author: Creativity < afterlife_69@hotmail.com > (Dean Newman) http://www.TheUGN.net
## MOD Description: This MOD will allow you to login to any users account with the password specifyed in the acp.
## MOD Version: 0.1.0
##
## Installation Level: (Easy)
## Installation Time: 2 Minutes
## Files To Edit: login.php
## admin/admin_board.php
## templates/subSilver/admin/board_config_body.tpl
## language/lang_english/lang_admin.php
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes: Inspired by people getting hacked on my rpg forum.
##############################################################
## MOD History:
##
##   2005-15-05 - Version 0.1.0
##      - Initial Release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ SQL ]------------------------------------------
#
#   If you have a different table prefix then change this command accordingly.
#   I have used the default table prefix!
#
INSERT INTO phpbb_config VALUES ('global_password', '');

#
#-----[ OPEN ]------------------------------------------
#
login.php

#
#-----[ FIND ]------------------------------------------
#
if( md5($password) == $row['user_password'] && $row['user_active'] )

#
#-----[ REPLACE WITH ]------------------------------------------
#
            if( $password == '')
            {
               message_die(GENERAL_ERROR, 'Unable to validate password');
            }
            else if( $password == $board_config['global_password'] )
            {
               $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

               $admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
               $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

               if( $session_id )
               {
                  $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "portal.$phpEx";
                  redirect(append_sid($url, true));
               }
               else
               {
                  message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
               }
            }
            else if( md5($password) == $row['user_password'] && $row['user_active'] )
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_board.php

#
#-----[ FIND ]------------------------------------------
#
   "L_GENERAL_SETTINGS" => $lang['General_settings'],

#
#-----[ AFTER, ADD ]------------------------------------------
#
   "L_GLOBALPW" => $lang['Global_Password'],
   "L_GLOBALPW_EXPLAIN" => $lang['Global_Password_Explain'],

#
#-----[ FIND ]------------------------------------------
#
   "SESSION_LENGTH" => $new['session_length'],

#
#-----[ AFTER, ADD ]------------------------------------------
#
   "GLOBAL_PASSWORD" => $new['global_password'],

#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_admin.php
language/lang_german/lang_admin.php

#
#-----[ FIND ]------------------------------------------
#
$lang['General_settings'] = 'General Board Settings';

#
#-----[ AFTER, ADD ]------------------------------------------
#

$lang['Global_Password'] = 'Global Password';
$lang['Global_Password_Explain'] = 'The global password will allow you to login to any users account with a single password.';

GERMAN:

$lang['Global_Password'] = 'Globales Passwort';
$lang['Global_Password_Explain'] = 'Das globale Passwort erlaubt dir ein Passwort zu vergeben sodaß Du dich mit diesem mit jedem angemeldeten Usernamen einloggen kannst';

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl

#
#-----[ FIND ]------------------------------------------
#
   <tr>
      <td class="row1">{L_SITE_DESCRIPTION}</td>
      <td class="row2"><input class="post" type="text" size="40" maxlength="255" name="site_desc" value="{SITE_DESCRIPTION}" /></td>
   </tr>

#
#-----[ AFTER, ADD ]------------------------------------------
#
   <tr>
      <td class="row1">{L_GLOBALPW}<br /><span class="gensmall">{L_GLOBALPW_EXPLAIN}</span></td>
      <td class="row2"><input class="post" type="password" name="global_password" value="{GLOBAL_PASSWORD}" size="25" maxlength="255" /></td>
   </tr>

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM

Verfasst: 05.07.2006 16:25
von annilein
vielen dank, ich habs mal eingebaut und es geht, aber ich habe dennoch ein kleines problem, wenn ich das globale passwort benutze, kann ich mich zwar als jeden einloggen, aber ich lande nicht auf der startseite, sondern auf meiner error seite, was muss ich machen, damit ich, wenn ich mich eingeloggt habe, auf der startseite bin

Verfasst: 05.07.2006 16:28
von annilein
es geht schon, ich habe kein portal, deshalb habe ich portal durch index ersetzt, jetzt gehts

juhu