Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2011, 13h57   #1
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Par défaut Y a-t-il encore des développeurs utilisant des url vulnérables à la faille include

Bonjour,

Je parle d'URL vulnérables: monsite.com/index.php?page=xxxx
Ce n'est pas seulement vulnérable à la faille include mais aussi au "directory tranversal" qui permet au hacker de remonter vers des répertoires sensibles en utilisant ".."

L'include à distance fonctionne-t-il encore aujourd'hui? monsite.com/index.php?page=http://autre_site.com/page

Est-ce que include() teste l'extension du fichier qu'on lui fait inclure? car les pirates réussissent souvent à uploader un fichier image contenant du php qu'ils vont forcer à inclure
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 14h39   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par randriano Voir le message
Bonjour,
L'include à distance fonctionne-t-il encore aujourd'hui? monsite.com/index.php?page=http://autre_site.com/page
Professionellement parlant j'ose espérer que non. Il me semble également qu'une directive du php.ini empêche l'utilisation d'url distante, donc il est fort probable que ce soit activer par défaut sur tous les mutualisé.

Citation:
Est-ce que include() teste l'extension du fichier qu'on lui fait inclure?
Non tu peu inclure ce que tu veux. Tu peux faire du php avec des fichier .prout si ton serveur est configuré pour ^^
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h51   #3
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
J'ai posté ce fil car je n'arrive pas jusqu'à maintenant à comprendre comme un hacker a pu uploadé des fichiers ELF Linux, Perl et PHP sur un site que je maintiens!

Le plus bizarre c'est qu'il arrive à remplacer mon index.php mais comment?

Le hacker:
2011-03-14_170440.png
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 16h00   #4
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Sympathique comme message...

Plusieurs solutions possible mais les plus probable :

- Un upload de fichier est disponible sur ton site et il n'est pas sécurisé correctement (mime type , csrf ...)

- Tes identifiants FTP on été volé , il y'a quelques temps un trojan existait qui utilisait filezilla. Il insérait un bout de JS à l'upload d'un fichier , ce JS envoyait les identifiant serveur vers un serveur distant...

- Faille XSS sur ton site ayant permis la récupération de cookie contenat des informations sur tes identifiants.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/03/2011, 19h52   #5
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Citation:
Envoyé par grunk Voir le message
Sympathique comme message...

Plusieurs solutions possible mais les plus probable :

- Un upload de fichier est disponible sur ton site et il n'est pas sécurisé correctement (mime type , csrf ...)
Je ne crois pas que ce soit mes identifiants volés ni un vol de cookie (XSS), le premier tiret m'intrigue le plus!
Il y a effectivement des upload mais filtrés, seuls les fichiers .pdf, .xls ou .doc peuvent passer, bien sûr on peut uploader un fichier php à extension .pdf mais en principe on ne pourra pas l'exécuter! Sauf comment?
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 20h44   #6
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 32
Points : 19
Points : 19
Question :

- Tu utilise un CMS ?
- Est ce que tu vérifie uniquement le TypeMime quand tu upload un fichier en PHP ?
- Est ce que tu es sur un hébergement Mutualisé ?
- Quel est le propriétaire des derniers fichier uploadé ? et index.php

mais en principe on ne pourra pas l'exécuter

Pourquoi pas ?

Quel sont les droits dans le dossier où tu peux uploader ?

As-tu rajouter un .htaccess pour bloquer spécifiquement l'utilisation de php dans ce dossier ?

Si vraiment tu veux qu'on regarder envoi l'adresse de ton site en PM

A+
pablofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 08h27   #7
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Citation:
Envoyé par pablofr Voir le message
Question :

- Tu utilise un CMS ?
- Est ce que tu vérifie uniquement le TypeMime quand tu upload un fichier en PHP ?
- Est ce que tu es sur un hébergement Mutualisé ?
- Quel est le propriétaire des derniers fichier uploadé ? et index.php

