Références directes d'objets non sécurisées

Une référence directe à un objet est susceptible de se produire lorsqu'un développeur expose une référence à un objet d'implémentation interne, tel qu'un fichier, un répertoire ou une clé de base de données, sans aucun mécanisme de validation permettant aux attaquants de manipuler ces références pour accéder à des données non autorisées.

Comprenons les agents de menace, les vecteurs d'attaque, la faiblesse de la sécurité, l'impact technique et les impacts commerciaux de cette faille à l'aide d'un diagramme simple.

Exemple

L'application utilise des données non vérifiées dans un appel SQL qui accède aux informations de compte.

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

L'attaquant modifie le paramètre de requête dans son navigateur pour qu'il pointe vers Admin.

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

Mains allumées

Step 1- Connectez-vous à Webgoat et accédez à la section des failles de contrôle d'accès. Le but est de récupérer le fichier tomcat-users.xml en naviguant vers le chemin où il se trouve. Voici un aperçu du scénario.

Step 2 - Le chemin du fichier est affiché dans le champ 'le répertoire courant est' - C: \ Users \ userName $ \. Extract \ webapps \ WebGoat \ leçon_plans \ fr et nous savons également que le fichier tomcat-users.xml est conservé sous C: \ xampp \ tomcat \ conf

Step 3- Nous devons parcourir tout le chemin hors du répertoire actuel et naviguer à partir de C: \ Drive. Nous pouvons faire de même en interceptant le trafic à l'aide de Burp Suite.

Step 4 - Si la tentative réussit, il affiche le fichier tomcat-users.xml avec le message "Félicitations. Vous avez terminé cette leçon avec succès."

Mécanismes préventifs

Les développeurs peuvent utiliser les ressources / points suivants comme guide pour éviter les références directes non sécurisées aux objets pendant la phase de développement elle-même.

  • Les développeurs ne doivent utiliser qu'un seul utilisateur ou une seule session pour les références indirectes aux objets.

  • Il est également recommandé de vérifier l'accès avant d'utiliser une référence d'objet directe à partir d'une source non approuvée.