Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
vor ein paar Tagen gab es ja einen Zwischenfall bezüglich einer Sicherheitslücke in der Forensoftware vom NGB. Mich würden dazu ein paar technische Hintergründe und der Ablauf des Angriffs interessieren. Hat dazu jemand ggf. genauere Infos?
Im IRC hab ich bisher hauptsächlich davon gehört, dass möglicherweise ein Script hochgeladen wurde, dass einen bestimmten User mit Adminrechten ausgestattet hat, allerdings würde mich in dem Zusammenhang auch interessieren, durch welche Lücken das Hochladen eines Scripts ermöglicht wurde...
Ich würde davon ausgehen, dass hier keine genauen Details veröffentlicht werden, da der Fehler ja nicht NGB-spezifisch war sondern es sich um eine allgemeine Lücke in der Software handelt. Von daher würde eine Veröffentlichung die Angriffsmöglichkeit für andere Foren wohl bieten.
Also das mit dem Script hochladen kann ich inzwischen wieder dementieren - der Zugang zum Server selbst blieb sauber, da ist niemand reingekommen.
Bzgl. Veröffentlichung: Naja, es ist ein Exploit der sich einfach umgehen lässt. Kurz zusammengefasst: Es git einen Install Ordner wo alles für Install + Update drinnen liegt. Das hat eine Lücke wodurch es möglich ist, Module hochzuladne. Module sind nichts anderes als PHP/Javascript Code, was sich dadurch ausnützen lässt das man dann einfach eine PHP Variable verwendet um einen gewissen Codeabschnitt zu triggern. Tada, schon kann man sich da mit etwas Wissen was zusammenhämmern, was dazu füht das ein User adminrechte kriegt.
Hässlich, effektiv, aber leicht zu fixen - einfach Install Ordner kübeln. Fugo kann euch da mehr dann erklären
Das Problem war in der Tat, dass aus dem install-Ordner nur das Installationsskript (install.php), nicht jedoch das Upgrade-Skript gelöscht wurde. Das ist natürlich ein peinlicher Fehler, da man ohnehin das gesamte Installationsverzeichnis löschen sollte, bevor man ein Board öffentlich zugänglich macht. Ausserdem war die Schwachstelle öffentlich bekannt, trivial ausnutzbar, und ich kannte sie bereits, bevor sie bekannt wurde. Ich habe die vBulletin-Instanz nicht installiert (deshalb habe ich auch nicht die User-ID 1), allerdings bereits vor Wochen `überprüft`, ob das install-Verzeichnis noch vorhanden ist - unglücklicherweise mit einem `ls isntall` statt `ls install`, was natürlich keine Treffer lieferte.
Über die Schwachstelle im upgrade-Skript lässt sich ein Admin-Account mit beliebigen Zugangsdaten anlegen. Meine Analyse hat gezeigt, dass der Server nicht kompromittiert wurde und die einzige im Admin-CP vorgenommene Aktion das Löschen von drei Kategorien war, sowohl gemäss vB-Admin als auch gemäss Webserver-Access-Log. Dateien wurden keine verändert, die Datenbank per Binlog auf den Zustand nach der letzten Änderung vor dem kompromittierenden `INSERT INTO user ...`-Query zurückgesetzt.
Konket ruft upgrade.php nach dem Laden einiger Bibliotheken
auf. Die vB_Upgrade-Klasse lädt und initialisiert dann eine vB_Upgrade_Ajax-Instanz, da sie über einen Webserver aufgerufen wurde (das Skript liesse sich auch auf der Kommandozeile ausführen). Deren init()-Methode benutzt vom Benutzer übermittelte Daten, um festzustellen, an welcher Stelle im Upgrade-Prozess man sich befindet und welcher Schritt als nächster zu erledigen sei:
wobei $this->registry->GPC teilweise bereinigte GET/POST/COOKIE-Daten enthält. Interessant ist der erste Parameter, welcher festlegt, von welcher Version aus das Upgrade stattfinden soll. Im install/includes-Verzeichnis existieren php-Dateien mit jeweils einer Klassendefinition für jede Version (z.B. class_upgrade_4112.php, welche die Klasse vB_Upgrade_4112 implementiert). Allerdings existiert auch eine Datei namens class_upgrade_install.php, welche die für die initiale Installation vorgesehene Klasse vB_Upgrade_install implementiert. Da an keiner Stelle geprüft wird, ob der Wert von $this->registry->GPC['version'] der tatsächlichen Version entspricht, kann ein Angreifer den Wert `install` übergeben, um die Klasse für die Installation zu laden.
Jede dieser Klassen definiert einen oder mehrere Installations-/Upgradeschritte. Bei welchem Schritt sich der Benutzer gerade befindet, wird in $this->registry->GPC['step'] übergeben. Auch dieser Wert wird nur in eine Zahl konvertiert, aber keiner weiteren Prüfung unterzogen.
In vB_Upgrade_install ist Schritt #7 von entscheidender Bedeutung:
In diesem Schritt wird bei der Installation ein Benutzer mit administrativen Rechten angelegt. Das Problem ist, dieser Schritt lässt sich aufgrund der Schwachstelle auch über das upgrade.php-Skript auslösen, indem man per POST version=install und step=7 übergibt. Die initialen Zugangsdaten stammen ebenso aus per POST übergebenen Benutzerdaten, lassen sich vom Angreifer also frei wählen.
Es existieren inzwischen auch fertige Exploits, um die Schwachstelle auszunutzen, z.B.
Es gehört doch zum kleinem 1x1, dass man das Install Verzeichnis löscht oder umbenennt / Rechte entzieht, oder nicht? :/ Naja, nun weiß mans für die Zukunft.
Ps: Ich wusste gar nicht, dass vB so häßlich aufgebaut ist mit Querys.
Selbstverständlich. Wie erwähnt, die Schwachstelle war mir bekannt und ich habe auch überprüft ob das install-Verzeichnis noch vorhanden war, nur leider aufgrund eines Tippfehlers an entscheidender Stelle angenommen, es wäre gelöscht.
Die Sicherheitslücke ist in der Tat sehr trivial, aber Fehler passieren jedem mal. Und da die Datenbank ja nahezu komplett wiederhergestellt werden konnte, ist das Ganze ja noch vergleichsweise glimpflich abgelaufen
Woher zum Geier weist du, dass du nach "isntall" gesucht hast? Loggst du deine eigenen Aktivitäten penibler als die NSA und das über Wochen oder war das nur ein Beispiel?
Wenn du dich aber so sehr ärgerst Kugelfisch, dann stell dich zwei Minuten in eine Ecke und wir vergessen die Sache