1. p. 1
Julien Cayssol, Certilience, Juin 2013
Hacking: sécurité avec les logiciels libres
2. p. 2
Agenda
• Les vulnérabilités dans les produits
• Présentation des attaques
– XSS (Réfléchi, Permanente, ...)
– Injections ( SQL, LDAP, … )
– ...
• Démonstration
• Scénario
• Les Solutions
3. p. 3
Des Vulnérabilités dans l'Opensource
• Dans les CMS :
– En Mai sur Wordpress Core + plugins > 25
vulnérabilités
– En Avril sur Drupal + Modules > 5 vulnérabilités
• Nginx ? DoS (ref : CVE-2013-2028)
Focus Web...
5. p. 5
XSS ( Cross Site Scripting )
• Réfléchi
– Exemple : Echange d'un lien
• Www.banque.com/?msg='Erreur Mot de passe'
• Exploitation simple :
– Www.banque.com?msg=<script>alert('Test')</script>
• Exploitation d'une vulnérabilité sur le
navigateur
6. p. 6
XSS ( Cross Site Scripting )
• Permanente
– Exemple : Un Forum.
• Une personne dépose un commentaire
« <script>alert('Bonjour')</script> »
• A la consultation du forum le code s’exécute sur le
poste client.
7. p. 7
Injection SQL
• Détourner une requête
– Portail d'authentification
– Fiche Article
• Conséquences :
– Bypass d'authentification
– Récupération de données d'autres tables
– Exécution de code
8. p. 8
Injection SQL (Fonctionnement)
• Authentification
– Requête :
• SELECT * from users where username='$username'
and password = '$password'
– Cas 1 : Username = test & password = test
• SELECT * from users where username='test' and
password = 'test'
– Cas 2 : Username = test & password = admin' or 1='1
• SELECT * from users where username='test' and
password = 'admin' or 1='1'
9. p. 9
Injection SQL
• Fiche article :
– Requête :
• http://url/fiche.php?id=1
–Select titre,description from articles where id =$id
– Cas 1 : id=1
• Select titre,description from articles where id =1
– Cas 2 : id=999999 union select user,password from users
where user='admin'
• Select titre,description from articles where id =999999 union
select user,password from users where user='admin'
•
10. p. 10
Pas uniquement SQL
• Détourner des requêtes sur LDAP
– ( ) | * &
–
• Détourner des commandes systèmes
– &, ;, |
12. p. 12
Scénario
• Recherche d'informations sur le site pour
identifier les technologies.
– Php ? MySQL ? Linux ? Firewall ? Dmz ?
• Identification d'une vulnérabilité :
– Injection SQL ? Dépose de fichiers ? Mot de
passe faible ? Recherche des répertoires.
• Dépose du code (Normalement des
privilèges limités : apache,tomcat, ...)
13. p. 13
Scénario
• Dépose du code adapté (Normalement
des privilèges limités : apache,tomcat, …)
• Elévation de privilèges :
– Vuln kernel?
– Backup, script ? Clef ?
14. p. 14
Scénario
• Dépose du code adapté (Normalement
des privilèges limités : apache,tomcat, …)
• Elévation de privilèges :
– Vuln kernel?
– Backup, script ? Clef ?
15. p. 15
Scénario
• La machine est compromise.
• Dépose d'une backdoor sur la machine
– Rootkit dans les couches du noyau
– Rootkit pour remplacer les commandes
– On efface les traces
17. p. 17
Correction de code
• Utilisation de guides,
– OWASP (Projet Opensource) www.owasp.org
TOP 10 2013, version française cette semaine
• Tests pour valider le niveau de sécurité de mon
application.
• Les bonnes solutions.
•
20. p. 20
Hardening système
• Bonne configuration du serveur
– Restriction des services
– Minimum de privilèges
– Restrictions sur le SSH ( root / password /
users)
21. p. 21
Hardening système
• Bonne configuration du serveur
– Restriction des services
– Minimum de privilèges
– Restrictions sur le SSH ( root / password /
users)
22. p. 22
Hardening Apache
• Directive
– ServerTokens
– ServerSignature
• Désactiver le listage des répertoires
• Désactivation de certains modules
23. p. 23
Hardening de l'application (ex : php)
• Désactivation des erreurs PHP
• Bannière expose_php
• Restriction des include
• ...
24. p. 24
Ajoutons une couche
• mod_security :
Le WAF OpenSource
– Validation des variables
– Détection d'erreurs
• Fail2ban : Regex on logs
– Il est possible de le coupler à mod_security
• Monitoring
– Disponibilité des services
– Sécurité : fichiers modifiés, accès...
25. p. 25
Veille sécurité
• Tracking sur vos produits
• Procédure de mise à jour :
– Sur le système
– Sur les CMS (Attention aux plugins)