mais en principe on ne pourra pas l'exécuter
- Non, je développe en PHP pur!
- Oui je vérifie le TypeMime uniquement
- Oui mutualisé
- C'est le webmaster qui uploade les fichiers et je confirme qu'il n'a uploadé que des fichiers sûrs!
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 08h41   #8
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par randriano Voir le message
- Non, je développe en PHP pur!
- Oui je vérifie le TypeMime uniquement
- Oui mutualisé
- C'est le webmaster qui uploade les fichiers et je confirme qu'il n'a uploadé que des fichiers sûrs!
De quelle manière vérifie tu le type mime ? Les 2 seules solutions efficaces sont l'utilisation de fileinfo ou alors la lecture de l'entête du fichier uploader (qui revient à ce que fileinfo fait mais lui à une bdd des types). Toutes les autres (extension ,entête http ...) sont usurpable assez facilement.

Ton script d'upload est il efficacement sécurisé ? J'entends par là :
- Dois je être identifié
- Dois je avoir un niveau d'accès particulié
- Puis je appeller le script à distance en lui fournissant les paramètre de mon choix ? (en gros ton script est il lié au formulaire de ton site via un token ?)
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 09h21   #9
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Citation:
Envoyé par grunk Voir le message
Ton script d'upload est il efficacement sécurisé ? J'entends par là :
- Dois je être identifié
- Dois je avoir un niveau d'accès particulié
- Puis je appeller le script à distance en lui fournissant les paramètre de mon choix ? (en gros ton script est il lié au formulaire de ton site via un token ?)
Oui
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 09h39   #10
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

Citation:
Envoyé par pablofr
Quel sont les droits dans le dossier où tu peux uploader ?
As-tu rajouter un .htaccess pour bloquer spécifiquement l'utilisation de php dans ce dossier ?
Tu n'as pas répondu à cette question, et vu que le fichier index.php aurait été modifié, je me dis que ça vaut le coup d'insister.

Je suis tout de même très loin d'être un spécialiste (absolument pas un admin système) mais il me semble que pour modifier un répertoire ou un fichier, il faut d'abord avoir les droits.
- Donc soit le gars l'a obtenu en y accédant directement via FTP, là ça suppose qu'il ait obtenu le login/pass, mais apparemment tu dis que ce n'est pas possible.
- Soit les droits sur les fichiers/répertoire seraient trop permissifs.

Pour info, de mon coté, j'essaie de toujours prendre soin de les limiter comme ceci :
chmod 0444 sur tous les fichier et chmod 0666 sur les répertoires.
Un chmod de 0444 ne permet pas de modifier un fichier même par son propre code Php.
Enfin, théoriquement.


De même que tu ne répond pas si coté .htaccess tu as des "Deny from all" au niveau de tes répertoires.

A coté de ça, il a tout sortes de technique qui théoriquement limitent les problèmes, mais ça demande de le prévoir, de concevoir son projet en circonstance.
Donc là encore pour info, de mon coté je mets vraiment un minimum de fichier au niveau du Host (soit www ou htdoc bien souvent), comme le index.php, les images, JS, Css.
En somme, uniquement les fichiers qui doivent être accéssible via HTTP.
Tout le reste, soit : fonctions, classes, etc ... est en dehors du Host, donc par définition inaccessibles via HTTP (il faut passer par le index.php).
Toute cette structure est protégée/renforcée par un .htaccess (deny all).
De plus, j'y rajoute en début de ligne de tous les fichier Php un code comme :
Code :
defined('UNE_CONSTANTE_QUI_DOIT_EXISTER') or exit('Aucun accès directe.');
Un somme, depuis quelque temps ma réflexion est la suivante : Si un fichier ne doit pas être accessible via HTTP, il n'a rien à faire dans le Host (ou virtualhost).
Rien que ça, ceci devrait éviter qu'un pirate puisse ne serait-ce lire le contenu du fichier, qui sait on jamais, peut très bien contenir des infos confidentielles (le pire, mettre son log/pass de MySQL ou FTP).

