Problème grave, fishing, online.net

Problème grave, fishing, online.net - PHP - Programmation

Marsh Posté le 07-01-2007 à 15:28:43    

Bonjour,
 
Un amis pour qui j'ai fait un petit site internet a un problème grave. Il semblerai que des Hackers (il s'agit là d'une réelle fraude donc pardon pour les hacker dans le sens noble du terme) arrivent à placer des fichiers immitant le design de banques (HSBC, etc...) sur son site.
 
Je n'arrive pas à savoir si il s'agit d'un problème de sécurité concernant Online.net (l'hébergeur) ou bien une faille php que j'aurai laissé passer. Le code php  que j'utilise sur les page me sert à inclure une page dans la page principale (du style index.htm?page=cours.htm). Je crain qu'il soit possible qu'ils utilisent cela pour inclure une page à eux et la faire interpréter par le serveur, ce qui leur permet de copier des pages sur notre site.  
 

Citation :

<?  
     if (empty($page)){ $page = "accueil.htm";};
     
     require $page;  
         
     ?>


 
Voilà le code.  
 
Comment sécuriser ?
 
Merci d'avance.

Reply

Marsh Posté le 07-01-2007 à 15:28:43   

Reply

Marsh Posté le 07-01-2007 à 16:09:24    

Je déplace dans programmation.


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 07-01-2007 à 18:01:55    

tu code présente la faille dite include
 
pour sécuriser un peu plus tu peux rajouter un test du genre if(file_exist($page)) {include ($page);)
 
ceci n'est pas sécurisé sur les serveur php récent alors il te suffit de faire un switch d'action
 
exemple index.php?p=actu ==>
if(isset($page)) {
switch $page {
case 'actu' : include "./actu.php";
}
}

Reply

Marsh Posté le 07-01-2007 à 18:11:35    

Merci pour l'astuce je corrige.
 
J'ai par ailleur ajouté un log des page passées en paramètres pour voir où les pirates vont chercher leur pages à inclure et vous le signaler.

Reply

Marsh Posté le 07-01-2007 à 18:32:06    

si c'est du fishing sur les sites des banques il y a un gros dispositif derriere il sera impossible pour nous de les remonter :/

Reply

Marsh Posté le 10-01-2007 à 13:35:48    

Bon j'ai corrigé le prb. J'ai inclus le controle que "http://" n'est pas présent dans le parametre. Ca devrai empécher d'aller chercher les pages ailleur que sur mon site. De plus je controle l'existance de la page.
 
Sinon ils procède comme suis (pour info):
 
Ils appellent un script qui se trouve sur ces sites ATTENTION VIRUS:
- http://www.aeroclube-castelobranco [...] x-sux.jpg?
- http://pennmountain.com/media/osx-sux.jpg?
- http://usuarios.lycos.es/poizonbox/r57.txt?

 
C'est un IR shell qui permet de faire des copier, execution de script, etc...


Message édité par kayno le 11-01-2007 à 07:57:40
Reply

Marsh Posté le 10-01-2007 à 13:38:23    

kayno a écrit :

Voilà le code.  
 
Comment sécuriser ?
 
Merci d'avance.


Note que c'est quand-même la première faille qu'on t'apprend quand tu fais du PHP, regarde un peu tous les articles traitant de la sécurité, y'en a tout plein

Reply

Marsh Posté le 10-01-2007 à 14:34:21    

Vivi mea culpa... j'ai fait ça pour aider vite fait pour un pote et j'ai pas pris soin de vérifier la sécu.
 

Reply

Marsh Posté le 10-01-2007 à 16:20:29    

Sinon pour empecher que ton script incluse des fichiers distants :  
ini_set("allow_url_fopen", "0" );
 
Bon ok c'est un peut bourrin :D
 
Tu peux faire aussi un truc du genre
if(!preg_match('@^[a-z0-9]*\.htm$@i',$page)){$page='acceuil.htm';}


Message édité par chaced le 10-01-2007 à 16:21:15
Reply

Marsh Posté le 10-01-2007 à 16:24:03    

Citation :

"http://"

attention aux serveurs en https ou en ftp.
 

Code :
  1. if(!preg_match('@^[a-z0-9]*\.htm$@i',$page)){$page='acceuil.htm';}


et si le gas a mis son fichier en .txt par exemple?
Finalement le switch est encore le plus sur à condition de prévoir une valeur par défaut.

Reply

Marsh Posté le 10-01-2007 à 16:24:03   

Reply

Marsh Posté le 10-01-2007 à 16:31:35    

omega2 a écrit :

Citation :

"http://"

attention aux serveurs en https ou en ftp.
 

Code :
  1. if(!preg_match('@^[a-z0-9]*\.htm$@i',$page)){$page='acceuil.htm';}


et si le gars a mis son fichier en .txt par exemple?
Finalement le switch est encore le plus sur à condition de prévoir une valeur par défaut.


 
Ben tu mets une white list moins restrictive :D, le principal c'est surtout d'eviter les .. et les //


Message édité par chaced le 10-01-2007 à 16:32:36
Reply

Marsh Posté le 11-01-2007 à 07:57:10    

Arf merdum. Je ne les ai pas utilisé comme ça directement ^^ c inclus dans un script. tu utilises kel antivirus ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed