
Eine Schwachstelle kann es einem Angreifer ermöglichen, das automatisch generierte Geheimnis-Token des Entwicklungsmodus zu erraten.
Eine Sicherheitslücke kann es einem Angreifer ermöglichen, den automatisch generierten Entwicklungsmodus-Geheimtoken zu erraten.
Ruby-on-Rails, wenn es im Entwicklungsmodus läuft. Im Entwicklungsmodus ist es für einen Angreifer möglich, den Schlüssel zu erraten, der zum Sichern der Sitzungen verwendet wird.
Rails verwendet 3 Umgebungen (Entwicklung, Test, Produktion). Wenn eine Anwendung den Entwicklungsmodus verwendet, können Sie den geheimen Token erraten und die verschlüsselte Sitzung entschlüsseln.
Der zum Schutz der Sitzung verwendete Schlüssel wird aus dem Namen der Anwendung abgeleitet.
Beispiel:
rails new Jakom
Jakom: Anwendungsname.
Dadurch können wir erraten, dass der Schlüssel die Ausgabe der Generierungsmethode ist:
PKDF2_HMAC_SHA1[ MD5 [ APPNAME + "::Application" ] , salt: "authenticated encrypted cookie" , iterations: 1000 , key's length: 32 ]
Wie wir hier sehen können:
key = pbkdf2_hmac("sha1", md5_name.encode("utf-8"), "authenticated encrypted cookie".encode("utf-8"), 1000, 32)
In Rails werden Sitzungen mit AES-256-GCM verschlüsselt. Wenn Sie den Schlüssel haben, können Sie Sitzungen entschlüsseln/verschlüsseln.
Das Letzte, was Sie benötigen, ist das Format der Sitzung:
BASE64 [ DATA ] -- BASE64 [ IV ] -- BASE64 [ AUTH_TAG ]
Wie wir hier sehen können:
data = binascii.hexlify(base64.b64decode(base64_data.split("--")[0])).decode("utf-8")
iv = binascii.hexlify(base64.b64decode(base64_data.split("--")[1])).decode("utf-8")
tag = binascii.hexlify(base64.b64decode(base64_data.split("--")[2])).decode("utf-8")
Der erste Teil des Sitzungscookies sind die verschlüsselten Daten, der zweite Teil ist der IV, der dritte Teil ist das GCM-Tag (Authentifizierungstag).
Mit diesen Informationen können wir unsere Sitzungen direkt entschlüsseln:

