Vous êtes sur la page 1sur 59

Session hijacking

Cours N° 10
Qu’est ce qu’une session hijacking
• Le session hijacking fait référence à une attaque dans la quelle l’attaquant prend
le contrôle de la communication TCP valide établie entre deux machines
• étant donné que la plupart des authentifications ne se produisent qu'au début
d'une session TCP, les attaquants peuvent ainsi accéder à une machine.
• L’attaquant peut sniffer tout le trafique depuis l’établissement de la connexion
TCP et voler des informations, l’identité ou autre
• L’attaquant vole un identifiant de session valide et l’utilise pour s’authentifier sur
le serveur
Pourquoi le session hijacking reussit ?
• Les comptes ne sont pas verouillés lorsque l’Id de session est
incorrect
• Les Id de session sont soit petit soit généré à partir d’algorithmes
faibles
• Manipulation non sécurisée de l’ID de session
• Le temps d’expiration de la session n’est pas défini
• La plupart des ordinateurs utilisant TCP/IP sont vulnérables
• La plupart des contremesures ne fonctionnent pas sans l’utilisation
de la cryptographie
Processus de hijacking de session
Certaines de ces techniques sont utilisées
Vol pour voler l’Id de session
L’attaquant utilise 1. Utiliser le http referrer header
différentes techniques 2. Sniffer le trafique réseau
pour voler l’Id de 3. Utiliser l’attaque XSS
session 4. Envoyer un cheval de Troie à la
machine client

deviner
L’attaquant tente de
deviner le session Id
en observant les
parties variables de l’Id

Brute force
L’attaquant essai
différents Id jusqu’à
réussir
Processus de hijacking de session
Types de hijacking
• Attaque active : l’attaquant trouve une session active et il prend le
relais

• Attaque passive : l’attaquant détourne une session mais il se


contente de regarder et d’enregistrer tout le trafic qui est envoyé
Piratage des serveurs
web
Parts de marché des serveurs web
Problèmes de sécurité des serveurs web
 Le serveur Web est un programme qui héberge des sites Web; Les attaquants ciblent
généralement les vulnérabilités logicielles et les erreurs de configuration afin de
compromettre le serveur Web.
 Les attaques au niveau du réseau et de l’OSpeuvent être bien défendues à l'aide de
mesures de sécurité réseau appropriées telles que pare-feu, IDS, etc. Toutefois, les
serveurs Web sont accessibles de n'importe où sur le Web, ce qui les rend moins
sécurisés et plus vulnérables aux attaques.
Pourquoi les serveurs web sont compromis ?
• Permissions de Fichiers et de dossiers inappropriées
• Serveurs installés avec la configuration par défaut
• Services non nécessaires activés notamment l’administration à distance
• conflit de sécurité avec le cas commercial d'utilisation
• absence de politique de sécurité, de procédure et de maintenance
appropriées
• Authentification inappropriée avec des systèmes externes
• Comptes par défaut avec des mots de passe par défaut ou inexistants
• Bug dans le logiciels du serveur web, l’OS ou l’application web
• Utilisation de certificats auto signé ou des certificats par défaut
Impact d’une attaque d’un serveur web
• Compromission des comptes utilisateurs
• Défacement du site web
• Attaque secondaire à partir du site web
• Accès administrateur aux autres applications ou serveurs
• Traitement ou vol des données
Architecture open source
Architecture IIS
Attaques contre un serveur web
• DOS/DDOS
• DNS Server Hijacking
• Man in the middle / sniffing
• Phishing
• Défacement de site (modification du visuel)
• mauvaise configuration du serveur Web
• Attaque SSH par brute force
• Cracking du mot de passe serveur (brute force, dictionnaire,
devinant, hybride)
Attaque d’amplification DNS
Directory traversal attack
Dans ce type d’attaque, l’attaquant utilise la séquence ../ pour avoir accès pour avoir accès à des
dossiers restreint se trouvant en dehors du dossier root du serveur web

L’attaquant peut utiliser des méthodes d'essai et d'erreur pour naviguer en dehors du dossier
root et accéder à des informations sensibles du système
Attaque par fractionnement de réponse HTTP
L’attaque par réponse HTTP
Fractionnée implique l'ajout de d’une
en-tête de données de réponse dans
le champ de saisie afin que le serveur
divise la réponse en deux réponses.

l'attaquant peut contrôler la deuxième


