Unsichere direkte Objektreferenzen

Eine direkte Objektreferenz tritt wahrscheinlich auf, wenn ein Entwickler eine Referenz auf ein internes Implementierungsobjekt wie eine Datei, ein Verzeichnis oder einen Datenbankschlüssel ohne Validierungsmechanismus verfügbar macht, mit dem Angreifer diese Referenzen manipulieren können, um auf nicht autorisierte Daten zuzugreifen.

Lassen Sie uns anhand eines einfachen Diagramms die Bedrohungsagenten, Angriffsmethoden, Sicherheitsschwächen, technischen Auswirkungen und geschäftlichen Auswirkungen dieses Fehlers verstehen.

Beispiel

Die App verwendet nicht überprüfte Daten in einem SQL-Aufruf, der auf Kontoinformationen zugreift.

String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

Der Angreifer ändert den Abfrageparameter in seinem Browser so, dass er auf Admin verweist.

http://webapp.com/app/accountInfo?acct=admin

Hände an

Step 1- Melden Sie sich bei Webgoat an und navigieren Sie zum Abschnitt mit Kontrollfehlern. Ziel ist es, die Datei tomcat-users.xml abzurufen, indem Sie zu dem Pfad navigieren, in dem sie sich befindet. Unten ist der Schnappschuss des Szenarios.

Step 2 - Der Pfad der Datei wird im Feld "Das aktuelle Verzeichnis ist" angezeigt. - C: \ Benutzer \ Benutzername $ \. Extract \ webapps \ WebGoat \ Lesson_plans \ de. Wir wissen auch, dass die Datei tomcat-users.xml unter gespeichert ist C: \ xampp \ tomcat \ conf

Step 3- Wir müssen den gesamten Weg aus dem aktuellen Verzeichnis heraus durchlaufen und von C: \ Drive aus navigieren. Wir können dasselbe tun, indem wir den Datenverkehr mit Burp Suite abfangen.

Step 4 - Wenn der Versuch erfolgreich ist, wird die Datei tomcat-users.xml mit der Meldung "Herzlichen Glückwunsch. Sie haben diese Lektion erfolgreich abgeschlossen." Angezeigt.

Vorbeugende Mechanismen

Entwickler können die folgenden Ressourcen / Punkte als Leitfaden verwenden, um eine unsichere direkte Objektreferenz während der Entwicklungsphase selbst zu verhindern.

  • Entwickler sollten nur einen Benutzer oder eine Sitzung für indirekte Objektreferenzen verwenden.

  • Es wird außerdem empfohlen, den Zugriff zu überprüfen, bevor Sie eine direkte Objektreferenz von einer nicht vertrauenswürdigen Quelle verwenden.