faille apache ?

Un endroit pour dire ce que vous pensez du site Apache France, du forum, et de ce qui peut vous passer par la tête concernant les technologies du web.

Modérateur : Modérateurs

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » jeu. 02 déc. 2004, 21:00

après un test sou exoscan,je reçois ce rapport.
j'avoue ne pas comprendre ou se situe la faille.(comprend pas bien l'anglais non plus)

Your webserver supports the TRACE and/or TRACK methods. TRACE and TRACK are HTTP methods which are used to debug web server connections. It has been shown that servers supporting this method are subject to cross-site-scripting attacks, dubbed XST for "Cross-Site-Tracing", when used in conjunction with various weaknesses in browsers. An attacker may use this flaw to trick your legitimate web users to give him their credentials. Solution: Disable these methods. If you are using Apache, add the following lines for each virtual host in your configuration file : RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] 
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
Guide_Gnu
Pilier de forum
Pilier de forum
Messages : 1010
Inscription : dim. 07 mars 2004, 17:37
Localisation : Quelques part dans Level3
Contact :

Messagepar Guide_Gnu » jeu. 02 déc. 2004, 22:01

Your webserver supports the TRACE and/or TRACK methods. TRACE and TRACK are HTTP methods which are used to debug web server connections. It has been shown that servers supporting this method are subject to cross-site-scripting attacks


Voila la phrase important, donc ton Apache support la méthode TRACE & TRACK. Il explique qu'une personne mal intensioners pourait utilisé ces méthodes pour faire du "cross-site-scripting". Et qu'il est plus que conseiler d'empêcher ces méthodes par Rewrite (dixit le code donné)
6 ans de serveurs dédiers.
1 ré-installations (vive Gentoo..).
Plus de 10To échanger sur le web !

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » jeu. 02 déc. 2004, 22:17

ouaip, thx

mais c'est quoi track et trace, et est-ce vraiment necessaire d'activer le mod_rewrite pour ça ?
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
Guide_Gnu
Pilier de forum
Pilier de forum
Messages : 1010
Inscription : dim. 07 mars 2004, 17:37
Localisation : Quelques part dans Level3
Contact :

Messagepar Guide_Gnu » jeu. 02 déc. 2004, 22:42

TRACE =>
"La méthode TRACE est utilisée pour demander un loop-back de la requête émise à l'extremité applicative distante. Le destinataire final de la requête DEVRAIT refléter le message retourné au client comme une entité du corps de donnée d'une réponse 200 (OK)"

Source: <a href='http://www.lsdp.net/~lotfree/doc/HTTP/tunneling_http.html#334' target='_blank'>LSDP.net</a>


TRACK =>
Celle ci est en fait une implémentation de la méthode Trace.
Elle représente l'avantage énorme de retourner une entité avec un Content-type : message/http et un corps comme Trace (tout va bien !)
MAIS ne génére pas de log, contrairement a Trace !
On obtiendra ainsi des informations sur le server en toute discretion...
En pratique, on pourrait imaginer l'envoi de cette méthode depuis un site de l'attaquant, par exemple en appliquant
une exploit quelquonque utilisant Trace, mais en remplacant par Track.

Source: <a href='http://futurezone.free.fr/phpBB2/viewtopic.php?p=4707' target='_blank'>FZ Forum</a>
6 ans de serveurs dédiers.
1 ré-installations (vive Gentoo..).
Plus de 10To échanger sur le web !

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » ven. 03 déc. 2004, 11:13

je suppose qu'un

Code : Tout sélectionner

<limit TRACE TRACK>
Deny from all
</limit>


Ferait l'affaire ...

a+
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb
Image
http://www.zmws.com/

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » ven. 03 déc. 2004, 13:47

c'est vrai, pourquoi sortir l'arme nucléaire (mod_rewrite) alors que apache supporte ce genre de contrôle de base.... <_<
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Avatar de l’utilisateur
Guide_Gnu
Pilier de forum
Pilier de forum
Messages : 1010
Inscription : dim. 07 mars 2004, 17:37
Localisation : Quelques part dans Level3
Contact :

Messagepar Guide_Gnu » ven. 03 déc. 2004, 17:15

Peut être parce que j'aime bien les armes à déstructions massive, c'est plus radicale :)
6 ans de serveurs dédiers.
1 ré-installations (vive Gentoo..).
Plus de 10To échanger sur le web !

Avatar de l’utilisateur
eradrix
Membre ancien
Membre ancien
Messages : 216
Inscription : lun. 08 nov. 2004, 15:35
Localisation : VD - Suisse

Messagepar eradrix » ven. 03 déc. 2004, 23:00

