So verlieren Sie den Zugriff auf das Live-System, indem Sie einfach den Quellcode fummeln

Sicherheit mit Beispielen aus der Praxis ist immer interessanter.

Einmal kam ein Kunde mit einer Anfrage für Penetrationstests. Er hatte einige Gründe zur Besorgnis, unter anderem wurde einer gehört: „Vor einigen Monaten kam ein neuer Entwickler zu uns, bekam Zugriff auf den Quellcode, die Dokumentation, einen Testserver, verschwand zwei Tage später und antwortet immer noch nicht. Wie kann mich das bedrohen? Der Zugang zum Live-System wurde ihm nicht gewährt. “

Wir werden nicht über die Fehler von Entwicklern sprechen, die zu ernsthaften Lücken im Live-System werden können. Alles ist viel einfacher - der Quellcode selbst kann direkte Anweisungen und Zugriffe enthalten.

Von den verschiedenen Projekten, die wir auf Sicherheit getestet haben, werde ich echte Beispiele geben, wenn wir nur mit dem Quellcode in das System selbst eindringen könnten. Alle diese Problembereiche wurden behoben und zusätzliche Informationen in den Screenshots werden ausgeblendet.

System 1.
Der geklonte Code von gita ist nicht nur die neueste Version, sondern auch der Verlauf aller Änderungen. Normalerweise führen wir den Quellcode für vertrauliche Informationen mit gittyleaks aus .

In diesem Projekt haben wir einen privaten Verschlüsselungsschlüssel gefunden, der einmal aus dem Code entfernt wurde, aber dennoch im Live-System verwendet wurde. Dieser Schlüssel wurde zur Authentifizierung verwendet. Wenn wir den Mechanismus kennen, können wir für jeden Benutzer, einschließlich des Administrators, ein beliebiges Authentifizierungscookie generieren.

Bild
Bild 1. Ausgabe: gittyleaks --find-irgendetwas


System 2.
Sie können das Git-Dienstprogramm verwenden und es auffordern, alle jemals gelöschten Dateien anzuzeigen. In diesem System haben wir eine Datei deployer.pem gefunden, die sich im Stammverzeichnis des Projekts befand und zum automatischen Bereitstellen des Projekts auf Servern über den SSH-Kanal verwendet wurde. Der SSH-Port im Live-System wurde geöffnet. Warum ist es offen? Die Entwickler antworteten, dass sich ihre Build-Maschine hinter einer dynamischen IP-Adresse befand, und beschlossen, den Port nicht zu schließen - "sowieso wird niemand den SSH-Schlüssel abholen". Gee-gee ...

Bild
Bild 2. Ausgabe: git log --diff-filter = D --summary

System 3.
Mit diesem System war alles noch einfacher. Es kann sich lohnen, in die Skripte der Datenbank zu gelangen und zu sehen, wie Benutzer standardmäßig erstellt werden. Normalerweise der erste Benutzer, der einen Administrator mit den höchsten Berechtigungen erstellt. In den Skripten haben wir einen Code gefunden, der aus echten Passwörtern einen Hash generiert und in die Datenbank geschrieben hat. Überraschenderweise wurden 5 Benutzer erstellt, aber das Passwort für den wichtigsten Administrator ging zu unserem Erstaunen über das Live-System. Und dieser Code ist übrigens nicht das erste Jahr, und nicht eine Person hat damit gearbeitet.

Bild
Bild 3. So finden Sie echte Passwörter in den Datenbankskripten

Das Versprechen.

1. Wenn sich Ihr Projekt in einer Gita befindet, öffnen Sie es und führen Sie einige Befehle aus dem Stammordner aus:

pip install gittyleaks
gittyleaks - alles finden

git log --diff-filter = D --summary

2. Eine goldene Regel. Ein Live-System sollte immer eindeutige Schlüssel und eindeutige Benutzerkennwörter haben und alles darin sollte maximal geschlossen sein.

Die oben genannten Informationen werden nur zu Bildungs- und Bildungszwecken bereitgestellt. Eine Vorgehensweise für ihre Systeme ist nicht erforderlich.

Denis Koloshko

Source: https://habr.com/ru/post/de459552/


All Articles