Hacking Open source et Sécurité, préconisations
-
Upload
certilience -
Category
Technology
-
view
392 -
download
2
description
Transcript of Hacking Open source et Sécurité, préconisations
p. 1
Julien Cayssol, Certilience, Juin 2013
Hacking: sécurité avec les logiciels libres
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
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...
p. 4
Les Attaques
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
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.
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
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'
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'
•
p. 10
Pas uniquement SQL
• Détourner des requêtes sur LDAP– ( ) | * &–
• Détourner des commandes systèmes– &, ;, |
p. 11
Démonstration
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, ...)
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 ?
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 ?
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
p. 16
Préconisations
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.•
p. 18
Architecture
• Firewall
• DMZ de services
• Limiter les flux in/out du serveur
p. 19
Architecture
Syslog/Logstash+kibana/Apache/pfsense/
p. 20
Hardening système
• Bonne configuration du serveur– Restriction des services– Minimum de privilèges– Restrictions sur le SSH ( root / password /
users)
p. 21
Hardening système
• Bonne configuration du serveur– Restriction des services– Minimum de privilèges– Restrictions sur le SSH ( root / password /
users)
p. 22
Hardening Apache
• Directive – ServerTokens– ServerSignature
• Désactiver le listage des répertoires
• Désactivation de certains modules
p. 23
Hardening de l'application (ex : php)
• Désactivation des erreurs PHP
• Bannière expose_php
• Restriction des include
• ...
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...
p. 25
Veille sécurité
• Tracking sur vos produits
• Procédure de mise à jour :– Sur le système– Sur les CMS (Attention aux plugins)
p. 26
Des Questions ?
Merci,
Www.certilience.fr