5.3 KiB
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:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
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 o arquivo necessário e as permissões 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 viáveis devido à compreensão 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 em 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ções 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:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.