Leia em https://www.drupal.org/node/2357241 e os detalhes técnicos em https://www.drupal.org/SA-CORE-2014-005 , bem como o patch atual que é simplesmente:
diff --git a/includes/database/database.inc b/includes/database/database.inc
index f78098b..01b6385 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -736,7 +736,7 @@ abstract class DatabaseConnection extends PDO {
// to expand it out into a comma-delimited set of placeholders.
foreach (array_filter($args, 'is_array') as $key => $data) {
$new_keys = array();
- foreach ($data as $i => $value) {
+ foreach (array_values($data) as $i => $value) {
// This assumes that there are no other placeholders that use the same
// name. For example, if the array placeholder is defined as :example
// and there is already an :example_2 placeholder, this will generate
Eu estou querendo saber que tipo de solicitação poderia ser feita que utiliza essa exploração?
database.inc
Arquivo ?database.inc
o patch acima (ou manualmente, essa é uma pequena alteração, obviamente), mas eu também recomendo corrigir o Drupal do seu núcleo por completo.Respostas:
A empresa que encontrou o bug possui alguns exemplos no Comunicado 01/2014: Drupal - Vulnerabilidade de injeção SQL pré-autenticação :
Extrair:
fonte
The Problem occurs, if the array has keys, which are no integers
- esta e a consulta de exemplo são bastante úteis para entender isso.O que está acontecendo com 7.32 Verificando o módulo de teste. Você pode ver o seguinte teste foi adicionado a 7,32;
Isso deve fornecer mais informações sobre como criar um ataque.
Prova de conceito Uma vez que se passou mais do que tempo suficiente e existem muitos PoCs em estado selvagem.
Poc # 1 - PHP
Poc # 2 Python - http://pastebin.com/nDwLFV3v
Aqui está um blog que faz um bom detalhamento: http://www.volexity.com/blog/?p=83
fonte
Os pesquisadores que encontraram o bug têm uma prova de conceito. Outros também desenvolveram provas de conceito. No entanto, eles propositalmente não os estão postando para tentar reduzir a probabilidade de que seja amplamente explorado. Devemos respeitar essa pesquisa e restrição e não publicar exemplos aqui.
Depois de algum tempo e os sites forem atualizados, será muito interessante, do ponto de vista acadêmico, revisar o código de ataque de prova de conceito. Até então, é um risco desnecessário e chame atenção.
O código no aviso do SektioinEins não são exemplos totalmente desenvolvidos de como explorá-lo. Eles detalham a fraqueza, mas não identificam exatamente como realmente explorar o problema.
Já se passaram algumas semanas desde o lançamento do problema e o SektionEins publicou várias provas de conceitos em seu blog . Estes são bastante interessantes em comparação com muitas das outras provas de conceito que foram desenvolvidas desde que deixam muito poucos traços de sua atividade (por exemplo, nada na tabela menu_router).
fonte
Posso confirmar que essa vulnerabilidade funcionará com todos os sites Drupal 7.31 e inferiores, não importa quais módulos estejam ativos. Todas as formas drupais podem ser usadas para explorar essa vulnerabilidade.
A exploração é bastante simples, portanto o PoC já está disponível. Consegui atacar o próprio servidor e alterar as senhas de usuário como usuário anônimo na instalação limpa do Drupal, mas as possibilidades são infinitas.
Esse bug era conhecido há quase 1 ano via https://www.drupal.org/node/2146839, mas ninguém da equipe do Drupal Core Security Team respondeu.
fonte
#
da "segurança" tenha impedido alguém de ver o que de outra forma teria, ou talvez haja muitos problemas na fila. Ainda é surpreendente que ninguém tenha respondido.Gostaria de saber como isso poderia ser explorado e quanto tempo e esforço levaria? Por isso, decidi instalar a versão mais antiga do Drupal 7 no meu host local e fazer a engenharia reversa desse bug. O que descobri foi um bug chocante que dá a qualquer pessoa com conhecimento básico sobre HTML / SQL um acesso completo ao seu site Drupal.
Consegui executar a injeção de SQL no Drupal 7 usando usuário anônimo em menos de 30 minutos de tentativa!
http://www.zoubi.me/blog/drupageddon-sa-core-2014-005-drupal-7-sql-injection-exploit-demo
NOTA: Isso ainda não permitirá que você faça o login, já que o Drupal usa o SHA512 com salt, portanto, não é possível fazer o login. Intencionalmente, não coloquei o código aqui, mas obviamente qualquer pessoa com pouco conhecimento em Drupal saberá como superar isso e construir a consulta que lhe dará acesso total!
Isso abre uma questão sobre a segurança do Drupal e de quem é responsável por algo assim. Aparentemente, esse bug era conhecido há mais de um ano ( https://www.drupal.org/node/2146839 ), mas ninguém reagiu ao Drupal.org. Acidental ou intencionalmente? :)
fonte
É uma correção de uma vulnerabilidade de injeção SQL em que instruções SQL mal-intencionadas são inseridas em um campo de entrada para execução e podem levar, por exemplo, a liberação do conteúdo do banco de dados. É importante aplicar essa correção o mais rápido possível, principalmente porque essa vulnerabilidade pode ser explorada por usuários anônimos.
Se você não puder atualizar imediatamente a equipe de segurança, poderá aplicar esse patch que fornecerá a mesma proteção até que você possa fazer a atualização completa 1 . Além disso, a equipe de segurança preparou algumas Perguntas frequentes relacionadas a esse problema. Colocar o site em modo de manutenção não ajudará e limpe o cache após aplicar a atualização ou verifique se você está usando 7.32.
Além disso, você deve verificar se o seu site não foi comprometido. Alguns sites já relatam problemas. Aqui está uma postagem de blog que sugere como verificar a atualização para o Drupal 7.32 não é suficiente; seu site já pode estar hackeado
Aplico a correção em 15 de outubro e meus sites já relataram alguém tentando explorar a vulnerabilidade
fonte