Les pirates contournent la sécurité de .htaccess en utilisant les GETS
- Zealous
- Guru


- Inscription: Avr 15, 2011
- Messages: 1195
- Loc: Sydney
- Status: Offline
C'est quelque chose que je n'ai pas écrit moi-même, mais lors des recherches, j'ai trouvé assez intéressant de recherche.
Les pirates contournent la sécurité de .htaccess via obtient plutôt que GET
Hier soir, j'ai reçu un message urgent d'un client. Mon ordinateur a été piraté, quelqu'un entré dans la zone admin, j'ai besoin de tous les détails de cette adresse IP.
Alors, j'ai grepped les journaux, a saisi les entrées appropriées et vu quelque chose de bizarre.
Un extrait modifié du fichier .htaccess :
Bien sûr, nous savons GETS n'est pas valide, mais pourquoi Apache est remise état 200 s et les longueurs qui semblent valides de contenu ? Nous savons que la région était le mot de passe derrière les .htaccess et avec quelques travaux de clavier rapide, nous avons un système qui invite correctement pour l'authentification de base avec une requête HTTP/1.0 correctement formée. Retirer la restriction <Limit> le .htaccess protège le site, mais, pourquoi il existe d'autres méthodes capables de passer à travers ? Remplacement obtient avec n'importe quoi autre que POST, PUT, DELETE, piste, TRACE, OPTIONS, tête traduit par Apache traiter ces demandes comme si obtenir avait été saisi.
Nous allons configurer un environnement en double sur une autre machine pour savoir ce que fait Apache.
Essayons ce qu'ils ont fait :
Bizarre, c'est le comportement que nous attendions, mais pas ce que nous vivons sur l'ordinateur du client. Creuser un peu plus loin, nous regardons les différences et commence à soupçonner que la machine peut avoir été compromise. La première chose qui a frappé était mod_negotiation – probablement pas. mod_actions, peut-être, mais, non. DAV n'a pas été chargé, mais, Zend Optimizer était sur la machine qui semblaient avoir été exploité. Test de ce qui précède de script sur le client machine a entraîné po.. exactement le même comportement — méthode non prise en charge. Tester le répertoire qui a été exploitée entraîne la demande obtient servi comme si c'était une demande GET.
Donc, maintenant nous avons un domaine particulier sur la machine qui ne se comporte pas comme l'indique les fichiers config. Un test rapide sur le domaine d'origine et comme prévu, obtient répond avec les données et permet de contourner la clause d'autorisation dans le .htaccess. Permet d'essayer un autre test :
Bingo. Un fichier codé de Zend nous a remis une erreur 200 même si elle contenait une méthode de requête non valide.
La solution était dans ce cas simple, supprimez la clause de <Limit> du .htaccess.
La question est, est Zend Optimizer en train de faire la bonne chose ici. Je regarde Apache avec gdb, Zend Optimizer ne semble pas accrocher le gestionnaire Apache un peu plus élevé, mais pourquoi il tente de corriger une requête non valide ?
Les premières règles de validation des entrées est valider et rejeter en cas d'erreur. Ne jamais essayer de rectifier les données et l'accepter. Si vous essayez de corriger la situation et faire une erreur, vous êtes tout aussi vulnérable et les pirates vont essayer de comprendre les motifs et l'ajouter extra s'échappant dans leur demande d'url. Dans ce cas, seulement quelques pages ont pu être affichées comme il y avait des contrôles pour s'assurer des formes ont été affichés. Mais, la limite dans .htaccess qui aurait dû protéger l'application, n'a pas fonctionné comme prévu parce que les méthodes non valides n'ont pas été précisés.
Comme tant d'applications sur le web génèrent des fichiers .htpasswd avec la clause Limit, il me fait me demander combien d'applications Zend encodés est vulnérables. Prenez une minute pour vérifier vos systèmes.
plus de ressources avec le correctif :http://www.natexim.com/how-to-bypass-ht ... ntication/
Les pirates contournent la sécurité de .htaccess via obtient plutôt que GET
Hier soir, j'ai reçu un message urgent d'un client. Mon ordinateur a été piraté, quelqu'un entré dans la zone admin, j'ai besoin de tous les détails de cette adresse IP.
Alors, j'ai grepped les journaux, a saisi les entrées appropriées et vu quelque chose de bizarre.
Code: [ Select ]
1.2.3.4 - - [09/Dec/2010:22:15:41 -0500] "GETS /admin/index.php HTTP/1.1" 200 3505 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
1.2.3.4 - - [09/Dec/2010:22:17:09 -0500] "GETS /admin/usermanagement.php HTTP/1.1" 200 99320 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
1.2.3.4 - - [09/Dec/2010:22:18:05 -0500] "GETS /admin/index.php HTTP/1.1" 200 3510 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
1.2.3.4 - - [09/Dec/2010:22:17:09 -0500] "GETS /admin/usermanagement.php HTTP/1.1" 200 99320 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
1.2.3.4 - - [09/Dec/2010:22:18:05 -0500] "GETS /admin/index.php HTTP/1.1" 200 3510 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
- 1.2.3.4 - - [09/Dec/2010:22:15:41 -0500] "GETS /admin/index.php HTTP/1.1" 200 3505 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
- 1.2.3.4 - - [09/Dec/2010:22:17:09 -0500] "GETS /admin/usermanagement.php HTTP/1.1" 200 99320 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
- 1.2.3.4 - - [09/Dec/2010:22:18:05 -0500] "GETS /admin/index.php HTTP/1.1" 200 3510 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"
Un extrait modifié du fichier .htaccess :
Code: [ Select ]
AuthUserFile .htpasswd
AuthName "Protected Area"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
AuthName "Protected Area"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
- AuthUserFile .htpasswd
- AuthName "Protected Area"
- AuthType Basic
- <Limit GET POST>
- require valid-user
- </Limit>
Bien sûr, nous savons GETS n'est pas valide, mais pourquoi Apache est remise état 200 s et les longueurs qui semblent valides de contenu ? Nous savons que la région était le mot de passe derrière les .htaccess et avec quelques travaux de clavier rapide, nous avons un système qui invite correctement pour l'authentification de base avec une requête HTTP/1.0 correctement formée. Retirer la restriction <Limit> le .htaccess protège le site, mais, pourquoi il existe d'autres méthodes capables de passer à travers ? Remplacement obtient avec n'importe quoi autre que POST, PUT, DELETE, piste, TRACE, OPTIONS, tête traduit par Apache traiter ces demandes comme si obtenir avait été saisi.
Nous allons configurer un environnement en double sur une autre machine pour savoir ce que fait Apache.
Code: [ Select ]
tsavo:~ mcd$ telnet devel.mia 80
Trying x.x.x.x...
Connected to xxxxxxx.xxx.
Escape character is '^]'.
GET /htpasstest/ HTTP/1.0
HTTP/1.1 401 Authorization Required
Date: Fri, 10 Dec 2010 21:29:58 GMT
Server: Apache
WWW-Authenticate: Basic realm="Protected Area"
Vary: Accept-Encoding
Content-Length: 401
Connection: close
Content-Type: text/html; charset=iso-8859-1
Trying x.x.x.x...
Connected to xxxxxxx.xxx.
Escape character is '^]'.
GET /htpasstest/ HTTP/1.0
HTTP/1.1 401 Authorization Required
Date: Fri, 10 Dec 2010 21:29:58 GMT
Server: Apache
WWW-Authenticate: Basic realm="Protected Area"
Vary: Accept-Encoding
Content-Length: 401
Connection: close
Content-Type: text/html; charset=iso-8859-1
- tsavo:~ mcd$ telnet devel.mia 80
- Trying x.x.x.x...
- Connected to xxxxxxx.xxx.
- Escape character is '^]'.
- GET /htpasstest/ HTTP/1.0
- HTTP/1.1 401 Authorization Required
- Date: Fri, 10 Dec 2010 21:29:58 GMT
- Server: Apache
- WWW-Authenticate: Basic realm="Protected Area"
- Vary: Accept-Encoding
- Content-Length: 401
- Connection: close
- Content-Type: text/html; charset=iso-8859-1
Essayons ce qu'ils ont fait :
Code: [ Select ]
tsavo:~ mcd$ telnet devel.mia 80
Trying x.x.x.x...
Connected to xxxxxxx.xxx.
Escape character is '^]'.
GETS /htpasstest/ HTTP/1.0
HTTP/1.1 501 Method Not Implemented
Date: Fri, 10 Dec 2010 21:53:58 GMT
Server: Apache
Allow: GET,HEAD,POST,OPTIONS,TRACE
Vary: Accept-Encoding
Content-Length: 227
Connection: close
Content-Type: text/html; charset=iso-8859-1
Trying x.x.x.x...
Connected to xxxxxxx.xxx.
Escape character is '^]'.
GETS /htpasstest/ HTTP/1.0
HTTP/1.1 501 Method Not Implemented
Date: Fri, 10 Dec 2010 21:53:58 GMT
Server: Apache
Allow: GET,HEAD,POST,OPTIONS,TRACE
Vary: Accept-Encoding
Content-Length: 227
Connection: close
Content-Type: text/html; charset=iso-8859-1
- tsavo:~ mcd$ telnet devel.mia 80
- Trying x.x.x.x...
- Connected to xxxxxxx.xxx.
- Escape character is '^]'.
- GETS /htpasstest/ HTTP/1.0
- HTTP/1.1 501 Method Not Implemented
- Date: Fri, 10 Dec 2010 21:53:58 GMT
- Server: Apache
- Allow: GET,HEAD,POST,OPTIONS,TRACE
- Vary: Accept-Encoding
- Content-Length: 227
- Connection: close
- Content-Type: text/html; charset=iso-8859-1
Bizarre, c'est le comportement que nous attendions, mais pas ce que nous vivons sur l'ordinateur du client. Creuser un peu plus loin, nous regardons les différences et commence à soupçonner que la machine peut avoir été compromise. La première chose qui a frappé était mod_negotiation – probablement pas. mod_actions, peut-être, mais, non. DAV n'a pas été chargé, mais, Zend Optimizer était sur la machine qui semblaient avoir été exploité. Test de ce qui précède de script sur le client machine a entraîné po.. exactement le même comportement — méthode non prise en charge. Tester le répertoire qui a été exploitée entraîne la demande obtient servi comme si c'était une demande GET.
Donc, maintenant nous avons un domaine particulier sur la machine qui ne se comporte pas comme l'indique les fichiers config. Un test rapide sur le domaine d'origine et comme prévu, obtient répond avec les données et permet de contourner la clause d'autorisation dans le .htaccess. Permet d'essayer un autre test :
Code: [ Select ]
# telnet xxxxxx.mia 80
Trying x.x.x.x...
Connected to xxxxxx.xxx.
Escape character is '^]'.
GETS /zend.php HTTP/1.1
Host: xxxxxx.xxx
HTTP/1.1 200 OK
Date: Fri, 10 Dec 2010 22:02:33 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 602
Connection: close
Content-Type: text/html
Trying x.x.x.x...
Connected to xxxxxx.xxx.
Escape character is '^]'.
GETS /zend.php HTTP/1.1
Host: xxxxxx.xxx
HTTP/1.1 200 OK
Date: Fri, 10 Dec 2010 22:02:33 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 602
Connection: close
Content-Type: text/html
- # telnet xxxxxx.mia 80
- Trying x.x.x.x...
- Connected to xxxxxx.xxx.
- Escape character is '^]'.
- GETS /zend.php HTTP/1.1
- Host: xxxxxx.xxx
- HTTP/1.1 200 OK
- Date: Fri, 10 Dec 2010 22:02:33 GMT
- Server: Apache
- Vary: Accept-Encoding
- Content-Length: 602
- Connection: close
- Content-Type: text/html
Bingo. Un fichier codé de Zend nous a remis une erreur 200 même si elle contenait une méthode de requête non valide.
La solution était dans ce cas simple, supprimez la clause de <Limit> du .htaccess.
La question est, est Zend Optimizer en train de faire la bonne chose ici. Je regarde Apache avec gdb, Zend Optimizer ne semble pas accrocher le gestionnaire Apache un peu plus élevé, mais pourquoi il tente de corriger une requête non valide ?
Les premières règles de validation des entrées est valider et rejeter en cas d'erreur. Ne jamais essayer de rectifier les données et l'accepter. Si vous essayez de corriger la situation et faire une erreur, vous êtes tout aussi vulnérable et les pirates vont essayer de comprendre les motifs et l'ajouter extra s'échappant dans leur demande d'url. Dans ce cas, seulement quelques pages ont pu être affichées comme il y avait des contrôles pour s'assurer des formes ont été affichés. Mais, la limite dans .htaccess qui aurait dû protéger l'application, n'a pas fonctionné comme prévu parce que les méthodes non valides n'ont pas été précisés.
Comme tant d'applications sur le web génèrent des fichiers .htpasswd avec la clause Limit, il me fait me demander combien d'applications Zend encodés est vulnérables. Prenez une minute pour vérifier vos systèmes.
plus de ressources avec le correctif :http://www.natexim.com/how-to-bypass-ht ... ntication/
- Anonymous
- Bot


- Inscription: 25 Feb 2008
- Messages: ?
- Loc: Ozzuland
- Status: Online
Janvier 7th, 2013, 9:58 am
Page 1 sur 1
Pour répondre à ce sujet, vous devez vous connecter ou vous enregistrer. Il est gratuit.
Afficher de l'information
- Total des messages de ce sujet: 1 message
- Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
- Vous ne pouvez pas poster de nouveaux sujets
- Vous ne pouvez pas répondre aux sujets
- Vous ne pouvez pas éditer vos messages
- Vous ne pouvez pas supprimer vos messages
- Vous ne pouvez pas joindre des fichiers
