Orginal Post von Musel am 23.02.2005 - 03:44
Diskussion: http://archiv.kit-security.de/include.ph…hp&threadid=837
Dooki hat bei einer AddOn idee von uns ein bug gefunden, welchen wir hier mal fixen wollen.
Sucht die Datei login/buddy.php
dort volgende Zeilen:
~Zeile 5 bis Zeile 12:
|
PHP-Quelltext
|
1
2
3
4
5
6
7
|
if (isset($_REQUEST['add']) && $_REQUEST['add']!=$USER['id']) {
if ($DB->num_rows($DB->query("SELECT * FROM ".$db_tab['buddy']." WHERE buddy_friendid='".$_REQUEST['add']."' AND buddy_userid='".$USER['id']."' ORDER by buddy_id DESC LIMIT 1"))==0) {
$DB->query("INSERT INTO ".$db_tab['buddy']." (buddy_userid, buddy_friendid) VALUES ('".$USER['id']."','".$_REQUEST['add']."')");
}
}
elseif ($_REQUEST['add']==$USER['id']) {$event=39; include("admin/config/event.php");}
if (isset($_REQUEST['drop']) && $_REQUEST['drop']!='') {$DB->query("DELETE FROM ".$db_tab['buddy']." WHERE buddy_friendid='".$_REQUEST['drop']."' AND buddy_userid='".$USER['id']."'");}
|
Und ersetzen mit:
|
PHP-Quelltext
|
1
2
3
4
5
6
7
|
if (isset($_REQUEST['add']) && intval($_REQUEST['add'])!=$USER['id']) {
if ($DB->num_rows($DB->query("SELECT * FROM ".$db_tab['buddy']." WHERE buddy_friendid='".intval($_REQUEST['add'])."' AND buddy_userid='".$USER['id']."' ORDER by buddy_id DESC LIMIT 1"))==0) {
$DB->query("INSERT INTO ".$db_tab['buddy']." (buddy_userid, buddy_friendid) VALUES ('".$USER['id']."','".intval($_REQUEST['add'])."')");
}
}
elseif (intval($_REQUEST['add'])==$USER['id']) {$event=39; include("admin/config/event.php");}
if (isset($_REQUEST['drop']) && intval($_REQUEST['drop']) > 0) {$DB->query("DELETE FROM ".$db_tab['buddy']." WHERE buddy_friendid='".intval($_REQUEST['drop'])."' AND buddy_userid='".$USER['id']."'");}
|
Wer es manuell ändern möchte suche nach
$_REQUEST['add'] und ersetze es mit
intval($_REQUEST['add']) der erste request
((isset($_REQUEST['add'])) kann so bleiben.
Und nach :
$_REQUEST['drop'] (die erste abfrage bleibt wieder so) und ersetz die zweite mit:
intval($_REQUEST['drop']) > 0) und die dritte mit:
intval($_REQUEST['drop'])
Das sollte es erstmal gewsen sein. Der fehler ist nicht wegen ein angriff, sondern mehr durch zufall aufgefallen.
mfg Euer Kitnetwork Team.