réponse pour rediriger l'utilisateur
vers un site Web malveillant, tandis
que les autres réponses sont
supprimées par le navigateur
Attaque par empoisonnement du cache web
Attaquer les applications Web
Méthodologie d’attaque d’un serveur web
• Récolte d’information (internet, newsgroup, whois, tracerout,
robots.txt)
• Footprinting de serveur (Idserver, httprecon, netcraft, nmap)
• Mirroring de site web (HTTrack,WebCopier Pro, BlackWidow,…)
• Scan de vulnérabilités
• Session hijacking
• Piratage du mot de passe du serveur web (Brutus, THC-Hydra)
Outils d’attaque d’une serveur Web :
Metasploit
• Le framework metasploit est un toolkit de pentest, une plateforme
de developpement d’exploits et un outil de recherche qui inclut une
centaine d’exploits fonctionnant à distance sur plusieurs
plateformes
• Il prend en charge l'exploitation automatisée des serveurs Web, en
exploitant les vulnérabilités connues et en exploitant des mots de
passe faibles via telnet, SSH, HTTP et SNM
Architecture de metasploit
Les contremesures
Mettre en place une DMZ
Patchs et mises à jour
• Rechercher les vulnérabilités connues, patcher et mettre à jour le serveur
régulièrement
• Avant d’appliquer un patch, un service pack ou une mise à jour lire et
étudier toute la documentation avant de l’appliquer dans un
environnement simulé
• appliquer toutes les mises à jour, quel que soit leur type, "selon les
besoins«
• disposer d'un plan de secours permettant au système et à l'entreprise de
revenir à leur état d'origine, en cas d'échec de la mise en œuvre
• Planifiez des mises à niveau périodiques du Service Pack dans le cadre
de la maintenance des opérations et n'essayez jamais de laisser plus de
deux Service Pack en retard.
Protocoles

• Bloquer tous les ports non nécessaires


• Durcir la pile TCP/IP et appliquer régulièrement les derniers patchs
logiciels et les mises à jour du système logiciel
• Si vous utilisez des protocoles non sécurisés tel que Telnet, POP3,..
Prenez les mesures appropriées pour fournir une authentification et
une communication sécurisées
• Si un accès distant est nécessaire s’assurer qu’il est sécurisé via
des protocoles de tunneling et de chifrement
Les comptes
• Supprimer tous les modules et les extensions d’applications non utilisés
• Désactiver les comptes d’utilisateurs par défaut non utilisés
• Lors de la création d’un nouveau dossier web root affecter le moindre
privilège et permission NTFS aux utilisateurs anonymes
• Éliminer tous les utilisateurs de BD et procédures stoquées non
nécessaires
• Utiliser les permissions web sécurisées, NTFS et les mécanismes de
control d’accés du Framework .NET
• Ralentir les attaques par brute force et par dictionnaire avec des
politiques de mot de passe robuste et auditer les échec de connexion
• Executer les processus avec le principe de moindre privilège
Fichiers et Dossiers
• Éliminer les fichiers non nécessaires ayant une extension .jar
• Éliminer les informations sensibles de configuration dans le byte
code : éliminer les fichiers non web tel que les fichier d’archive ou
de sauvegarde
• évitez de mapper des répertoires virtuels entre deux serveurs
différents ou sur le réseau
• Monitorer et contrôler tous les log de
– Services réseau,
– Accès au site web
– Serveur de base de données
– OS
Détecter les tentatives de piratage du serveur
Web
• Utiliser un système de détection de changement sur le site web
pour détecter les tentatives de piratage du site web
• Les systèmes de détection de changement des sites web
impliquent :
– Le lancement de scripts spécifiques sur le serveur pour détecter n’importe quel
changement apporter aux fichier exécutables se trouvant sur le serveur
– Comparer périodiquement la valeur de hash des fichiers sur le serveur avec la
valeur des master hash pour détecter d’éventuels changement dans leur code
de base
– Alerter l’utilisateur en cas de changement détcté
Comment se défendre contre les attaques
web
Comment se défendre contre les attaques
web
Comment se défendre contre les attaques
web
Comment se défendre contre les attaques
web
Comment se défendre contre les attaques
web
Les injections SQL
M1-SSI
Concept de l’injection
SQL
Les injections SQL
Qu’est-ce qu’une injection SQL
• L'injection SQL est une technique utilisée pour tirer parti des vulnérabilités
d'entrée non validées afin de transmettre une commande SQL via une application
Web afin qu'elle soit exécutée par une base de données principale.

• L'injection SQL est une attaque de base utilisée pour obtenir un accès non
autorisé à une base de données ou pour extraire des informations directement à
partir de la base de données.

• c'est une faille dans une application Web et non un problème de base de données
ou de serveur Web
pourquoi se soucier de l'injection
SQL ?
en fonction de l'application utilisée et de la manière dont il traite les données
fournies par l'utilisateur, l'injection SQL peut être utilisée pour mettre en
œuvre les attaques mentionnées ci-dessous

