MySQL File priv to SSRF/RCE

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Este é um resumo das técnicas do MySQL/MariaDB/Percona de https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Server-Side Request Forgery (SSRF) via Funções SQL

Na exploração da exfiltração de dados Out of Band do SQL, a função LOAD_FILE() é comumente utilizada para iniciar solicitações de rede. No entanto, essa função é limitada pelo sistema operacional em que opera e pelas configurações de inicialização do banco de dados.

A variável global secure_file_priv, se não definida, tem como padrão /var/lib/mysql-files/, limitando o acesso a arquivos a este diretório, a menos que seja definida como uma string vazia (""). Este ajuste requer modificações no arquivo de configuração do banco de dados ou nos parâmetros de inicialização.

Dado que secure_file_priv está desativado (""), e assumindo que as permissões necessárias de arquivo e file_priv são concedidas, arquivos fora do diretório designado podem ser lidos. No entanto, a capacidade dessas funções de fazer chamadas de rede depende muito do sistema operacional. Em sistemas Windows, chamadas de rede para caminhos UNC são possíveis devido ao entendimento do sistema operacional das convenções de nomenclatura UNC, potencialmente levando à exfiltração de hashes NTLMv2.

Este método de SSRF é limitado à porta TCP 445 e não permite a modificação do número da porta, embora possa ser usado para acessar compartilhamentos com privilégios de leitura total e, como demonstrado em pesquisas anteriores, para roubar hashes para exploração adicional.

Execução de Código Remoto (RCE) via Funções Definidas pelo Usuário (UDF)

Bancos de dados MySQL oferecem o uso de Funções Definidas pelo Usuário (UDF) a partir de arquivos de biblioteca externos. Se essas bibliotecas forem acessíveis dentro de diretórios específicos ou no $PATH do sistema, elas podem ser invocadas de dentro do MySQL.

Essa técnica permite a execução de solicitações de rede/HTTP por meio de uma UDF, desde que várias condições sejam atendidas, incluindo acesso de gravação ao @@plugin_dir, file_priv definido como Y e secure_file_priv desativado.

Por exemplo, a biblioteca lib_mysqludf_sys ou outras bibliotecas UDF que permitem solicitações HTTP podem ser carregadas para realizar SSRF. As bibliotecas devem ser transferidas para o servidor, o que pode ser alcançado por meio da codificação em hexadecimal ou base64 do conteúdo da biblioteca e, em seguida, gravando-a no diretório apropriado.

O processo varia se o @@plugin_dir não for gravável, especialmente para versões do MySQL acima de v5.0.67. Nesses casos, devem ser usados caminhos alternativos que sejam graváveis.

A automação desses processos pode ser facilitada por ferramentas como o SQLMap, que suporta injeção de UDF, e para injeções de SQL cegas, a redireção de saída ou técnicas de contrabando de solicitação DNS podem ser utilizadas.

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Last updated