CMSmap Escaner de vulnerabilidades en Drupal, WordPress y Joomla

Un tema un tanto importante a tener en cuenta, es la seguridad de un sitio web.

A día de hoy, existen multitud de CMS para hacernos la vida un poco más fácil a todos, pero cuando más conocidos son, más a la vista está el código, y con ello más vulnerabilidades se encuentran.

El mejor consejo, es siempre tener los CMS actualizados a la última versión, tanto CMS como módulos, aparte de toda la seguridad del servidor y buenas prácticas a la hora de la programación.

Existe un escaner de vulnerabilidades basado en python llamado CMSmap.

Este escaner funciona con Drupal, WordPress y Joomla y nos da una lista detallada de las vulnerabilidades encontradas y como explotarlas. Si tenemos como explotarlas, podemos resolverlas aplicando parches en el código o actualizando siempre.

Básicamente funciona haciendo peticiones a todos los módulos conocidos de un CMS y intentar explotarlas.

Lo podemos descargar desde gitHub (como no xD).

Para utilizarlo tenemos diferentes opciones:

-t, –target target URL (e.g. ‘https://abc.test.com:8080/’)
-v, –verbose verbose mode (Default: false)
-T, –threads number of threads (Default: 5)
-u, –usr username or file
-p, –psw password or file
-i, –input scan multiple targets listed in a given text file
-o, –output save output in a file
-k, –crack password hashes file
-w, –wordlist wordlist file (Default: rockyou.txt – WordPress only)
-U, –update (C)MSmap, (W)ordpress plugins and themes, (J)oomla components, (D)rupal modules
-h, –help show this help
-f, –force force scan (W)ordpress, (J)oomla or (D)rupal
-F, –fullscan full scan using large plugin lists. Slow! (Default: false)

Por ejemplo:

cmsmap.py -t https://example.com

Realiza un escaneo simple.

 

Con:
cmsmap.py -t https://example.com -f W

Forzamos que el sitio web sea un WordPress.

 

Con:
cmsmap.py -t https://example.com -u admin -p Diccionario.txt

Podemos hacer fuerza bruta para encontrar el login del usuario admin.

 

Y así tenemos una gran variedad de opciones.

Úsalo bajo tu responsabilidad con fines educativos y siempre para hacer el bien.

 

Un saludo – Juanan 😉

Permisos recursivos PHP en servidor apache (Tips PHP – Seguridad)

No está demás en ningún sitio online la seguridad.

A día de hoy, existen multitud de sitios vulnerables a SQL injection etc…

¿Que pasa si tu sitio no es seguro?

Puedes dejar al descubierto absolutamente todo, existen Shell’s programadas en PHP, por ejemplo C99.php que se pueden subir a un servidor, y si dejamos permisos de ejecución en el servidor para los archivos PHP o los carpetas de manera equivocada,  estamos literalmente vendidos.

Nos pueden desde borrar todo, ejecutar código malicioso, convertir nuestro server en una botnet para hacer ataques DDos, ver nuestras bases de datos etc…

Lo principal es asegurarse de tener alguna medida de seguridad, ya sea desde antivirus, hasta modificaciones en el core, módulos de apache para prevención de ataques etc…

Pero algo muy simple que siempre se debe hacer es tener los permisos adecuados a cada archivo, por lo general los directorios

se suelen dejar en 755 mientras que los PHP en 644.

Darle 777 a un directorio, o permisos de ejecución a un PHP es algo bastante peligroso.

 

Para aplicar los permisos de forma recursiva lo puedes hacer con estos dos comandos.

Los directorios:

find . -type d -exec chmod 755 {} \;

Los archivos a 644:

find . -type f -exec chmod 644 {} \;

 

Cuidadin con la seguridad 😛 – Juanan

Desactivar claves foraneas en MySQL (Tips MySQL)

En ocasiones, cuando estamos manejando una base de datos, tenemos la necesidad de hacer un TRUNCATE TABLE o un

DELETE FROM y es un poco “engorroso” si tenemos claves foraneas (Foreign keys), ir borrando las tablas en cascada.

Con la siguiente sentencia puedes desactivar las claves foraneas:

SET FOREIGN_KEY_CHECKS=0;

 

Una vez hecho el trabajo en la base de datos, no te olvides dejarlo como estaba de la siguiente forma:

SET FOREIGN_KEY_CHECKS=1;

 

Un saludo – Juanan 🙂

Patrones de diseño en PHP

¿Qué es un Patrón de Diseño?

Los patrones de diseño, nos brindan una solución a problemas comunes a la hora de diseñar software que ya están probados y documentados.

Hay que decir, que muchas veces, usamos algún patrón a la hora de diseñar software sin apenas darnos cuenta, ya que en ocasiones cualquier programador, se pone a programar sin pensar que patrón tiene que aplicar a un problema.

No es obligatorio siempre aplicar un patrón a la hora de diseñar software, esto depende de la necesidad, ya que en ocasiones, algo no es de tanta envergadura como para aplicar un tipo de diseño específico, pero sí que nos pueden ayudar a salir de una “encerrona” cuando nos quedamos bloqueados a la hora de nuestro desarrollo de software.

A la hora de aplicar un patrón, debemos analizar la situación en la que estamos y tener en cuenta tres cosas básicas:

1 – El problema que tenemos.

2 – Cuando aplicar un patrón.

3 – Que patrón elegir.

Muchos CMS, implementan patrones de diseño muy conocidos, Prestashop, o algunos Frameworks PHP, están muy enfocados a MVC.

Otros patrones conocidos y que también se usan bastante, pueden ser el Factory que como su nombre indica es una fábrica de instancias, objetos, etc…

El patrón Singleton, se utiliza para crear una sola instancia. Este por ejemplo, lo podemos usar para asegurarnos de que solo existe una conexión a una base de datos desde una clase.

A día de hoy,estos son los patrones de diseño que más he utilizado, pero existen muchos más. Como curiosidad, en github, hay un proyecto donde hay un montón de patrones explicados en PHP, es algo que me llamo mucho la  atención y que me gustaría compartir. Dejo el link a continuación.

https://github.com/domnikl/DesignPatternsPHP

Este chico, se ha currado un montón de ejemplos programados y muy bien documentados en PHP.

También tenemos que comentar, que existen los “anti-patrones” de diseño, pero de eso ya hablaremos otro día.

Un saludo – Juanan Vicent 😉

Volvemos??

Hace dos años que no publico nada en el blog.

A día de hoy, he adquirido muchos conocimientos tanto en mi trabajo como programador en ESET España, como por mi cuenta.

Tal es así, que me he planteado algo,que tal si volvemos a re-emprender ésto?…

Mi intención es publicar curiosidades, pequeños tutoriales, o algunas explicaciones.

A partir de ahora, publicaré uno o dos artículos por semana.

Temas relacionados con Prestashop, Drupal, Joomla, PHP, etc…

Así como temas relacionados con seguridad y vulnerabilidades informáticas.

También en la medida de lo posible, iré contestando a los comentarios más recientes que tengo por moderar.

…..Volvemos??

letsgo2

VMWare en Debian 6 Squeeze

Ayer en el trabajo , me encontré en la situación de tener que instalar VMware Server sobre una máquina linux, concretamente una Debian Squeeze.

La cosa pintaba bien, pero cuando me puse manos a la obra, me topé con el problema de que la versión 2.0.2 de VMware Server no funcionaba correctamente bajo ésta distribución linux. Al parecer el instalador está montado para kernels más antiguos, no me quiero ni imaginar que podría haber ocurrido si el SO anfitrión del servidor fuera Ubuntu, o algún otra distro que cambia de versión y de Kernel como de ropa interior xD..jejeje..

Al lío,  me he puesto a indagar un poco éste fin de semana en mi casa,y con mis trasto, y al fín he encontrado la solución.

Lo primero; registrarnos y bajarnos la versión VMware Server del sitio oficial (recordad que és grátis). Hay que descargar la “tar.gz”, NO la “rpm”.

Después instalamos los paquetes necesários:

sudo apt-get install build-essential  gcc-4.3 linux-headers-`uname -r`

Necesitamos, los headers de nuestro kernel, el gcc 4.3 para compilar los módulos del vmware, y varias utilidades de buil-essential (killall etc…)…

Después descomprimimos el .gz de el vmware:

tar -xvzf  VMware-server-2.0.2-203138.i386.tar.gz

Ejecutamos el instalador:

./vmware-install.pl

Bien, ahora vamos a responder a varios tips, dejamos todo por defecto respondiendo con “enter” hasta que nos pregunte si queremos ejecutar el script de configuración vmware-config.pl a lo que responderemos  NO.

Ahora, tenemos que parchear algunos módulos para poder compilarlos, para ello bajamos éste parche:

wget http://codebin.cotescu.com/vmware/vmware-server-2.0.x-kernel-2.6.3x-install.sh

Seguidamente descomprimimos el parche:

tar  -xvzf vmware-server-2.0.x-kernel-2.6.3x-install

Copiamos el primer parche aquí:

cp vmware-config.patch /usr/bin

Y el segundo parche aquí:

cp vmware-server-2.0.2-203138-update.patch /usr/lib/vmware/modules/source

Una vez hecho esto, aplicamos el primer parche:

/usr/bin/patch -p3 < vmware-config.patch

Después aplicamos el segundo,podemos montar un script, o simplemente copiar estas cuatro lineas en la shell:

cd /usr/lib/vmware/modules/source

for i in *.tar ; do tar xpf $i ; done

patch -p4 < vmware-server-2.0.2-203138-update.patch

for i in vmci vmmon vmnet vsock ; do tar cpf $i.tar $i-only ; done

Ya tenemos casi todo, pero nos faltan un par de cosas para poder configurar nuestro VMware correctamente, y es que como ya he comentado la versión de gcc que se utilizo para compilar nuestro kernel es distinta que la que requiere el instalador de VMware, por lo tanto hacemos ésto:

rm -f /usr/bin/gcc


Y después:
ln -fs /usr/bin/gcc-4.3 /usr/bin/gcc

Con esto estamos creando un enlace simbólico de la versión gcc-4.3 para poder configurar VMware.

Si todo ha salido bién, ya podremos configurar nuestro VMware server lanzando el script:

/usr/bin/./vmware-config.pl

Tras la configuración,solo nos queda acceder a nuestra máquina a través de el navegador, yo he usado Google Chrome, ya que Firefox me estaba dando problemas:

https://Ip_de_la_máquina:8333

Y ésto és todo, espero que a alguien le pueda servir de ayuda..

Un Saludo!

EDIT: Al parecer, no funciona el plugin de administración remota desde ningún navegador de linux, por lo menos actuales.

Sí que nos deja entrar a parte de la administración con Chrome, pero no con firefox, opera etc…

Sigo buscando una solución …ñam ñam xD

Un Saludo

CSS3 y Internet Explorer (border-radius ie6,ie7,ie8)

Algunas propiedades CSS3 como border-radius, box-shadow, o linear-gradient son propiedades que todo navegador “decente” reconoce, pero Internet Explorer 6,7 y 8 no.
Al fín los de Micro$oft se han dado cuenta y en Internet Explorer 9 han implementado el reconocimiento de estos.

Si quieres usar estas propiedades en Internet Explorer existe una solución muy efectiva,se llama Css3Pie. Por ejemplo,para usar bordes redondeados:


#ejemplo{
 -webkit-border-radius: 1px;
 -moz-border-radius: 1px;
 border-radius: 1px;
 }

Pero al usar IE no se visualizan los bordes redondeados, entonces al código anterior le agregamos behavior:url(PIE.htc)


#ejemplo{
 -webkit-border-radius: 1px;
 -moz-border-radius: 1px;
 border-radius: 1px;
 behavior: url(PIE.htc);
 }

PIE.htc es un archivo que podemos descargarlo desde css3pie.com .

El mismo método se usa para box-shadow y linear-gradiente , usando al final behavior: url(PIE.htc);

Como dirían en un programa de TV de cuyo nombre no puedo acordarme, “fácil, sencillo y para toda la familia”…

Un Saludo!

Juanan Web