Contournement de Utilisée pour se loguer à une application et obtenir les provilèges


l’authentification administratifs sans fournir un username et un mot de passe valides

Divulgation de Utilisée pour permettre à un attaquant d’obtenir des informations


données sensibles stockées dans une base de données
Compromettre
l’intégrité des Utilisée pour défacer une page web, insérer un contenu malicieux sur
données la page web, ou bien altérer le contenu de la base de données

Compromettre la Utilisée pour effacer les informations de la base de données,


disponibilité des supprimer les log, ou les informations d’audit enregistrées sur la BD
données
Exécution de code à
Assiste l’attaquant à compromettre l’OS de l’hôte
distance
Comment fonctionne une application web ?
Injections SQL et technologies côté
serveur

Technologies côté serveur Les puissantes technologies côté serveur, telles que asp.net et les serveurs de
base de données, permettent aux développeurs de créer des sites Web
dynamiques et basés sur les données avec une incroyable facilité.
Exploit La puissance d’asp.net et de DQL peut être facilement exploitée par un
attaquant en utilisant les injections SQL
Bases de données sensibles Toutes les bases de données relationnelles SQL, Oracle, mySQL et IBM DB2
sont vulnérables aux injections SQL
attaque Les attaques par injection SQL n'exploitent pas une vulnérabilité logicielle
spécifique, mais ciblent des sites Web qui ne respectent pas les bonnes
pratiques de codage sécurisé pour accéder aux données stockées dans une
base de données relationnelle et les manipuler.
Comprendre les HTTP POST Request

Quand un utilisateur fournit les


informations et clique sur valider, le
navigateur soumet une chaine de caractère
au serveur web qui contient les
informations d'identification de l'utilisateur.
Cette chaine de caractère est visible dans le
corps de la requête HTTP ou HTTPS POST
request :
Requête SQL dans la BD
Select * from users where (username =
‘bart’ and password = ‘simpson’);
Comprendre une requête injection SQL
Comprendre une requête injection SQL :
analyse de code
L’utilisateur introduit son username et son MDP qui correspondent à un enregistrement
dans la table user

Une requête SQL générée automatiquement est utilisée pour récupérer le numéro
des lignes correspondants

L’utilisateur est authentifié et redirigé pars la page demandée

Quand l’attaquant introduit blah’ or 1=1 – la requête SQL aura forme suivante :
SELECT count(*) FROM Users WHERE username =‘blah’ or 1=1 –’ AND password =‘ ‘

Vu que – désigne le début d’un commentaire la requête SQL devient


SELECT count(*) FROM Users WHERE username =‘blah’ or 1=1
Exemple d’une application Web vulnérable
Cette page affiche les
produits à partir de la BD
Northwind et permet à
l’utilisateur de filtrer la liste
des produits en utilisant un
textbox appelé txtFilter

Ce code est vulnérable aux


injections SQL
Exemple d’une application Web vulnérable
Exemple d’une application Web vulnérable
: MAJ de la table
Exemple d’une application Web vulnérable
: ajout d’un nouvel enregistrement
Exemple d’une application Web vulnérable
: supprimer une table
Types d’injections SQL
Injections SQL
Types d’injections SQL
Injections SQL basées sur les codes d’erreurs
 Les injections SQL basées sur les erreurs forcent la BD a effectuer des
opérations dont le résultat sera une erreur

 Cette exploitation peut différer d’un SGBD à un autre

 Considérons la requête SQL suivante  Dans l’exemple, le testeur concatène la valeur 10 avec le
résultat de la fonctionne
SELECT * from products WHERE URL_INADDR.GET_HOST_NAME
id_product=$id_product  cette fonction oracle essaiera de renvoyer le nom
 considérer la requête à un script qui d'hôte du paramètre qui lui a été transmis, ce qui
exécute la requête ci-dessus correspond à une autre requête, le nom de l'utilisateur
 Quand la BD cherche le nom de l’hôte avec le nom de
http://www.example.com/product.php?id=10
l’utilisateur de la BD, elle echouera et retournera un
message d’erreur tel :
la requête malveillante serait (pour oracle
 ORA-292257: host SCOTT unknow
10g)

http://www.example.com/product.php?id=10  Le testeur peut manipuler les paramètres transmis à la


|UTL_INADDR.GET_HOST_NAME ( (SELECT fonction GET_HOST_NAME() et le résultat se visible
user FROM DUAL) ) - - dans le message d’erreur
Injections SQL basées sur les erreurs
Injections SQL : UNION
Injections SQL : Blind
Pas de message d’erreur retourné
Blind injections SQL:Waitfordelay
Technique d’exploitation de booléen
Méthodes d’injections
SQL
Injection SQL
Tester les injections SQL