SQL, LDAP, XPath, Parseur XML, ...
Saisir dans un champ de saisie de mot de passe :
e' or '1' = '1
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ELEMENT xxe SYSTEM "file:///etc/passwd" >]>
<foo><&xxe;</foo>
L'authentification devrait être déléguée à un service tiers (Kerberos, OAuth, JWT, ...)
La session devrait être gérée via un cookie :
set-cookie:MonCookie="XXXX";Version=1;Secure;HttpOnly
Protection par cryptographie.
Analyse des données (stockées ou pas)
Mot de passe : bcrypt
, PBKDF2
, scrypt
(hash solo trop faible)
Cross-site Scripting (XSS) : owasp.org)
Cross-site scripting attacks may occur anywhere that possibly malicious users are allowed to post unregulated material to a trusted web site for the consumption of other valid users.
The most common example can be found in bulletin-board web sites which provide web based mailing list-style functionality.
XSS (Cross Site Scripting) Prevention Cheat Sheet : owasp.org
AngularJS gère en natif ce problème (sanitize).
Vectors making use of HTML5 features
http://example.com/app/accountInfo?acct=notmyacct
Pour taper sur un autre compte par exemple.
Autre exemple, usage d'autoincrements SQL comme ID REST.
Applicativement il faut s'assurer qu'un user ne reçoivent que les données auxquelles il a accès.
Remplacer également les id SQL par des uuid.
Taf des devops. Config OS, middleware, réseau, remplacement des mdp par défaut, etc ...
Question dev attention aux logs.
RBAC à impl. Un user lambda ne doit pas accéder à l'administration de l'app.
Exemple d'attaque :
CORS configuration is server-side.
A server using "Access-Control-Allow-Origin: *"
allows all domains, it is very bad.
What are the security risks of setting Access-Control-Allow-Origin? : stackoverflow.com
By responding with
Access-Control-Allow-Origin: *
, the requested resource allows sharing with every origin. This basically means that any site can send an XHR request to your site and access the server’s response which would not be the case if you hadn’t implemented this CORS response.So any site can make a request to your site on behalf of their visitors and process its response. If you have something implemented like an authentication or authorization scheme that is based on something that is automatically provided by the browser (cookies, cookie-based sessions, etc.), the requests triggered by the third party sites will use them too.
OWASP publie un composant MAVEN nommé dependency-check-maven
pour check les vulnérabilités de son projet par ex.
13 tools for checking the security risk of open-source dependencies
http://www.example.com/redirect.jsp?url=evil.com
Par exemple si on permet aux users la saisie de liens (forum par ex), difficile de valider le lien de redirection.
Regular expression Denial of Service - ReDoS
En fonction du pattern de la regex et de l'input donnée par l'utilisateur, il est possible de générer un cout CPU disproportionné. S'il y a plusieurs serveurs qui se passent la data et qu'ils checkent tous la data avec une regex, l'attaque peut toucher plusieurs machines. Contrairement à une DDoS classique dont le but est de noyer le serveur sous les requêtes, il s'agit ici de noyer le(s) serveur(s) sous le cout de calcul CPU.
Exemple de ReDoS sur moment.js.
OWASP : the free and open software security community
Protéger son application web des risques de sécurité les plus critiques (Pascal Abaziou) Devoxx2017