Ensuite, coté code Html généré en Php, prendre soin d'utiliser les fonctions htmlspecialschar ou htmlentities, car on le sait, un petit malin peu rajouter du code JS en paramètre, et sans ça il peu toujours être interprété et exécuté.
Etdes techniques il y a en bien d'autres, que finalement les codeurs/développeurs ne connaissent pas, ou mal, bien souvent.


En faite, je me dis qu'il sera peut être très difficile de savoir comment le gars à fait pour te modifier du contenu.
Je me dis alors qu'il serait bon de faire le point sur les règles de bases de la sécurité :
Droits sur les fichiers/répertoires, le .htaccess avec les restrictions qu'il doit avoir, la structure du site,
etc, etc ...
Il doit bien avoir des parties quelque peu permissives, non ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 12h13   #11
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Citation:
Envoyé par RunCodePhp Voir le message
Salut

Tu n'as pas répondu à cette question, et vu que le fichier index.php aurait été modifié, je me dis que ça vaut le coup d'insister.
.................
Pour info, de mon coté, j'essaie de toujours prendre soin de les limiter comme ceci :
chmod 0444 sur tous les fichier et chmod 0666 sur les répertoires.
Un chmod de 0444 ne permet pas de modifier un fichier même par son propre code Php.
Enfin, théoriquement.
Bon, je n'ai pas utilisé de .htaccess pour ça mais pour de l'url rewriting mais il y a un fichier index.html dans chaque sous-dossier du site!
Voici le contenu du .htaccess dont je suis entrain de déposer dans chaque dossier
Code :
1
2
3
4
5
6
7
8
9
IndexIgnore *
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off
 
<Files ~ "^.*\.(cgi|pl|php[3-5]{0,1}|shtm?l?|aspx?|cfml?|jsp?)$">
order allow,deny
deny from all
</Files>
Concernant les droits, j'y ai pas touché mais y a-t-il des risques sauf si l'attaque est linux (SSH) ou FTP non?
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 21h56   #12
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 32
Points : 19
Points : 19
Pour faire vite ce soir car pas beaucoup de temps

- Oui je vérifie le TypeMime uniquement -> Très grosse faille de sécurité
- Oui mutualisé -> Donc ca peux aussi vernir de ton voisin sur la même plate de forme; certain hébergement (même très connue) protège mal leur mutualisé

- J'insiste sur le Propriétaire du faire index.php à l'heure où il a été modifier :
Soit il a changer et est www-data ou apache
Soit c'est toujours ton nom d'utilisateur FTP
si c'est www-data ou apache c'est qu'il est bien passé par php
si non FTP -> Je te parle de cela car il y pas mal de vers qui recupe les mots de passe FTP sur les machine. Ils sont très efficace et discret. A ma connaissance il y a que Avast Free qui les détecte bien.

- Si tu as les fichiers logs lance une recherche dedans de : %20

Et j'allais oublier, la version php de ton hébergement ?
pablofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 06h56   #13
Membre chevronné
 
Avatar de randriano
 
Homme Rija Randriano
Inscription : janvier 2007
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Rija Randriano
Localisation : Madagascar

Informations forums :
Inscription : janvier 2007
Messages : 982
Points : 729
Points : 729
Citation:
Envoyé par pablofr Voir le message
Pour faire vite ce soir car pas beaucoup de temps

- Oui je vérifie le TypeMime uniquement -> Très grosse faille de sécurité
- Oui mutualisé -> Donc ca peux aussi vernir de ton voisin sur la même plate de forme; certain hébergement (même très connue) protège mal leur mutualisé
Malheureusement c'est le risque du mutualisé!!!

Très grosse faille de sécurité???!!! En effet, il me semble qu'on ne peut tester que les gif|jpg|png mais si c'est du pdf|xls|doc aucun moyen de détecter si c'est un faux.
__________________
randriano.dvp.com
randriano est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h04.


 
 
 
 
Partenaires

Hébergement Web