security testing
Comment tester la sécurité des applications - Techniques de test de la sécurité des applications Web et de bureau
Le besoin de tests de sécurité?
L'industrie du logiciel a acquis une solide reconnaissance à cette époque. Au cours de la dernière décennie, cependant, le cyber-monde semble être encore plus dominant et moteur qui façonne les nouvelles formes de presque toutes les entreprises. Les systèmes ERP basés sur le Web utilisés aujourd'hui sont la meilleure preuve que l'informatique a révolutionné notre village mondial bien-aimé.
De nos jours, les sites Web ne sont pas uniquement destinés à la publicité ou au marketing, mais ils sont devenus des outils plus puissants pour répondre aux besoins de l'entreprise.
Les systèmes de paie basés sur le Web, les centres commerciaux, les services bancaires et les applications boursières ne sont pas seulement utilisés par les organisations, mais sont également vendus comme produits aujourd'hui.
Cela signifie que les applications en ligne ont gagné la confiance des clients et des utilisateurs en ce qui concerne leur fonctionnalité vitale appelée SÉCURITÉ.
Il ne fait aucun doute que le facteur de sécurité a également une valeur primordiale pour les applications de bureau.
Cependant, lorsque nous parlons du Web, l'importance de la sécurité augmente de façon exponentielle. Si un système en ligne ne peut pas protéger les données de transaction, personne ne pensera jamais à les utiliser. La sécurité n'est pas encore un mot à la recherche de sa définition, ni un concept subtil. Cependant, je voudrais énumérer quelques compliments sur la sécurité.
questions d'entretien du centre d'assistance de niveau 1
Exemples de failles de sécurité dans une application
- Un système de gestion des étudiants n'est pas sûr si la branche «Admission» peut modifier les données de la branche «Exam»
- Un système ERP n'est pas sécurisé si DEO (opérateur de saisie de données) peut générer des «rapports»
- Un centre commercial en ligne n'a aucune sécurité si les détails de la carte de crédit du client ne sont pas cryptés
- Un logiciel personnalisé possède une sécurité inadéquate si une requête SQL récupère les mots de passe réels de ses utilisateurs
Sécurité
Maintenant, je vous présente la définition la plus simple de la sécurité dans mes propres mots.
'La sécurité signifie que l'accès autorisé est accordé aux données protégées et que l'accès non autorisé est restreint' .
Donc, il a deux aspects majeurs; le premier est la protection des données et le second est l'accès à ces données. De plus, que l'application soit de bureau ou basée sur le Web, la sécurité s'articule autour des deux aspects susmentionnés.
Laissez-nous avoir un aperçu des aspects de sécurité pour les applications logicielles de bureau et Web.
Ce que vous apprendrez:
- Tests de sécurité Web et de bureau
- Liste des 8 principales techniques de test de sécurité
- # 1) Accès à l'application
- # 2) Protection des données
- # 3) Attaque par force brute
- # 4) Injection SQL et XSS (script intersite)
- # 5) Points d'accès au service (ouverts scellés et sécurisés)
- # 6) Gestion de session
- # 7) Gestion des erreurs
- # 8) Fonctionnalités risquées spécifiques
- lecture recommandée
Tests de sécurité Web et de bureau
Une application de bureau doit être sécurisée non seulement en ce qui concerne son accès mais également en ce qui concerne l'organisation et le stockage de ses données.
De même, les applications Web exigent, encore plus, la sécurité de son accès, ainsi que la protection des données. Un développeur Web doit rendre l'application immunisée contre les injections SQL, les attaques par force brute et XSS (scripts intersites). De même, si l'application Web facilite les points d'accès à distance, ceux-ci doivent également être sécurisés.
De plus, gardez à l'esprit que Brute Force Attack n'est pas seulement lié aux applications Web, les logiciels de bureau sont également vulnérables à cela.
J'espère que cet avant-propos est suffisant et permettez-moi maintenant d'en venir au fait. Veuillez accepter mes excuses si vous pensiez jusqu'ici lire le sujet de cet article. Bien que j’ai brièvement expliqué la sécurité des logiciels et ses principales préoccupations, mon sujet est les «tests de sécurité».
Lecture recommandée => Test de sécurité des applications Web
Je vais maintenant expliquer comment les fonctionnalités de sécurité sont implémentées dans les applications logicielles et comment elles doivent être testées. Je me concentrerai sur les aspects et les moyens des tests de sécurité, et non sur la sécurité.
Outils de test de sécurité recommandés
# 1) Parker net
Netsparker est une solution de test de sécurité des applications Web avec des capacités d'exploration et d'analyse automatiques pour tous les types d'applications Web héritées et modernes telles que HTML5, Web 2.0 et les applications à page unique. Il utilise la technologie de numérisation basée sur les preuves et des agents de numérisation évolutifs.
Il vous donne une visibilité complète même si vous avez un grand nombre d'actifs à gérer. Il a beaucoup plus de fonctionnalités comme la gestion d'équipe et la gestion des vulnérabilités. Il peut être intégré aux plates-formes CI / CD comme Jenkins, TeamCity ou Bamboo.
=> Essayez le meilleur outil de test de sécurité Netsparker#deux) Kiuwan
Trouvez et corrigez les vulnérabilités de votre code à chaque étape du SDLC.
Kiuwan est conforme aux normes de sécurité les plus strictes, notamment OWASP, CWE, SANS 25, HIPPA, etc. Intégrez Kiuwan dans votre IDE pour un retour instantané pendant le développement. Kiuwan prend en charge tous les principaux langages de programmation et s'intègre aux principaux outils DevOps.
=> Scannez votre code gratuitement# 3) Vérification gratuite des logiciels malveillants sur le site Web Indusface WAS
Indusface WAS fournit à la fois des tests de pénétration manuels associés à son propre scanner de vulnérabilité d'application Web automatisé qui détecte et signale les vulnérabilités en fonction du top 10 de l'OWASP et comprend également une vérification de la réputation du site Web des liens, des logiciels malveillants et des vérifications de dégradation du site Web à chaque analyse
=> Exécutez une analyse rapide du site Web gratuitement
=> Nous contacter pour suggérer une liste ici.
Liste des 8 principales techniques de test de sécurité
# 1) Accès à l'application
Qu'il s'agisse d'une application de bureau ou d'un site Web, la sécurité d'accès est mise en œuvre par «Rôles et gestion des droits». Il est souvent fait implicitement tout en couvrant la fonctionnalité,
Par exemple, Dans un système de gestion hospitalière, un réceptionniste est le moins préoccupé par les tests de laboratoire car son travail consiste simplement à enregistrer les patients et à planifier leurs rendez-vous avec les médecins.
Ainsi, tous les menus, formulaires et écrans liés aux tests de laboratoire ne seront pas disponibles pour le rôle de «réceptionniste». Par conséquent, la bonne mise en œuvre des rôles et des droits garantira la sécurité d'accès.
Comment tester: Afin de tester cela, des tests approfondis de tous les rôles et droits doivent être effectués.
Le testeur doit créer plusieurs comptes utilisateurs avec des rôles différents et multiples. Ensuite, il doit utiliser l'application à l'aide de ces comptes et doit vérifier que chaque rôle a accès à ses propres modules, écrans, formulaires et menus uniquement. Si le testeur trouve un conflit, il doit enregistrer un problème de sécurité en toute confiance.
Cela peut également être compris comme un test d'authentification et d'autorisation qui est très bien représenté dans l'image ci-dessous:
Donc, fondamentalement, vous devez tester «qui vous êtes» et «ce que vous pouvez faire» pour différents utilisateurs.
Certains des tests d'authentification comprennent un test des règles de qualité des mots de passe, un test des connexions par défaut, un test de récupération de mot de passe, un test captcha, un test de la fonctionnalité de déconnexion, un test de changement de mot de passe, un test de question / réponse de sécurité, etc.
De même, certains des tests d'autorisation incluent un test de traversée de chemin, un test d'autorisation manquante, un test de problèmes de contrôle d'accès horizontal, etc.
# 2) Protection des données
Il existe trois aspects de la sécurité des données. Le premier est que un utilisateur peut afficher ou utiliser uniquement les données qu'il est censé utiliser . Ceci est également assuré par les rôles et les droits
Par exemple, TSR (représentant de télévente) d'une entreprise peut afficher les données de stock disponible, mais ne peut pas voir la quantité de matière première achetée pour la production.
Donc, cet aspect des tests de sécurité est déjà expliqué ci-dessus. Le deuxième aspect de la protection des données est lié à comment ces données sont stockées dans la base de données .
Lectures complémentaires = >> Qu'est-ce que le test de sécurité de la base de données?
Toutes les données sensibles doivent être cryptées pour les sécuriser. Le cryptage doit être solide, en particulier pour les données sensibles telles que les mots de passe des comptes d'utilisateurs, les numéros de carte de crédit ou d'autres informations critiques pour l'entreprise.
Le troisième et dernier aspect est une extension de ce deuxième aspect. Des mesures de sécurité appropriées doivent être adoptées lors du flux de données sensibles ou critiques pour l'entreprise. Que ces données flottent entre différents modules de la même application ou soient transmises à différentes applications, elles doivent être cryptées pour assurer leur sécurité.
comment ouvrir les fichiers jar avec java
Comment tester la protection des données: Le testeur doit interroger la base de données sur les «mots de passe» du compte utilisateur, les informations de facturation des clients, d’autres données critiques et sensibles et doit vérifier que toutes ces données sont enregistrées sous forme cryptée dans la base de données.
De même, il doit vérifier que les données sont transmises entre différents formulaires ou écrans après un cryptage adéquat uniquement. De plus, le testeur doit s'assurer que les données cryptées sont correctement décryptées à la destination. Une attention particulière doit être accordée aux différentes actions «soumettre».
Le testeur doit vérifier que lorsque les informations sont transmises entre le client et le serveur, elles ne sont pas affichées dans la barre d'adresse d'un navigateur Web dans un format compréhensible. Si l'une de ces vérifications échoue, l'application présente définitivement une faille de sécurité.
Le testeur doit également vérifier la bonne utilisation du salage (en ajoutant une valeur secrète supplémentaire à l'entrée finale comme le mot de passe et en le rendant ainsi plus fort et plus difficile à craquer).
Le caractère aléatoire non sécurisé doit également être testé car il s'agit d'une sorte de vulnérabilité. Une autre façon de tester la protection des données consiste à vérifier la faible utilisation de l'algorithme.
Par exemple, étant donné que HTTP est un protocole en texte clair, si les données sensibles telles que les informations d'identification de l'utilisateur sont transmises via HTTP, il s'agit d'une menace pour la sécurité des applications. Au lieu de HTTP, les données sensibles doivent être transférées via HTTPS (sécurisé via SSL, tunnel TLS).
Cependant, HTTPS augmente la surface d'attaque et il faut donc tester que les configurations de serveur sont correctes et que la validité des certificats est garantie.
# 3) Attaque par force brute
Brute Force Attack est principalement effectué par certains outils logiciels. Le concept est qu'en utilisant un ID utilisateur valide, le s oftware tente de deviner le mot de passe associé en essayant de se connecter encore et encore.
Un exemple simple de sécurité contre une telle attaque est la suspension de compte pendant une courte période, comme le font toutes les applications de messagerie telles que «Yahoo», «Gmail» et «Hotmail». Si un nombre spécifique de tentatives consécutives (principalement 3) échoue à se connecter, ce compte est bloqué pendant un certain temps (30 minutes à 24 heures).
Comment tester l'attaque Brute-Force: Le testeur doit vérifier qu'un mécanisme de suspension de compte est disponible et fonctionne correctement. (S) Il doit essayer de se connecter avec des ID utilisateur et des mots de passe non valides pour s'assurer que l'application logicielle bloque les comptes si des tentatives continues sont faites pour se connecter avec des informations d'identification invalides.
Si l'application le fait, elle est protégée contre les attaques par force brute. Sinon, cette vulnérabilité de sécurité doit être signalée par le testeur.
Les tests de force brute peuvent également être divisés en deux parties: les tests en boîte noire et les tests en boîte grise.
Dans le test de la boîte noire, la méthode d'authentification utilisée par l'application est découverte et testée. De plus, le test de la boîte grise est basé sur une connaissance partielle du mot de passe et des détails du compte et des attaques de compromis de mémoire.
Cliquez sur ici pour explorer les tests de force brute boîte noire et boîte grise avec des exemples.
Les trois aspects de sécurité ci-dessus doivent être pris en compte pour les applications Web et de bureau, tandis que les points suivants ne concernent que les applications Web.
# 4) Injection SQL et XSS (script intersite)
Conceptuellement parlant, le thème de ces deux tentatives de piratage est similaire, ils sont donc discutés ensemble. Dans cette approche, le un script malveillant est utilisé par des pirates pour manipuler un site Web .
Il existe plusieurs moyens de se protéger contre de telles tentatives. Pour tous les champs de saisie du site Web, les longueurs de champ doivent être définies suffisamment petites pour restreindre l'entrée de tout script
meilleur éditeur de texte pour python mac
Par exemple, Le nom de famille doit avoir une longueur de champ 30 au lieu de 255. Il peut y avoir certains champs d'entrée où une entrée de données volumineuse est nécessaire, pour de tels champs une validation appropriée de l'entrée doit être effectuée avant d'enregistrer ces données dans l'application.
De plus, dans ces champs, toute balise HTML ou entrée de balise de script doit être interdite. Afin de provoquer des attaques XSS, l'application doit ignorer les redirections de script provenant d'applications inconnues ou non approuvées.
Comment tester l'injection SQL et XSS: Le testeur doit s'assurer que les longueurs maximales de tous les champs d'entrée sont définies et implémentées. (S) Il doit également s'assurer que la longueur définie des champs d'entrée ne prend en charge aucune entrée de script ni entrée de balise. Ces deux peuvent être facilement testés
Par exemple, Si 20 est la longueur maximale spécifiée pour le champ «Nom» et la chaîne d’entrée «
thequickbrownfoxjumpsoverthelazydog »peut vérifier ces deux contraintes.
Le testeur doit également vérifier que l'application ne prend pas en charge les méthodes d'accès anonymes. Dans le cas où l'une de ces vulnérabilités existe, l'application est en danger.
Fondamentalement, les tests d'injection SQL peuvent être effectués selon les cinq méthodes suivantes:
- Techniques de détection
- Techniques d'injection SQL standard
- Empreinte digitale de la base de données
- Exploitation Techniques
- Techniques d'invasion de signature par injection SQL
Cliquez sur ici pour lire en détail les méthodes ci-dessus pour tester l'injection SQL.
XSS est également un type d'injection qui injecte un script malveillant dans un site Web. Cliquez sur ici pour explorer en profondeur les tests pour XSS.
# 5) Points d'accès au service (ouverts scellés et sécurisés)
Aujourd'hui, les entreprises dépendent et collaborent entre elles, il en va de même pour les applications, en particulier les sites Web. Dans un tel cas, les deux collaborateurs doivent définir et publier des points d'accès l'un pour l'autre.
Jusqu'à présent, le scénario semble assez simple et direct mais, pour certains produits basés sur le Web comme la négociation d'actions, les choses ne sont pas si simples et faciles.
Lorsqu'il y a un grand nombre de public cible, les points d'accès doivent être suffisamment ouverts pour faciliter la tâche de tous les utilisateurs, suffisamment accommodants pour répondre à toutes les demandes des utilisateurs et suffisamment sécurisés pour faire face à tout essai de sécurité.
Comment tester les points d'accès au service: Laissez-moi vous l'expliquer avec le Exemple de l'application Web de négociation d'actions; un investisseur (qui souhaite acheter les actions) doit avoir accès aux données actuelles et historiques sur les cours des actions. L'utilisateur doit avoir la possibilité de télécharger ces données historiques. Cela exige que l'application soit suffisamment ouverte.
Par accommodante et sécurisée, j'entends que l'application doit permettre aux investisseurs de négocier librement (dans le cadre des réglementations législatives). Ils peuvent acheter ou vendre 24/7 et les données des transactions doivent être à l'abri de toute attaque de piratage.
De plus, un grand nombre d'utilisateurs interagiront simultanément avec l'application, l'application devrait donc fournir suffisamment de points d'accès pour divertir tous les utilisateurs.
Dans certains cas, ces les points d'accès peuvent être scellés pour les applications ou les personnes indésirables . Cela dépend du domaine métier de l'application et de ses utilisateurs,
Par exemple, Un système de gestion de bureau Web personnalisé peut reconnaître ses utilisateurs sur la base d'adresses IP et refuser d'établir une connexion avec tous les autres systèmes (applications) qui ne font pas partie de la plage d'adresses IP valides pour cette application.
Le testeur doit s'assurer que tous les accès inter-réseau et intra-réseau à l'application se fait par des applications, des machines (IP) et des utilisateurs de confiance.
Afin de vérifier qu'un point d'accès ouvert est suffisamment sécurisé, le testeur doit essayer d'y accéder à partir de différentes machines ayant à la fois des adresses IP approuvées et non approuvées. Différents types de transactions en temps réel doivent être essayés en masse pour avoir une bonne confiance dans les performances de l'application. Ce faisant, la capacité des points d'accès de l'application sera également clairement observée.
Le testeur doit s'assurer que l'application n'accepte toutes les demandes de communication provenant d'adresses IP et d'applications de confiance que pendant que toutes les autres demandes sont rejetées.
De même, si l'application a un point d'accès ouvert, le testeur doit s'assurer qu'il permet (si nécessaire) le téléchargement de données par les utilisateurs de manière sécurisée. De cette manière sécurisée, je veux dire la limite de taille du fichier, la restriction du type de fichier et l'analyse du fichier téléchargé pour les virus ou autres menaces de sécurité.
C'est ainsi qu'un testeur peut vérifier la sécurité d'une application par rapport à ses points d'accès.
# 6) Gestion de session
Une session Web est une séquence de requêtes HTTP et de transactions de réponse liées au même utilisateur. Les tests de gestion de session vérifient comment la gestion de session est gérée dans l'application Web.
Vous pouvez tester l'expiration de la session après un temps d'inactivité particulier, la fin de la session après la durée de vie maximale, la fin de la session après la déconnexion, vérifier la portée et la durée du cookie de session, tester si un seul utilisateur peut avoir plusieurs sessions simultanées, etc.
# 7) Gestion des erreurs
Les tests de gestion des erreurs comprennent:
Vérifiez les codes d'erreur : Par exemple, test d'expiration de la requête 408, 400 requêtes incorrectes, 404 non trouvées, etc. Pour les tester, vous devez faire certaines requêtes à la page de sorte que ces codes d'erreur soient renvoyés.
Les codes d'erreur sont renvoyés avec un message détaillé. Ces messages ne doivent contenir aucune information critique pouvant être utilisée à des fins de piratage
Vérifier les traces de pile : Cela inclut essentiellement de donner une entrée exceptionnelle à l'application de telle sorte que le message d'erreur renvoyé contienne des traces de pile contenant des informations intéressantes pour les pirates.
# 8) Fonctionnalités risquées spécifiques
Principalement, les deux fonctionnalités risquées sont Paiements et téléchargements de fichiers . Ces fonctionnalités doivent être très bien testées. Pour les téléchargements de fichiers, vous devez principalement tester que tout téléchargement de fichiers indésirable ou malveillant est limité.
Pour les paiements, vous devez principalement tester les vulnérabilités d'injection, le stockage cryptographique non sécurisé, les débordements de tampon, la supposition de mot de passe, etc.
=> Nous contacter pour suggérer une liste ici.Lectures complémentaires:
- Test de sécurité des applications Web
- Top 30 des questions d'entrevue de test de sécurité
- Différence entre SAST / DAST / IAST / RASP
- Top 20 des vulnérabilités de sécurité SANS
lecture recommandée
- Guide de test de sécurité des applications Web
- Test alpha et test bêta (un guide complet)
- Tutoriel de test de test de l'entrepôt de données ETL (un guide complet)
- Test de sécurité réseau et meilleurs outils de sécurité réseau
- Guide du débutant sur les tests de pénétration des applications Web
- Build Verification Testing (BVT Testing) Guide complet
- Test fonctionnel vs test non fonctionnel
- Un guide complet de test de pénétration avec des exemples de cas de test