- Mitglied seit
- 04. Sep 2008
- Beiträge
- 2.341
- Punkte für Reaktionen
- 14
- Punkte
- 84
Ich hatte schon eine Analyse durchgeführt und einen kleinen Teil in der adm.php deaktiviert, danach lief es wieder. Wofür der Teil benutzt wird und ob es noch andere Stellen gibt, kann ich zur Zeit nicht sagen, da keine Zeit. Es ist irgendetwas mit dem popen im neuen php 5.5 auf unserer DS, das nicht so funktioniert wie vorher.
itari ist leider nicht mehr sehr aktiv hier im Forum und ob er es dann anpassen würde, ist noch eine andere Frage.
Hier also die Anpassungen:
itari ist leider nicht mehr sehr aktiv hier im Forum und ob er es dann anpassen würde, ist noch eine andere Frage.
Hier also die Anpassungen:
- /var/packages/adm/target/adm.php mit geeignetem Editor öffnen
- Zeile 70 - 76 auskommentieren mit //, dass der Block danach so aussieht
PHP:else if (isset($_REQUEST['raw']) && $_REQUEST['raw'] == '6') { if (sizeof($cmd) > 0) { $descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); unset($ret); unset($pipes); preg_match('/(^.*)[>] (.*)$/U', $cmd, $token); if (preg_match('/^ll/', $token[2])) {$token[2] = preg_replace('/^ll/','ls -l', $token[2]);} // $process = proc_open('/opt/bin/bash', $descriptorspec, &$pipes); // fwrite($pipes[0], 'PATH=/opt/bin:/opt/sbin:$PATH;cd '.$token[1].';'.$token[2]); fclose($pipes[0]); // $ret_stdout = trim(stream_get_contents($pipes[1])); fclose($pipes[1]); // $ret_stderr = trim(stream_get_contents($pipes[2])); fclose($pipes[2]); // if (strlen($ret_stderr)>0) {print '[2]:'.chr(10).$ret_stderr.chr(10).'[1]:'.chr(10);} // print $ret_stdout; // proc_close($process); } else print 'error'; }
- für authenticate und SynoToken Support, Zeile 2 bis 13 löschen und das Folgende einfügen
PHP:if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $clientIP = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_X_REAL_IP'])){ $clientIP = $_SERVER['HTTP_X_REAL_IP']; } else { $clientIP = $_SERVER['REMOTE_ADDR']; } putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']); putenv('REMOTE_ADDR='.$clientIP); $login = shell_exec("/usr/syno/synoman/webman/login.cgi"); preg_match('/\"SynoToken\"\s*?:\s*?\"(.*)\"/',$login,$synotoken); $synotoken = trim($synotoken[1]); putenv('QUERY_STRING=SynoToken='.$synotoken); $user = exec("/usr/syno/synoman/webman/modules/authenticate.cgi"); $ip = substr($clientIP,0,3); $logfile = '/var/log/adm.log'; if (($ip == '203' || $ip == '198' || $ip == '192' || $ip == '172' || $ip == '10.') && $user === 'admin'){ if (is_file($logfile)) exec('/opt/bin/date "+%m-%d %H:%M:%S '.$clientIP.' '.$user.' '.trim($_REQUEST['cmd']).'" >> '.$logfile); } else { if (is_file($logfile)) exec('/opt/bin/date "+%m-%d %H:%M:%S '.$clientIP.' '.$user.' BLOCKED" >> '.$logfile); print 'blocked'; exit; }
Zuletzt bearbeitet: