Directorio de artículos
Puntos de conocimiento
Vulnerabilidad del comando abierto GET del script Perl
GET es un comando en Lib para WWW en Perl. El propósito es simular solicitudes HTTP GET. La capa inferior de la función GET llama al procesamiento abierto.
Existe la ejecución de comandos abiertos y también admite la función de archivo
Función recién aprendida
Auditoría de código
El código anterior devuelve mi ip, que es md5 encriptada con naranja. El contenido ingresado a través del parámetro url se ejecutará con un comando GET, y
el resultado de la ejecución del comando se almacenará en un archivo con el nombre del valor del parámetro de nombre de archivo.
<?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}
echo $_SERVER["REMOTE_ADDR"];
$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
@mkdir($sandbox);
@chdir($sandbox);
$data = shell_exec("GET " . escapeshellarg($_GET["url"]));
$info = pathinfo($_GET["filename"]);
$dir = str_replace(".", "", basename($info["dirname"]));
@mkdir($dir);
@chdir($dir);
@file_put_contents(basename($info["basename"]), $data);
highlight_file(__FILE__);
Intente leer el directorio raíz y cree un archivo llamado abc.
Veo que readflag debería usarse para leer la bandera y construir la carga útil?url=file:bash -c /readflag|&filename=123