segunda-feira, 2 de março de 2015

Seagate Business NAS / Pre-Authentication Remote Code Execution (0day)

Seagate é um fornecedor bem conhecido em soluções de hardware, com produtos disponíveis em todo o mundo. Sua linha de produtos NAS dirigidas às empresas é chamado de Business Storage 2-Bay NAS. Estes podem ser encontrados dentro de redes domésticas e empresariais e, em muitos casos, eles são expostos publicamente.
Seagate é um fornecedor bem conhecido em soluções de hardware, com produtos disponíveis em todo o mundo. Sua linha de produtos NAS dirigidas às empresas é chamado de Business Storage 2-Bay NAS. Estes podem ser encontrados dentro de redes domésticas e empresariais e, em muitos casos, eles são expostos publicamente.


Os produtos que executam versões de firmware até a versão 2014,00319 foram encontrados vulnerabilidades que permitem a execução remota de código como usuário root.
Essas vulnerabilidades são exploráveis sem necessidade de qualquer forma de autorização no dispositivo.

Detalhes da Vulnerabilidade

Produtos Business Storage 2-Bay NAS vem com um aplicativo de gerenciamento de web habilitado. Este aplicativo permite que os administradores executem funções de configuração de dispositivos usuais, como a adição de usuários, a criação de controle de acesso, gerenciamento de arquivos etc...

A aplicação web é construído com as seguintes tecnologias de base:

  1. PHP versão 5.2.13 (Lançado 25 de fevereiro de 2010)
  2. CodeIgniter 2.1.0 (23 Lançado em novembro de 2011)
  3. Lighttpd 1.4.28 (Lançado 22 de agosto de 2010)

Todas essas três tecnologias são claramente desatualizadas, e as versões listadas do PHP e CodeIgniter são conhecidos por terem problemas de segurança. Em cima dessas tecnologias seta uma aplicação PHP personalizado, que contém em si uma série de brechas relacionadas à segurança é digamos bem problemático.

Detalhes sobre as tecnologias setadas acima o porque estão defasadas, tais versões.

PHP 5.2.3

As versões do PHP anteriores à 5.3.4 permitir aos usuários especificar caminhos de arquivo que incluem um byte NULL (CVE-2006-7243). Essa brecha permite que os dados controlados pelo usuário para encerrar prematuramente caminhos de arquivo, permitindo controle total sobre a extensão do arquivo.
Demonstrado por .php\0.jpg no final do argumento para a função file_exists.

CodeIgniter 2.1.0

Versões do CodeIgniter  2.2.0 criam tokens de sessão que são constituídos de um array associativo PHP serializado (hash), que foi criptografada usando um algoritmo personalizado.
Este hash de PHP contém dados controladas pelo utilizador, o que torna possível para os usuários uma extração de chave pa (criptografar e descriptografar) o conteúdo do cookie (CVE-2014-8686). Uma vez decifrados, os usuários podem modificar o conteúdo do cookie e re-encrypt antes de enviá-lo de volta para o servidor, resultando em outros vetores de ataque potenciais, incluindo PHP object injection.

Exploitation / Bypass

É simples de explorar os problemas listados acima para obter a execução de código arbitrário no dispositivo como o usuário root. Os principais passos necessários para alcançar este objectivo são:

O atacante deve escrever código PHP para o sistema de arquivos no NAS.
Isso pode ser feito de várias maneiras, incluindo:

  1. HTTP access envenenamento arquivo de log por meio do cabeçalho User-Agent.
  2. HTTP error envenenamento arquivo de registro através do cabeçalho do host.
  3. Modificando a descrição do dispositivo na interface do aplicativo web. Este escreve cadeias controladas pelo usuário para um arquivo localizado em /etc/DeviceDesc, no entanto, requer direitos administrativos.
  4. Upload de arquivos para um compartilhamento de arquivo que o dispositivo tenha exposto. 
  • O atacante deve, então, manipular o conteúdo da variável de idioma no cookie de sessão para que ele contém o caminho para o PHP controlado pelo invasor no sistema de arquivos.
  • A falha byte NULL em PHP deve ser utilizado no fim de este valor para forçar o PHP ignorar quaisquer caracteres que são acrescentados ao caminho do arquivo pelo aplicativo web.
  • O invasor, então, faz um pedido com os cookies manipulados, resultando na execução de código como root.

