MySQL LOAD_FILE() e INTO OUTFILE() Sql Injection

Jan 19 2023
Neste artigo, discutiremos a função MySQL LOAD_FILE() e a função INTO OUTFILE() e Sql Injection. O MySQL fornece as funções LOAD_FILE() e INTO OUTFILE() que podem ser usadas para ler ou gravar arquivos no sistema de arquivos do servidor onde o banco de dados MySQL está sendo executado.
Foto de Sara Bakhshi no Unsplash

Neste artigo, discutiremos a função MySQL LOAD_FILE() e a função INTO OUTFILE() e Sql Injection. O MySQL fornece as funções LOAD_FILE() e INTO OUTFILE() que podem ser usadas para ler ou gravar arquivos no sistema de arquivos do servidor onde o banco de dados MySQL está sendo executado. Essas funções podem ser vulneráveis ​​a ataques de injeção de SQL se a entrada do usuário não for devidamente sanitizada.

Um invasor pode usar a injeção de SQL para modificar o caminho do arquivo passado para a função LOAD_FILE() ou INTO OUTFILE() para acessar ou gravar em arquivos não autorizados no servidor. Por exemplo, um invasor pode usar a injeção de SQL para ler arquivos confidenciais no servidor ou para gravar código mal-intencionado no servidor, levando potencialmente a um maior comprometimento do sistema.

Para evitar ataques de injeção de SQL ao usar essas funções, é importante validar e limpar adequadamente qualquer entrada do usuário usada como parâmetro na função. Além disso, também é uma boa prática usar a conta de usuário MySQL com menos privilégios ao conectar-se ao banco de dados, pois isso limitará o dano potencial que um invasor pode causar se conseguir injetar SQL mal-intencionado com êxito.

<?php
$file_path = $_GET['file'];
$sql = "SELECT * FROM users WHERE profile_picture = LOAD_FILE('" . $file_path . "')";
$result = mysqli_query($connection, $sql);
?>

Uma amostra de código PHP vulnerável que usa a função MySQL INTO OUTFILE():

<?php
$file_path = $_POST['file'];
$content = $_POST['content'];
$sql = "SELECT '".$content."' INTO OUTFILE '" . $file_path . "'";
$result = mysqli_query($connection, $sql);
?>

Sapo

Neste post, discutimos a função MySQL LOAD_FILE() e a função INTO OUTFILE() e Sql Injection, vejo você no próximo post, cuide-se.