La importancia del directorio de administración

Una de las ventajas de Magento es que podemos modificar la ruta de nuestro panel de administración. Este característica ya está presente en los últimos sistemas de tiendas online, pero en algunos casos daba bastantes problemas con ciertos módulos que instalabamos aparte. Sin embargo, la versatibilidad de Magento no ofrece ningún tipo de problema con los módulos añadidos o con las diferentes características que funcionan bajo Magento.

¿Por qué comento esto?

Hoy nos hemos levantado con un aviso en nuestro panel de control, en el blog oficial de Magento, en LinkedIn, en foros… de un agujero de seguridad relativo al panel de control del tipo CSRF.

mensaje-alerta-admin

No vamos a entrar en detalles de este ataque, podemos leer más información aquí, pero es un ataque que se puede evitar fácilmente ocultando la dirección de nuestro directorio de administración, tal y como comentan en el blog oficial.

Es recomendable que no dejemos el directorio que viene por defecto como acceso para el panel de control, ‘admin‘, sino que pongamos uno modificado, que sólo nosotros conozcamos: ‘zonaadmin‘, ‘privadowww‘, ‘paneldecontrol‘… Con este sencillo paso, además de evitar este tipo de ataques, nos evitamos que otros usuarios accedan a la página de acceso e intentan acceder al sistema probando diferentes claves.

Modificar la ruta del directorio del panel de control de Magento

Abrimos el fichero:

app/etc/local.xml

y actualizamos el valor que encontramos bajo la ruta:

admin->routers->adminhtml->args->frontName

quedando la siguiente estructura:

configxml

[Total:0    Promedio:0/5]

[SEGURIDAD] 3 fallos XSS en el admin de Magento

Security Focus ha revelado antes de ayer 3 fallos de seguridad por inyección XSS relativos a 3 paginas del admin:

  1. El downloader (www.dominio.com/magento/downloader): Para verlo, ir a http://www.dominio.com/magento/downloader?return=%22%3Cscript%3Ealert(xss)%3C/script%3E.
    Para corregirlo, abrir /downloader/Maged/Model/Session.php y reemplazar las lineas 60-62:

    60
    61
    62
    
            if (!empty($_GET['return'])) {
                $this->set('return_url', $_GET['return']);
            }

    por estas:

    60
    61
    62
    
            if (!empty($_GET['return'])) {
                $this->set('return_url', htmlentities($_GET['return']));
            }
  2. Login del administración: Para verlo, poner
    "><script>alert('xss')</script>

    en el campo Nombre de Usuario y lo que sea en de contraseña.
    Para corregirlo, abrir app\design\adminhtml\default\default\template\login.phtml y reemplazar la linea 54:

    54
    
                            <input type="text" id="username" name="login[username]" value="<?php echo $username ?>" class="required-entry input-text" /></div>

    con

    54
    
                            <input type="text" id="username" name="login[username]" value="<?php echo htmlentities($username) ?>" class="required-entry input-text" /></div>
  3. La pagina que reenvia la contraseña del administrador: Para verlo ir a Para verlo, ir a http://www.dominio.com/magento/admin/admin/index/forgotpassword/ y hacer lo mismo que en el punto 2.
    Para corregirlo, abrir app\design\adminhtml\default\default\template\forgotpassword.phtml y reemplazar la linea 58:

    58
    
                            <input type="text" id="email" name="email" value="<?php echo $email ?>" class="required-entry input-text forgot-password" style="width:461px;" />

    con

    58
    
                            <input type="text" id="email" name="email" value="<?php echo htmlentities($email) ?>" class="required-entry input-text forgot-password" style="width:461px;" />

De todas formas, como regla general nunca entrar en el admin a partir de un enlace que os pasan, así se evitan estos peligros. Cuando cambiais el código, cuidado con las comillas, que no sé si copiaran bien o no (de lo que he probado si se guardan bien, pero estad atento 😉 )
Lo he visto donde nuestros vecinos franceses.

Edito: para completar este tema, en el blog oficial explican que una buena practica es de cambiar el nombre del admin,o sea en vez de tener el panel de administración en http://www.midominio.com/magento/admin algo como http://www.midominio.com/magento/loqueyodiga .
Esto se puede especificar en el proceso de instalación de la tienda, pero por si lo queremos cambiar despues, en una tienda en funcionamiento, hay que editar el archivo app/etc/local.xml cambiando el valor de admin->routers->adminhtml->args->frontName:

53
54
55
56
57
58
59
60
61
     <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[loqueyodiga]]></frontName>
                </args>
            </adminhtml>
        </routers>
     </admin>
[Total:0    Promedio:0/5]