O Script-Exploit

 Beyond Binary(https://beyondbinary.io/) produziu um módulo Metasploit e um script Python standalone que automatizar o processo de exploração. Cada um desses scripts ter a seguinte abordagem:

  1. Conecta-se a meta de NAS e extrai um cookie ci_session.
  2. Decifrar o cookie usando a chave de criptografia estática de 0f0a000d02011f0248000d290d0b0b0e03010e07 e extrair o hash PHP.
  3. Modifica o hash PHP serializado para que o nome de usuário é definido como administrador e o campo is_admin está definido para yes.
  4. Criptografe essa hash atualizando o PHP pronto para uso posterior como um cookie ci_session. Este cookie permite agora que os futuros pedidos para operar no NAS como se fossem um administrador("DILIÇÇA CARA").
  5. Executar um pedido para extrair a configuração do host, que inclui a descrição do dispositivo.
  6. Modificar a configuração de host para que a descrição do dispositivo contenha uma pequena stager payload.
  7. Executar uma solicitação para atualizar a configuração do host com os novos dados, de modo que a stager payload é gravado em /etc/DeviceDesc.
  8. Modificar o hash PHP novamente para que o parâmetro de idioma contenha o  ../../../../etc/devicedesc\x00 como valor (note o byte NULL no final).
  9. Criptografar a nova hash PHP pronto para uso futuro como um cookie ci_session.
  10. Executar um pedido para NAS usando o cookie criado na etapa anterior. Isso chama a stager que foi escrito para o disco. Pedindo um mensagens como uma carga maior, que é gravado em disco na raiz do servidor web.
  11. Executa um outro pedido que, em seguida, redefine a configuração de host de volta ao que era antes da exploração.
Shodan(https://www.shodan.io/) relata que há mais de 2.500 dispositivos expostos publicamente na Internet que são possíveis vulneráveis.

Explots disponíveis para download aqui:

Beyond Binary(https://beyondbinary.io/) produziu um módulo Metasploit e um script Python standalone que automatizar o processo de exploração. Cada um desses scripts ter a seguinte abordagem:  Conecta-se a meta de NAS e extrai um cookie ci_session. Decifrar o cookie usando a chave de criptografia estática de 0f0a000d02011f0248000d290d0b0b0e03010e07 e extrair o hash PHP. Modifica o hash PHP serializado para que o nome de usuário é definido como administrador e o campo is_admin está definido para yes. Criptografe essa hash atualizando o PHP pronto para uso posterior como um cookie ci_session. Este cookie permite agora que os futuros pedidos para operar no NAS como se fossem um administrador("DILIÇÇA CARA"). Executar um pedido para extrair a configuração do host, que inclui a descrição do dispositivo. Modificar a configuração de host para que a descrição do dispositivo contenha uma pequena stager payload. Executar uma solicitação para atualizar a configuração do host com os novos dados, de modo que a stager payload é gravado em /etc/DeviceDesc. Modificar o hash PHP novamente para que o parâmetro de idioma contenha o  ../../../../etc/devicedesc\x00 como valor (note o byte NULL no final). Criptografar a nova hash PHP pronto para uso futuro como um cookie ci_session. Executar um pedido para NAS usando o cookie criado na etapa anterior. Isso chama a stager que foi escrito para o disco. Pedindo um mensagens como uma carga maior, que é gravado em disco na raiz do servidor web. Executa um outro pedido que, em seguida, redefine a configuração de host de volta ao que era antes da exploração.

----------------------------------------------------------------------------------------------------
https://beyondbinary.io/exploits/bbsec001/seagate_nas_php_exec_noauth.rb
OU
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/seagate_nas_php_exec_noauth.rb
----------------------------------------------------------------------------------------------------
https://beyondbinary.io/exploits/bbsec001/seagate_nas_php_exec_noauth.py
OU
http://www.exploit-db.com/exploits/36202/
----------------------------------------------------------------------------------------------------

Seagate Business NAS <= 2014.00319 - Pre-Authentication Remote Code Execution (0day)

Some Seagate Business NAS devices are vulnerable to command execution via a local file include vulnerability hidden in the language parameter of the CodeIgniter session cookie. The vulnerability manifests in the way the language files are included in the code on the login page, and hence is open to attack from users without the need for authentication. The cookie can be easily decrypted using a known static encryption key and re-encrypted once the PHP object string has been modified. This module has been tested on the STBN300 device.

CVE-2014-8684 , CVE-2014-8686 , CVE-2014-8687

 Usage
 =====
 seagape.py <ip> <port> [-c [ua]]

 - ip   : ip or host name of the target NAS
 - port : port of the admin web ui
 - -c   : (optional) create a cookie which will give admin access.
          Not specifying this flag results in webshell installation.
 - ua   : (optional) the user agent used by the browser for the
          admin session (UA must match the target browser).
          Default value is listed below

 Example
 =======
 Install and interact with the web shell:
 seagape.py 192.168.0.1 80

 Create admin cookie
 seagape.py 192.168.0.1 80 -c
http://1337day.com/exploit/23338
----------------------------------------------------------------------------------------------------

REF:
http://www.rapid7.com/db/vulnerabilities/php-cve-2006-7243
https://beyondbinary.io/advisory/seagate-nas-rce/

Nenhum comentário:

Postar um comentário

............