Un service web est attaqué sur trois couches : la plateforme (le processus serveur et la manière dont il est hébergé et câblé), le runtime (l'interpréteur du langage ou la machine virtuelle) et le code écrit par les développeurs. L'endroit où vit une vulnérabilité détermine comment on l'atteint et on la corrige : une faille dans la logique applicative se comporte très différemment d'une faille qui abuse du processus serveur ou de l'interpréteur.
Triez par couche : identifiez quelle couche possède la configuration, la primitive ou la logique défectueuse à partir des indices dont vous disposez (en-têtes, traces de pile, configuration, comportement), puis descendez dans le sous-arbre correspondant.
Sous-sujets#
- Code : failles qui proviennent du code source applicatif contrôlé par l'équipe de développement : composition non sûre de requêtes et de commandes, autorisation défaillante et logique métier...
- Plateforme : techniques offensives contre la plateforme web organisées comme le déroule un audit : expositions générales valables pour tout serveur, puis mauvaises configurations par produit...
- Runtime : techniques offensives contre l'interpréteur ou la VM qui exécute le code des applications web : désérialisation non sûre, stream wrappers du moteur et échappement de l'assainissement du runtime...