Points clés
1. La sécurité des applications web est un champ de bataille critique
À bien des égards, la sécurité des applications web est aujourd'hui le champ de bataille le plus significatif entre les attaquants et ceux qui disposent de ressources informatiques et de données à défendre, et il est probable que cela demeure ainsi pour un avenir prévisible.
Enjeux élevés. Les applications web sont au cœur des affaires modernes, traitant des données sensibles et des transactions financières. Cela en fait des cibles privilégiées pour les attaquants cherchant à obtenir un gain financier, des informations personnelles ou à provoquer des perturbations. Les conséquences d'une attaque réussie peuvent être sévères, engendrant des pertes financières, des dommages à la réputation et des responsabilités légales.
L'insécurité est répandue. Malgré la prise de conscience des problèmes de sécurité, de nombreuses applications web restent vulnérables. Un pourcentage significatif d'applications testées est affecté par des vulnérabilités courantes telles que l'authentification défaillante, des problèmes de contrôle d'accès, l'injection SQL et le cross-site scripting. Cela souligne la nécessité d'une vigilance continue et de mesures de sécurité proactives.
Un paysage de menaces en évolution. Les méthodes utilisées pour attaquer les applications web évoluent constamment, avec de nouvelles techniques et vulnérabilités découvertes régulièrement. Les défenses doivent s'adapter à ces changements pour rester efficaces. Cela nécessite des recherches continues, de la formation et des investissements dans l'expertise en sécurité.
2. Les mécanismes de défense fondamentaux forment la surface d'attaque
Si connaître son ennemi est la première règle de la guerre, alors comprendre ces mécanismes en profondeur est le principal prérequis pour pouvoir attaquer efficacement les applications.
Les mécanismes de défense sont des cibles. Les applications web emploient des mécanismes de défense fondamentaux pour se protéger contre les attaques, notamment la gestion de l'accès utilisateur, des entrées et des attaquants, ainsi que la gestion de l'application elle-même. Cependant, ces mécanismes constituent également la principale surface d'attaque de l'application, en faisant des zones cruciales à explorer pour les attaquants.
Mécanismes interconnectés. L'accès utilisateur est généralement géré par l'authentification, la gestion des sessions et le contrôle d'accès. Ces mécanismes sont interdépendants, et une faiblesse dans l'un d'eux peut compromettre l'ensemble du système. Par exemple, un défaut dans l'authentification peut permettre à un attaquant de contourner les contrôles d'accès.
La gestion des entrées est cruciale. Une gestion sécurisée des entrées utilisateur est essentielle pour prévenir les attaques. Cela implique de valider, de désinfecter et d'encoder les données fournies par l'utilisateur pour empêcher l'injection de code malveillant dans l'application. Différentes approches de gestion des entrées, telles que "rejeter les mauvais connus" et "accepter les bons connus", ont des niveaux d'efficacité variés.
3. Le protocole HTTP est la base de la communication web
Le protocole de transfert hypertexte (HTTP) est le protocole de communication central utilisé pour accéder au World Wide Web et est utilisé par toutes les applications web d'aujourd'hui.
Comprendre HTTP est essentiel. Le protocole de transfert hypertexte (HTTP) est la fondation de la communication des applications web. Une compréhension approfondie des requêtes HTTP, des réponses, des méthodes, des en-têtes et des codes d'état est essentielle pour attaquer et défendre les applications web.
Les méthodes HTTP comptent. Le choix de la méthode HTTP (GET, POST, PUT, DELETE, etc.) peut avoir des implications en matière de sécurité. Par exemple, les données sensibles ne devraient pas être transmises dans la chaîne de requête URL d'une requête GET, car elles pourraient être enregistrées ou mises en cache.
Les cookies sont critiques. Les cookies HTTP sont utilisés pour maintenir l'état et suivre les utilisateurs à travers plusieurs requêtes. Comprendre comment les cookies sont définis, transmis et gérés est crucial pour identifier les vulnérabilités de gestion des sessions.
4. Les applications web utilisent diverses technologies côté serveur
Une large gamme de plateformes et d'outils de développement est disponible pour faciliter le développement d'applications puissantes par des débutants relativement expérimentés, et une grande quantité de code open source et d'autres ressources est disponible pour être intégrée dans des applications sur mesure.
Variété de technologies. Les applications web utilisent une large gamme de technologies côté serveur, y compris des langages de script (PHP, Python, Perl), des plateformes d'applications web (ASP.NET, Java), des serveurs web (Apache, IIS) et des bases de données (MySQL, Oracle). Chaque technologie présente ses propres vulnérabilités et vecteurs d'attaque uniques.
Plateforme Java. La plateforme Java, Édition Entreprise (Java EE) est une norme de facto pour les applications d'entreprise à grande échelle. Elle se prête à des architectures multitier et équilibrées en charge et est bien adaptée au développement modulaire et à la réutilisation de code.
ASP.NET. ASP.NET est le framework d'application web de Microsoft et est un concurrent direct de la plateforme Java. Les applications ASP.NET peuvent être écrites dans n'importe quel langage .NET, tel que C# ou VB.NET.
5. La fonctionnalité côté client permet des interfaces utilisateur riches
Les navigateurs d'aujourd'hui sont hautement fonctionnels, permettant de créer des interfaces utilisateur riches et satisfaisantes.
Technologies côté client. Les applications web utilisent diverses technologies côté client pour créer des interfaces utilisateur riches et interactives, y compris HTML, CSS, JavaScript et des extensions de navigateur. Ces technologies peuvent également être exploitées pour attaquer les utilisateurs.
HTML et formulaires. Les formulaires HTML sont le principal mécanisme pour capturer les entrées utilisateur et les soumettre au serveur. Comprendre comment fonctionnent les formulaires, y compris les différents types d'encodage et les champs cachés, est essentiel pour identifier les vulnérabilités.
JavaScript et Ajax. JavaScript permet des mises à jour dynamiques et une communication asynchrone avec le serveur, améliorant l'expérience utilisateur. Cependant, il introduit également de nouveaux risques de sécurité, tels que le XSS basé sur le DOM et les attaques inter-domaines.
6. Les schémas d'encodage sont essentiels pour une gestion sécurisée des données
Les applications web emploient plusieurs schémas d'encodage différents pour leurs données.
Schémas d'encodage. Les applications web utilisent divers schémas d'encodage pour représenter les données en toute sécurité, y compris l'encodage URL, l'encodage Unicode, l'encodage HTML et l'encodage Base64. Comprendre ces schémas est crucial pour élaborer des attaques efficaces et contourner les filtres de validation des entrées.
Encodage URL. L'encodage URL est utilisé pour encoder des caractères spéciaux dans les URL, tels que les espaces, les points d'interrogation et les esperluettes. Les attaquants peuvent utiliser l'encodage URL pour contourner les filtres qui bloquent certains caractères.
Encodage HTML. L'encodage HTML est utilisé pour représenter des caractères spéciaux dans les documents HTML, tels que les chevrons et les guillemets. Les attaquants peuvent utiliser l'encodage HTML pour contourner les filtres qui bloquent les balises et attributs HTML.
7. Cartographier l'application révèle des vulnérabilités
La première étape du processus d'attaque d'une application consiste à rassembler et examiner certaines informations clés à son sujet pour mieux comprendre à quoi vous êtes confronté.
La cartographie est cruciale. Cartographier le contenu et la fonctionnalité de l'application est la première étape de toute attaque. Cela implique d'énumérer toutes les pages accessibles, les formulaires et les paramètres, ainsi que d'identifier les technologies utilisées et les mécanismes de sécurité de l'application.
Techniques de cartographie. Les techniques de cartographie incluent le spidering web, le spidering dirigé par l'utilisateur et la découverte de contenu caché par des techniques de force brute et des sources d'informations publiques.
Analyser l'application. Analyser l'application implique d'identifier les points d'entrée pour les entrées utilisateur, les technologies côté serveur et la surface d'attaque exposée par l'application. Ces informations sont utilisées pour formuler un plan d'attaque.
8. Contourner les contrôles côté client est souvent trivial
Étant donné que le client est en dehors du contrôle de l'application, les utilisateurs peuvent soumettre des entrées arbitraires à l'application côté serveur.
Les contrôles côté client sont peu fiables. Les contrôles côté client, tels que les vérifications de validation des entrées et les éléments de formulaire désactivés, sont facilement contournés par les attaquants. L'application doit toujours valider les données côté serveur pour garantir la sécurité.
Champs de formulaire cachés et cookies. Les champs de formulaire cachés et les cookies sont souvent utilisés pour transmettre des données via le client. Les attaquants peuvent modifier ces valeurs pour manipuler le comportement de l'application.
Extensions de navigateur. Les technologies d'extensions de navigateur, telles que les applets Java et les contrôles ActiveX, peuvent également être ciblées pour contourner les contrôles côté client.
9. Les mécanismes d'authentification sont sujets à des défauts de conception
Les mécanismes d'authentification souffrent d'une large gamme de défauts tant dans la conception que dans l'implémentation.
L'authentification est critique. L'authentification est un mécanisme de sécurité fondamental qui vérifie l'identité d'un utilisateur. Cependant, les mécanismes d'authentification sont souvent sujets à des défauts de conception, tels que des politiques de mot de passe faibles, des connexions pouvant être forcées par force brute et des messages d'échec trop détaillés.
Qualité des mots de passe. Les applications devraient imposer des politiques de mot de passe strictes pour empêcher les utilisateurs de choisir des mots de passe faibles. Cela inclut l'exigence d'une longueur minimale, d'un mélange de types de caractères et d'interdire l'utilisation de mots courants ou d'informations personnelles.
Verrouillage de compte. Les applications devraient mettre en œuvre des mécanismes de verrouillage de compte pour prévenir les attaques par force brute. Cependant, ces mécanismes doivent être soigneusement conçus pour éviter les fuites d'informations et les vulnérabilités de déni de service.
10. La gestion des sessions nécessite une gestion robuste des jetons
Le mécanisme de gestion des sessions dépend fortement de la sécurité de ses jetons.
La gestion des sessions est essentielle. La gestion des sessions est utilisée pour suivre les utilisateurs à travers plusieurs requêtes. La sécurité du mécanisme de gestion des sessions dépend de la robustesse de ses jetons.
Génération de jetons. Les jetons de session doivent être générés à l'aide d'un générateur de nombres aléatoires fort pour empêcher les attaquants de prédire ou de deviner des jetons valides.
Gestion des jetons. Les jetons de session doivent être protégés tout au long de leur cycle de vie pour prévenir tout accès non autorisé. Cela inclut la transmission des jetons via HTTPS, leur stockage sécurisé sur le serveur et la mise en œuvre d'une terminaison de session appropriée.
11. Les contrôles d'accès doivent être soigneusement appliqués
Le mécanisme de contrôle d'accès doit généralement mettre en œuvre une logique fine, avec différentes considérations pertinentes pour différentes zones de l'application et différents types de fonctionnalités.
Le contrôle d'accès est fondamental. Les contrôles d'accès déterminent quels utilisateurs sont autorisés à accéder à des données et des fonctionnalités spécifiques. Les contrôles d'accès défaillants sont une vulnérabilité courante qui peut conduire à un accès non autorisé et à une élévation de privilèges.
Types de contrôle d'accès. Les contrôles d'accès peuvent être verticaux (restreignant l'accès à différents niveaux de fonctionnalité), horizontaux (restreignant l'accès à des ressources de données spécifiques) ou dépendants du contexte (restreignant l'accès en fonction de l'état de l'application).
Défauts courants. Les défauts courants de contrôle d'accès incluent des fonctionnalités non protégées, des fonctions basées sur des identifiants, des fonctions à plusieurs étapes et des fichiers statiques.
12. Les composants back-end peuvent être des passerelles pour les attaques
Si une vulnérabilité existe au sein d'une application web, un attaquant sur Internet public peut être en mesure de compromettre les systèmes back-end essentiels de l'organisation simplement en soumettant des données élaborées depuis son navigateur web.
Les composants back-end sont des cibles. Les applications web interagissent souvent avec des composants back-end, tels que des bases de données, des serveurs de messagerie et des systèmes d'exploitation. Ces composants peuvent être des passerelles pour des attaques si les données fournies par l'utilisateur ne sont pas correctement validées.
Injection de commandes OS. Les vulnérabilités d'injection de commandes OS permettent aux attaquants d'exécuter des commandes arbitraires sur le système d'exploitation du serveur.
Injection SMTP. Les vulnérabilités d'injection SMTP permettent aux attaquants d'envoyer des messages électroniques arbitraires via le serveur de messagerie de l'application.
13. La révision du code source révèle des vulnérabilités cachées
Approches de la révision de code
La révision de code est précieuse. Passer en revue le code source de l'application peut révéler des vulnérabilités cachées qui sont difficiles à détecter par des tests en boîte noire. Cela inclut des défauts de conception, des erreurs logiques et des problèmes de configuration.
Approches de la révision de code. Les approches de la révision de code incluent le traçage des données contrôlables par l'utilisateur, la recherche de signatures de vulnérabilités courantes et la réalisation d'une révision ligne par ligne du code à risque.
Outils pour la navigation dans le code. Des outils pour la navigation dans le code, tels que Source Insight, peuvent faciliter le processus de révision de code en fournissant des fonctionnalités pour naviguer dans la base de code, rechercher des expressions spécifiques et afficher des informations contextuelles.
14. L'automatisation est la clé des attaques personnalisées
Les hackers d'applications web les plus performants vont plus loin dans leurs attaques personnalisées et trouvent des moyens de les automatiser pour les rendre plus faciles, plus rapides et plus efficaces.
L'automatisation améliore les attaques. Automatiser les attaques personnalisées peut considérablement améliorer leur rapidité, leur efficacité et leur couverture. Cela implique d'utiliser des outils et des scripts pour effectuer des tâches telles que l'énumération d'identifiants, la collecte de données et le fuzzing pour des vulnérabilités courantes.
Burp Intruder. Burp Intruder est un outil puissant pour automatiser les attaques personnalisées. Il vous permet de définir des positions de charge utile, de choisir des sources de charge utile et d'analyser les réponses de l'application.
Obstacles à l'automatisation. Les obstacles à l'automatisation incluent les mécanismes de gestion des sessions et les contrôles CAPTCHA. Cependant, ces obstacles peuvent souvent être contournés en affinant vos outils automatisés ou en trouvant des défauts dans les défenses de l'application.
15. Exploiter la divulgation d'informations
Des messages d'erreur trop verbeux peuvent grandement aider les utilisateurs malveillants à faire avancer leurs attaques contre l'application.
La divulgation d'informations est utile aux attaquants. Les vulnérabilités de divulgation d'informations peuvent fournir aux attaquants des informations précieuses sur le fonctionnement interne de l'application, telles que les identifiants de base de données, les chemins de fichiers et les versions de logiciels. Ces informations peuvent être utilisées pour affiner les attaques et augmenter les chances de succès.
Exploitation des messages d'erreur. Les messages d'erreur peuvent révéler des informations sensibles sur la configuration, le code et les données de l'application. Les applications devraient gérer les erreurs avec soin et éviter de renvoyer des messages d'erreur trop détaillés aux utilisateurs.
Collecte d'informations publiées. Les informations disponibles publiquement, telles que les résultats des moteurs de recherche et les archives web, peuvent également fournir des informations précieuses sur l'historique, la fonctionnalité et les vulnérabilités de l'application.
16. Attaquer les applications compilées natives
Vulnérabilités de débordement de tampon
Le code natif introduit des risques uniques. Les applications web qui utilisent du code compilé natif, tel que C/C++, sont susceptibles de vulnérabilités logicielles classiques comme les débordements de tampon, les vulnérabilités d'entier et les bogues de format de chaîne.
Débordements de tampon. Les débordements de tampon se produisent lorsqu'une application copie des données contrôlables par l'utilisateur dans un tampon mémoire qui n'est pas assez grand pour les accueillir. Cela peut conduire à l'exécution de code arbitraire sur le serveur.
Vulnérabilités d'entier. Les vulnérabilités d'entier se produisent lorsqu'une application effectue des opérations arithmétiques sur des valeurs entières sans validation appropriée, entraînant des débordements ou des erreurs de signe.
17. Attaquer l'architecture de l'application
Les applications web ont changé tout cela. Pour qu'une application soit accessible par ses utilisateurs, le pare-feu périmétrique doit autoriser les connexions entrantes au serveur via HTTP ou HTTPS.
L'architecture compte. L'architecture d'une application web peut avoir un impact significatif sur sa sécurité. Une architecture mal conçue peut exposer l'application à diverses attaques, telles que l'exploitation de la confiance et la subversion de niveau.
Architectures en couches. Les architectures multitier, où l'application est divisée en couches de présentation, d'application et de données, peuvent améliorer la sécurité si elles sont correctement mises en œuvre. Cependant, elles peuvent également introduire de
Dernière mise à jour:
Avis
Le Manuel du Hacker d'Applications Web est largement reconnu comme une ressource essentielle pour les professionnels de la sécurité web et les développeurs. Les lecteurs saluent sa couverture exhaustive des vulnérabilités et des techniques d'exploitation, bien que certains notent qu'il est légèrement obsolète. Ce livre est considéré comme technique mais accessible, offrant des conseils pratiques et des explications étape par étape. De nombreux critiques le trouvent révélateur et indispensable pour ceux qui évoluent dans ce domaine. Bien que certains critiquent sa longueur et son accent sur des outils spécifiques, la plupart s'accordent à dire qu'il s'agit d'un guide inestimable pour comprendre et améliorer la sécurité des applications web.
Similar Books