Oui, mais selon maître apache...
Access controls are normally effective for all access methods, and this is the usual desired behavior. In the general case, access control directives should not be placed within a <Limit> section.

The purpose of the <Limit> directive is to restrict the effect of the access controls to the nominated HTTP methods. For all other methods, the access restrictions that are enclosed in the <Limit> bracket will have no effect. The following example applies the access control only to the methods POST, PUT, and DELETE, leaving all other methods unprotected:

<Limit POST PUT DELETE>
Require valid-user
</Limit>

The method names listed can be one or more of: GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK. The method name is case-sensitive. If GET is used it will also restrict HEAD requests. The TRACE method cannot be limited.


Comment faire dans ce cas? :unsure:
Serveur WBEL 3.0 (WhiteBox)

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » lun. 06 déc. 2004, 11:38

Bien vu !

Rewrite effectivement alors ...
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb

Image

http://www.zmws.com/

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » lun. 06 déc. 2004, 11:44

Je me risque à proposer une autre possibilité:

Code : Tout sélectionner

 SetEnvIf Request_Method ^TRAC trace
<Directory />
Order Allow,Deny
Allow from all
Deny from env=trace
</Directory>


a+
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb

Image

http://www.zmws.com/

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » lun. 06 déc. 2004, 13:24

ta solution ne marche pas Xavier, car la méthode TRACE ne demande aucune ressource au serveur web, et donc n'atteint pas le contrôle d'accès, (d'où le fait que Limit ne marche pas).

il semblerait que mod_rewrite soit la seule solution capable de "court-circuiter" la requête avant qu'elle décide de renvoyer une 200.

sinon, ça vaut le coup de récupérer les sources d'apache et le compiler sans le support de TRACE... le flag existe-t'il ?

edit: sinon, encore une idée qui me trotte dans la tête depuis un certain temps : créer un module apache "mod_terminator", qui aurait pour rôle de gentiment couper la connection avec le client aussi vite que possible s'il reçoit une requête estimée comme venant d'un hacker... (par exemple les chaînes liées aux vulnérabilités possibles, les bots, les méthodes non tolérées...)
je sais que ce n'est pas très "HTTP conformant" mais à quoi bon perdre du temps et des ressources système à répondre à des requêtes malveillantes ? autant couper la connection avec le client directement...
comme en gros ce module ressemblerait à mod_rewrite avec la possibilité de couper la connection, je me demande si ça ne serait pas plus simple de patcher mod_rewrite pour ajouter un flag [K] pour "Kill connection".
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » lun. 06 déc. 2004, 13:37

Je n'ai pas l'impression ...

Par contre, je pense qu'on peut faire le violent en commentant dans http_protocole.c
case 'T':
if (strcmp(method, "TRACE") == 0)
return M_TRACE;
break;


Auquel cas, on aura la méthode M_INVALID et ça génèrera un erreur 405 (je crois, pas sûr du 405 dans ce cas, ce sera peut être 400)

a+
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb

Image

http://www.zmws.com/

Avatar de l’utilisateur
Gandalf
Sorcier des forums
Sorcier des forums
Messages : 2528
Inscription : jeu. 04 déc. 2003, 22:58

Messagepar Gandalf » lun. 06 déc. 2004, 15:07

j'aime ce genre de choses :)

mais ce serait encore mieux avec un flag dans le configure.ac :)
Celui qui détruit quelque chose pour savoir ce que c'est, a quitté le chemin de la sagesse.

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » lun. 06 déc. 2004, 16:18

C'est pas prévu pour l'instant si on en croit la doc:
<a href='http://httpd.apache.org/docs-2.0/programs/configure.html' target='_blank'>http://httpd.apache.org/docs-2.0/programs/configure.html</a>

Sinon, dans le 2.0.52, c'est :
case 'A':
return (memcmp(method, "TRACE", 5) == 0
? M_TRACE : UNKNOWN_METHOD);
le bout de code à commenter dans modules/http/http_protocol.c ...

Le code cité plus haut est pour apache 1.3.x. et pour l'erreur, il semblerait que ce soit finalement une 501 Not Implemented ...

a+
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb

Image

http://www.zmws.com/

Avatar de l’utilisateur
Guide_Gnu
Pilier de forum
Pilier de forum
Messages : 1010
Inscription : dim. 07 mars 2004, 17:37
Localisation : Quelques part dans Level3
Contact :

Messagepar Guide_Gnu » lun. 06 déc. 2004, 17:02

Merci Xgarreau, je vais implémenté ça dans ma distrib ********
6 ans de serveurs dédiers.
1 ré-installations (vive Gentoo..).
Plus de 10To échanger sur le web !


Revenir vers « Commentaires »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités