Débugger les requêtes réseaux des apps avec un proxy Web

Les proxy web pour intercepter les requêtes réseau

Un proxy web est un serveur intermédiaire qui agit comme un relais entre un client (généralement un navigateur web) et un serveur distant. Les clients se connectent au proxy au lieu de se connecter directement au serveur, et le proxy transmet la demande au serveur et renvoie la réponse au client.

Il existe plusieurs types de proxy web, chacun ayant des fonctionnalités et des utilisations différentes :

  • Le proxy d'accès : utilisé pour contrôler l'accès à Internet dans les entreprises ou les établissements scolaires. Il peut être utilisé pour filtrer le contenu, limiter l'accès à certaines pages web ou pour authentifier les utilisateurs.
  • Le proxy inverse : utilisé pour masquer l'emplacement réel d'un serveur web ou pour équilibrer la charge entre plusieurs serveurs. Il permet également de protéger les serveurs web en masquant leur emplacement réel aux utilisateurs finaux.
  • Le proxy de cache : utilisé pour stocker les réponses des serveurs dans un cache, afin de réduire les temps de réponse et d'économiser de la bande passante.
  • Le proxy anonymisant : utilisé pour masquer l'adresse IP de l'utilisateur et de protéger sa vie privée en ligne.

Il est important de noter que les proxys peuvent impacter la performance des requêtes car ils doivent récupérer les informations demandées auprès du serveur distant avant de les transmettre au client final.

Un bon outil pour les développeurs mobile ?

Un proxy web peut aider à déboguer les requêtes réseau lors du développement d'une application mobile en fournissant une vue détaillée des données de demande et de réponse entre l'application mobile et le serveur. Les développeurs peuvent utiliser un proxy web pour intercepter et analyser les demandes et les réponses du réseau pour résoudre les problèmes de débogage courants tels que :

  1. Analyse des données de demande : visualiser les données de demande, telles que les en-têtes, les paramètres de requête et les corps de requête, pour vérifier que les données sont correctes et sont transmises de manière appropriée.
  2. Analyse des données de réponse : visualiser les données de réponse, telles que les en-têtes et les corps de réponse, pour vérifier que les données sont correctes et qu'elles sont gérées de manière appropriée par l'application mobile.
  3. Modification des données : simuler des erreurs ou des scénarios de test en modifiant les données de demande et de réponse avant qu'elles ne soient transmises à l'application mobile ou au serveur.
  4. Enregistrement des données : enregistrer les données de demande et de réponse pour une analyse ultérieure ou pour reproduire les erreurs.

L’inspection HTTP avec Burp Suite

Burp Suite est à la base un logiciel de sécurité et de test d'intrusion, qui peut être utilisé pour déboguer les requêtes réseau en interceptant et en analysant les données de demande et de réponse entre l'application mobile et le serveur.

Lien de téléchargement : https://portswigger.net/burp/communitydownload

Figure 1 : Description de l’interface de Burp Suite

Voici les étapes générales pour utiliser Burp Suite pour déboguer les requêtes réseau d'une application mobile :

1. Configurer Burp Suite en tant que proxy

Il faut configurer Burp Suite en tant que proxy pour que l'application mobile envoie les demandes réseau au proxy. Cela peut être fait en configurant manuellement les paramètres proxy sur l'appareil mobile ou sur l'émulateur, ou en utilisant une connexion de pont pour connecter l'application mobile à Burp Suite.

La configuration du proxy se fait ici :

Figure 2 : Configuration du proxy

Elle sera utile pour deux cas :

  • Si vous utilisez un appareil mobile sur votre réseau, il faut autoriser les requêtes hors localhost :

Figure 3 : Configuration de l’écoute du proxy

  • Si vous configurez l’application pour qu’elle envoie les données directement au proxy. Il faut alors indiquer au proxy de rediriger ces requêtes vers le serveur :

Figure 4 : Configuration de la redirection par le proxy

Qui donnera :

Figure 5 : Configuration du proxy - résultat

2. Intercepter les demandes réseau

Une fois configuré, Burp Suite va intercepter les demandes réseau de l'application mobile et les afficher dans l'onglet "Intercept". L’historique se situe dans l’onglet “HTTP history”. Nous pouvons utiliser cette fonctionnalité pour visualiser les données de demande, telles que les en-têtes, les paramètres de requête et les corps de requête.

Figure 6 : Écran d’historique des requêtes

3. Analyse des données de réponse

Nous pouvons utiliser l'onglet "Response" (en bas à droite de la figure 6) pour visualiser les données de réponse, telles que les en-têtes et les corps de réponse, pour vérifier que les données sont correctes et qu'elles sont gérées de manière appropriée par l'application mobile.

4. Modification des données

Nous pouvons utiliser l'onglet "Intercept" pour simuler des erreurs ou des scénarios de test en modifiant les données de demande et de réponse avant qu'elles ne soient transmises à l'application mobile ou au serveur.

Enfin, il est possible d’envoyer la requête au “Repeater”, afin de pouvoir facilement modifier et rejouer les requêtes.

Figure 7 : Menu contextuel pour envoyer une requête au Repeater

Nullement indispensable mais à mettre dans sa boite à outil

Nous avons vu ici la mise en place d’un proxy web pour inspecter les requêtes entre un client et le serveur. Aucunement indispensable dans la vie d’un développeur, il peut cependant se révéler un formidable allié pour déboguer et comprendre les apps mobiles.