woltlab Avatar Upload vuln.

Hallo,

ich mache mir damit bestimmt keine Freunde,aber wie oft Lese ich das ein Woltlab Board gehackt und defaced worden ist.Der Grund dafür ist in der Regel ein SQL-Bug der oftmals in Addons für das Woltlab Forum vorkommt, Natürlich hat auch der Entwickler oftmals solche Lücken drinne.
Das zeigt uns alleine mal wenn man bei milw0rm.com nach Woltlab Bugs sucht.

In der Regel ist es so das ein ACP nicht richtig geschützt wird und oftmals sogar die Passes für den .htaccess Schutz in Thread/Pms stehen, somit ist es eine leichtigkeit in das ACP zu kommen.Woltlab selbst hat es irgendwann selbst mal gemerkt das man über die Option Avatare erstellen/hinzufügen auch php Files hochladen kann, das ganze haben die einfach gelößt.

wbb2 /acp/avatar.php Linie 136

if (!stristr($avatar_extension, 'php') && move_uploaded_file($_FILES['avatar_file']['tmp_name'], "./../images/avatars/avatar-".$avatarid.".".$avatar_extension."")) {
@chmod("./../images/avatars/avatar-".$avatarid.".".$avatar_extension, 0777);

tja das mag ja auch ganz gut ausschauen, wie man sehen kann werden Files mit php aussotiert und somit nicht hochgeladen. Aber hierbei wurde nicht an Server gedacht die auch php als phtml und phtm Pharsen und somit als PHP ausführen.Also stehen wir wieder am Anfang und wir können wieder hochladen was wir wollen.
Das ganze läßt sich leicht Server Seitig abstellen oder man kann auch die PHP Datei bissl bearbeiten, mir ist auch klar das jedes hochgeladene Bild normal auf Code Inhalt geprüft werden muß.

Hier mal ein kleiner Fix,es gibt aber noch bessere und Sichere Möglichkeiten:

if (!stristr($avatar_extension, 'php') && !stristr($avatar_extension, 'phtml') && !stristr($avatar_extension, 'phtm') && move_uploaded_file($_FILES['avatar_file']['tmp_name'], "./../images/avatars/avatar-".$avatarid.".".$avatar_extension."")) {
@chmod("./../images/avatars/avatar-".$avatarid.".".$avatar_extension, 0777);

Viel Spaß beim Umsetzen,axo bevor ich es vergesse..

wbblite /acp/avatar.php Linie 96

if(move_uploaded_file($_FILES['avatar_file']['tmp_name'], "../images/avatars/avatar-".$avatarid.".".$avatar_extension."")){
chmod("../images/avatars/avatar-".$avatarid.".".$avatar_extension,0777);

Hier wird gerade mal garnix geprüft,ist schon schade das selbst bei dem letzten Release 1.0.2 pl3 solch eine Lücke immer noch vorhanden ist.

Schreibe einen Kommentar