Wie jeder Systemadministrator, der von der Perfektion seines eigenen Speichers und der Fähigkeit überzeugt war, sich mitten in der Nacht den 25-stelligen Windows XP-Installationscode zu merken, hat er kürzlich eine solche Ausnahme festgestellt.
Eines schönen Tages, als ich mich entschied, vorbeizuschauen, um zu überprüfen, was mit meinem UniFi-Controller ist, erhielt ich eine erstaunliche Nachricht: Anmeldefehler.

Nachdem er sich am Kopf gekratzt und sich daran erinnert hatte, wie er in einem Moment den PIN-Code von der Karte vergessen hatte, den er rein mechanisch tippte, begann er, mögliche Optionen zu sortieren. Nachdem ich eine halbe Stunde lang versucht hatte, in einem Notizbuch nach Notizen zu suchen und die auf den Monitor geklebten Sklerotika zu überprüfen, wurde mir klar, dass ich nach Problemumgehungen suchen musste.
Machen Sie sofort eine Reservierung für diejenigen, die kritisieren möchten - der Konto- / Passwort-Manager, ala LastPass, wird verwendet. Tatsächlich wird LastPass verwendet. Und die Daten von dort haben nicht zu einer erfolgreichen Authentifizierung beigetragen.
Nach dem Durchsuchen der bürgerlichen Foren wurden die erforderlichen Informationen zum Zurücksetzen des Passworts von einem Konto im Controller empfangen, verstanden, verdaut und in einem kurzen Memo gesammelt.
Also gegeben:
1. UniFi-Controller (spielt nicht die Rolle des Betriebssystems - Linux oder Windows) mit Zugriff auf das Betriebssystem selbst.
2. Internetzugang.
3. Gerade Arme.
Der UniFi-Controller speichert die gesamte Konfiguration in der Mongo-Datenbank.
Überprüfen Sie, ob für das gesuchte Konto Informationen erforderlich sind:
mongo --port 27117 ace --eval 'db.admin.find().forEach(printjson);'
In diesem speziellen Fall fordern wir Informationen für das
Administratorkonto an .
Wenn wir nach VasyaPupkin-
Buchhaltung suchen, sieht
die Abfrage folgendermaßen aus:
mongo --port 27117 ace --eval 'db.VasyaPupkin.find().forEach(printjson);'
Der Auspuff ist ungefähr der folgende:
MongoDB shell version: 2.6.12 connecting to: 127.0.0.1:27117/ace { "_id" : ObjectId("567bfd4fe4b0c81300ff3158"), "email" : "admin@company.com", "email_alert_enabled" : true, "email_alert_grouping_enabled" : true, "html_email_enabled" : true, "is_professional_installer" : false, "last_site_name" : "default", "name" : "admin", "requires_new_password" : false, "time_created" : NumberLong(1450966351), "ui_settings" : { "dashboardConfig" : { "dashboards" : { "5b4c57aadc236c7de53e3c3c" : { "order" : 1 } }, "lastActiveDashboardId" : "5b4c57aadc236c7de53e3c3c" }, "statisticsPreferBps" : true }, "x_shadow" : "$6$0YiSt9dQ$YrNKedOCjOP2xl3y9FhRasafdhbdfadamBKIjZ4l9Mm4cy/m49dt0bN.sYaFvgVb5vce45KypFe07iNYc1" }
Interessensgebiet für uns:
x_shadow" : "$6$0YiSt9dQ$YrNKedOCjOP2xl3y9FhRasafdhbdfadamBKIjZ4l9Mm4cy/m49dt0bN.sYaFvgVb5vce45KypFe07iNYc1"
Nach der Google-
Analyse stellen wir fest, dass der Verschlüsselungsalgorithmus mit
SHA-512 crypt (3) kompatibel ist.
Ups Wir haben die Idee des Entschlüsselns in das hintere Regal verschoben und gehen in die andere Richtung.
Wir haben Zugriff auf die Datenbank, daher benötigen wir nur einen Hash aus dem uns bekannten Passwort. Und das Aktualisieren des Datensatzes in der Datenbank ist etwas Einfaches.
Wir gehen zu:
Wir wählen den gewünschten Algorithmus aus und geben das Passwort ein, das wir verwenden werden:

Drücken Sie den magischen kleinen blauen Knopf:

Der resultierende Hash wird sorgfältig kopiert, dann brauchen wir ihn.
Und jetzt ist es Zeit für den letzten Schritt:
admin.mongo --port 27117 ace --eval 'db.admin.update({name:"admin"},{$set:{x_shadow:"$6$ee74396ce4c563de$oLm93BwJywYo1sUFgX8U0FC.p75t1Jv838.0defRCe36jgX6PU3h.m3NL6tjCs8Q/1Ymtge0DXz9shb//dyEN."}})'
Trommelwirbel ... Drücken Sie die Eingabetaste.
MongoDB shell version: 2.6.12 connecting to: 127.0.0.1:27117/ace WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Wir gehen zur Authentifizierungsseite des UniFi-Controllers, geben den Benutzernamen ein:
admin (wir haben das Passwort dafür geändert), geben das Passwort ein, für das der Hash generiert wurde.
Und voila, alles funktioniert, es gibt Zugänge, alle sind glücklich und tanzen.