sábado, 24 de diciembre de 2016

Maxima: Un sistema de álgebra computacional

En esta ocasión quería hablaros de Maxima, un software matemático que he estado utilizando estos últimos meses y del que estoy muy sorprendido por sus amplias capacidades en el ámbito del algebra.

Máxima es un sistema de álgebra computacional derivado de Macsyma, creado por el MIT y desarrollado en el lenguaje de programación Lisp, también es 100% gratuito por estar bajo licencia GLP. Está especializado en operaciones simbólicas, permitiendo realizar cálculos conceptualmente ilimitados (solo nos limitará el hardware de la máquina) pero además de lo anterior posibilita la realización de cálculos intensivos en reales de coma flotante con una alta precisión.

Maxima nos permite la manipulación de expresiones simbólicas y numéricas, teniendo soporte para operar en los siguientes campos de las matemáticas:
  • Soporte para campos más específicos de las matemáticas
    • Polinomios: Operaciones con polinomios.
    • Funciones Especiales: Funciones especiales.
    • Funciones elípticas: Funciones e integrales elípticas.
    • Límites: Cálculo de límites.
    • Diferenciación: Cálculo diferencial.
    • Integración: Cálculo integral.
    • Ecuaciones: Definición y resolución de ecuaciones.
    • Ecuaciones Diferenciales: Definición y resolución de ecuaciones diferenciales.
    • Métodos numéricos: Integración numérica, transformadas de Fourier, etc.
    • Matrices y Álgebra Lineal: Operaciones matriciales.
    • Afines     
    • itensor: Manipulación indexada de tensores
    • ctensor: Manipulación por componentes de tensores
    • atensor: Manipulación algebraica de tensores
    • Sumas productos y series: Sumas, productos, Taylor y series de potencias.
    • Teoría de Números: Teoría de números.
    • Simetrías     
    • Grupos: Álgebra abstracta.
  • Funcionalidades avanzadas y programación
    • Entorno de Ejecución: Personalización de Maxima. 
    • Miscelánea de opciones: Opciones que afectan globalmente el comportamiento de Maxima. 
    • Reglas y patrones: Patrones de definidos por el usuario y reglas de simplificación.
    • Conjuntos: Operaciones con conjuntos. 
    • Definición de Funciones: Programando funciones. 
    • Programación: Programación en Maxima. 
    • Depurado: Depuración de fallos en programas Maxima. 
  • Paquetes adicionales
    • augmented_lagrangian: Paquete augmented_lagrangian.
    • Bernstein: Polinomios de Bernstein.
    • bode: Gráficos de Bode. 
    • cobyla: Optimización no lineal con restricciones en desigualdades. 
    • contrib_ode: Procedimientos adicionales para EDOs. 
    • descriptive: Estadística descriptiva. 
    • diag: Matrices de Jordan. 
    • distrib: Distribuciones de probabilidad. 
    • draw: Un interfaz Maxima-Gnuplot. 
    • drawdf: Dibuja campos de direcciones con Gnuplot. 
    • dynamics: Gráficas de sistemas dinámicos y fractales. 
    • ezunits: Magnitudes dimensionales. 
    • f90: Traductor de Maxima fortran. 
    • finance: Cálculo financiero. 
    • fractals: Fractales. 
    • ggf: Expresión general de sucesiones. 
    • graphs: Teoría de grafos. 
    • grobner: Funciones para trabajar con bases de Groebner. 
    • impdiff: Derivadas implícitas. 
    • interpol: Interpolación. 
    • lapack: Paquete LAPACK para álgebra lineal. 
    • lbfgs: Paquete L-BFGS para minimización sin restricciones. 
    • lindstedt: Paquete Lindstedt.
    • linearalgebra: Funciones de álgebra lineal.
    • lsquares: Mínimos cuadrados.
    • makeOrders: Utilidad sobre polinomios.
    • minpack: Funciones MINPACK para optimización y cálculo de raíces
    • mnewton: Método de Newton.
    • numericalio: Lectura y escritura de ficheros.
    • opsubst: Utilidad para sustituciones.
    • orthopoly: Polinomios ortogonales.
    • romberg: Integración numérica por el método de Romberg.
    • simplex: Programación lineal.
    • simplification: Reglas y funciones de simplificación.
    • solve_rec: Recurrencias lineales.
    • stats: Inferencia estadística.
    • stirling: Fórmula de Stirling.
    • stringproc: Procesamiento de cadenas.
    • to_poly_solve: Paquete to_poly_solve.
    • unit: Unidades físicas y dimensiones.
    • zeilberger: Funciones para series hipergeométricas.
Otro aspecto muy interesante de Maxima es que, al facilitarnos el código fuente, podemos adecuarlo para ser utilizado en proyectos donde tengamos necesidades matemáticas de alta precisión.

Como tal, máxima es un motor de cálculo que se usa de manera muy austera mediante comandos, pero si lo que queremos es utilizarlo yo recomendaría su uso a través de un entorno como wxMaxima.

WxMaxima es una interfaz gráfica que permite el uso del motor de cálculo simbólico Máxima de manera fácil gracias a un conjunto de menús y ayudas en línea y también es 100% gratuito por estar bajo licencia GPL.



En futuros post pondré ejemplos de uso en problemas matemáticos concretos.

martes, 17 de mayo de 2016

Subversion: backup y restauración fácil

Hay muchos manuales con comandos muy completos para realizar un backup o una restauración de un repositorio subversion. Yo pongo a continuación los comandos que utilizo en el 99% de los casos para que si alguien se encuentra en la situación de realizar una copia de seguridad o restaurarla no tenga que “calentarse los casco” mirando lo que significa cada uno de los parámetros o mirando si tiene tal o cual opción activa en apache.

Backup

Primero tendremos que localizar en que directorio está nuestro repositorio (en mi caso se encuentra en /var/www/svn/ que es el lugar más común) y luego lanzamos el siguiente comando que nos generará un dump con todo el backup completo del repositorio:

svnadmin dump ruta_absoluta_del_repositorio > nombre_del_backup

Ejemplo

[root@lapsusmentis ~]# svnadmin dump /var/www/svn/lapsusmentis > lapsusmentis

Restauración

Antes de nada indicar que si queremos restaurar el backup en el mismo subversion de donde obtuvimos el backup, primero tendremos que borrar el directorio con el comando rm -rf. En mi caso sería:

[root@lapsusmentis ~]#  rm -rf /var/www/svn/lapsusmentis

Tras este paso, generaremos un nuevo repositorio con el siguiente comando:

[root@lapsusmentis ~]#  svnadmin create /var/www/svn/nuevo_repositorio

Para finalizar, volcaremos el backup con el comando que pongo a continuación:

[root@lapsusmentis ~]#  svnadmin load /var/www/svn/nuevo_repositorio < lapsusmentis

lunes, 11 de abril de 2016

El error de guardar contraseñas en el navegador

En general todos los navegadores permiten que el usuario guarden sus credenciales de acceso (usuario/contraseña) de una web en él, estando activada esta opción por defecto tras su instalación y recordándonos que tenemos esta opción disponible cada vez que entramos en una nueva web que requiere usuario/password para acceder. A continuación pongo una captura para que quede claro al mensaje que me refiero (esta es de Firefox pero en el resto de navegadores es similar).




Aparentemente es un lugar seguro porque si desde el apartado de configuración del navegador le indicamos que nos muestre las contraseñas guardadas, el navegador nos pedirá introducir la contraseña para desbloquear esa opción (normalmente es la del usuario con el que hayamos iniciado sesión en el equipo). La imagen que pongo a continuación es del navegador Chrome pero es similar en el resto de navegadores.

Pero esta seguridad es una quimera porque como muestro a continuación es sencillo que una tercera persona que utilice o acceda al pc obtenga no solo el acceso a la web sino también nuestra contraseña. En los pasos que pongo a continuación he elegido la página de acceso a gmail para explicarlo. Parto de la premisa de que he guardado la contraseña para una cuenta de gmail y por tanto cuando entro el navegador me completa el usuario y contraseña o al poner el usuario me completa la contraseña (esto depende del navegador y de como la haya guardado):

Una vez que estamos en esta situación, vamos a hacer que el navegador en vez de círculos nos muestre los caracteres en texto de la contraseña. Para ello pinchamos con el botón derecho en el cuadro donde aparece nuestra contraseña oculta y realizamos click en Inspeccionar elemento:

Tras esto nos aparecerá el código html de la página y tendremos la línea concreta que afecta cuadro que alberga nuestra contraseña. Para que muestre el texto de la contraseña solo tendremos que cambiar el valor de la variable type de password (type="password") a text (type="text") tal y como muestro en las 2 capturas siguientes:





Como hemos comprobado es muy sencillo descubrir una contraseña que tengamos guardada en el navegador. Mi recomendación es que nunca guardemos las contraseñas aquí, lo más adecuado es usar algún programa como por ejemplo keepass donde se almacenan de una manera segura y gracias a la cantidad de plugins que tiene podremos iniciar sesión en una web de una manera rápida, cómoda y segura.

lunes, 4 de abril de 2016

Instalar VMware Tools en una máquina virtual Linux-Red Hat

Cuando creamos una máquina virtual linux en VMware, la instalación de las VMware Tools no es tan directa como en Windows dado que es habitual tener los servidores linux en un INIT 3 y por tanto la instalación la tendremos que realizar desde la línea de comandos. En los pasos que pongo a continuación, la máquina virtual donde vamos a instalar las VMware Tools tiene un sistema operativo Red Hat y está alojada en un ESXI registrado en un vCenter.

1- Verificamos que no tenemos instaladas las VMware Tools con el siguiente comando:
[root@localhost ~]#  grep buildNr /usr/bin/vmware-config-tools.pl

Si la salida del comando es grep: /usr/bin/vmware-config-tools.pl: No existe el fichero o el directorio es que no las tenemos instaladas. En caso de tenerlas instaladas nos aparecerá una salida similar a esta:

[root@localhost ~]# grep buildNr /usr/bin/vmware-config-tools.pl
  my $buildNr;
  $buildNr = '9.4.10 build-2068191';
  return remove_whitespaces($buildNr);

2- Publicamos en el directorio /dev/cdrom de la máquina virtual las VMware Tools para poder instalarlas. Esto lo podemos realizar conectándonos al vCenter bien con el cliente ligero o bien con el cliente pesado (pongo las capturas de pantalla de cada uno de ellos para que se vean las rutas).:
  • Conectándonos al vCenter que gestiona los ESXI mediante el vSphere Web Client (cliente ligero), pinchando con el botón secundario en VM->Guest->Install/Upgrade VMware Tools en la máquina virtual donde queramos instalarlo.
  • Conectándonos al vCenter que gestiona los ESXI mediante el cliente pesado, pinchando con el botón secundario en VM->Guest->Install/Upgrade VMware Tools en la máquina virtual donde queramos instalarlo.

Al hacer click sobre el botón "Install/Upgrade VMware Tools" o sobre "Install VMware Tools" nos parecerá el siguiente mensaje y tendremos que pinchas en Mount:



3- Nos logamos en la máquina virtual donde hemos publicado las VMware Tools y generamos el directorio /mnt/cdrom donde posteriormente montaremos /dev/cdrom:
root@10.0.10.188's password:
Last login: Sun Apr  3 21:35:26 2016 from rencinar
[root@localhost ~]# mkdir /mnt/cdrom


4- Montamos /dev/cdrom en el directorio /mnt/cdrom/ que hemos creado en el paso anterior:
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: dispositivo de bloques /dev/cdrom está protegido contra escritura; se monta como sólo lectura
 


5- Comprobamos que el montaje se ha realizado correctamente y que tenemos un archivo similar a VMwareTools-9.4.tar.gz, que es el que utilizaremos para instalarlas.
[root@localhost ~]# ls /mnt/cdrom/
manifest.txt                       run_upgrader.sh                    VMwareTools-9.4.10-2068191.tar.gz  vmware-tools-upgrader-32           vmware-tools-upgrader-64                        
 


6- Copiamos el archivo VMwareTools-9.4.10-2068191.tar.gz al directorio /tmp/ para extraer su contenido. Tras realizar la extracción se nos generará un conjunto de directorios y dentro del directorio vmware-tools-distrib se encuentra el archivo vmware-install.pl que es el que ejecutaremos para empezar con la instalación:
[root@localhost ~]# cp /mnt/cdrom/VMwareTools-9.4.10-2068191.tar.gz /tmp/                                                                                                                                                       
[root@localhost ~]# cd /tmp/

[root@localhost tmp]# tar xvzf VMwareTools-9.4.tar.gz
[root@localhost tmp]# cd vmware-tools-distrib/
[root@localhost vmware-tools-distrib]# ./vmware-install.pl

Creating a new VMware Tools installer database using the tar4 format.
Installing VMware Tools.
In which directory do you want to install the binary files?
[/usr/bin]
What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc/rc.d]
What is the directory that contains the init scripts?
[/etc/rc.d/init.d]
In which directory do you want to install the daemon files?
[/usr/sbin]
In which directory do you want to install the library files?
[/usr/lib/vmware-tools]
The path "/usr/lib/vmware-tools" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
In which directory do you want to install the documentation files?
[/usr/share/doc/vmware-tools]
The path "/usr/share/doc/vmware-tools" does not exist currently. This program
is going to create it, including needed parent directories. Is this what you
want? [yes]
The installation of VMware Tools 9.4.10 build-2068191 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall-tools.pl".
Before running VMware Tools for the first time, you need to configure it by
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want
this program to invoke the command for you now? [yes]
Initializing...
Making sure services for VMware Tools are stopped.
Stopping VMware Tools services in the virtual machine:
   Guest operating system daemon:                          [  OK  ]
   Unmounting HGFS shares:                                 [  OK  ]
   Guest filesystem driver:                                [  OK  ]
The VMware FileSystem Sync Driver (vmsync) allows external third-party backup
software that is integrated with vSphere to create backups of the virtual
machine. Do you wish to enable this feature? [no]
Found a compatible pre-built module for vmci.  Installing it...
Found a compatible pre-built module for vsock.  Installing it...
Found a compatible pre-built module for vmxnet3.  Installing it...
Found a compatible pre-built module for pvscsi.  Installing it...
Found a compatible pre-built module for vmmemctl.  Installing it...
The VMware Host-Guest Filesystem allows for shared folders between the host OS
and the guest OS in a Fusion or Workstation virtual environment.  Do you wish
to enable this feature? [no]
Found a compatible pre-built module for vmxnet.  Installing it...
The vmblock enables dragging or copying files between host and guest in a
Fusion or Workstation virtual environment.  Do you wish to enable this feature?
[no]
VMware automatic kernel modules enables automatic building and installation of
VMware kernel modules at boot that are not already present. This feature can be
enabled/disabled by re-running vmware-config-tools.pl.
Would you like to enable VMware automatic kernel modules?
[no]
Detected X version 7.1
Unable to detect guest resolution.
Please choose one of the following display sizes that X will start with:
[1]< 640x480
[2]  800x600
[3]  1024x768
[4]  1280x800
Please enter a number between 1 and 4:
[1] 2
X is running fine with the new config file.
Creating a new initrd boot image for the kernel.
   Checking acpi hot plug                                  [  OK  ]
Starting VMware Tools services in the virtual machine:
   Switching to guest configuration:                       [  OK  ]
   Paravirtual SCSI module:                                [  OK  ]
   Guest memory manager:                                   [  OK  ]
   VM communication interface:                             [  OK  ]
   VM communication interface socket family:               [  OK  ]
   Guest operating system daemon:                          [  OK  ]
The configuration of VMware Tools 9.4.10 build-2068191 for Linux for this
running kernel completed successfully.
You must restart your X session before any mouse or graphics changes take
effect.
You can now run VMware Tools by invoking "/usr/bin/vmware-toolbox-cmd" from the
command line.
To enable advanced X features (e.g., guest resolution fit, drag and drop, and
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session; and,
3. Restart your X session.
Enjoy,
--the VMware team
Found VMware Tools CDROM mounted at /mnt/cdrom. Ejecting device /dev/cdrom ...
You have new mail in /var/spool/mail/root


Tras esto tendremos instaladas las VMware Tools. Podremos comprobarlo lanzando el comando propuesto al principio y veremos que la salida ya no será "grep: /usr/bin/vmware-config-tools.pl: No existe el fichero o el directorio" sino algo parecido a esta:

[root@localhost ~]# grep buildNr /usr/bin/vmware-config-tools.pl
  my $buildNr;
  $buildNr = '9.4.10 build-2068191';
  return remove_whitespaces($buildNr);

viernes, 4 de marzo de 2016

Pgpass-Script psql no interactivo sin pedir password o con password automática

Cuando creamos un script para ejecutar tareas automáticas en PostgreSQL con psql uno de los problemas que nos podemos encontrar es que, para ejecutar una sentencia, por defecto PostgreSQL nos pedirá una contraseña y por tanto el proceso fallará. Para solucionar esto y que el script no pida la contraseña solo es necesario incluir en el home del usuario que lo lanza un fichero .pgpass con la siguiente estructura:

              hostname:port:database:username:password

Por ejemplo si el script se va a ejecutar en el mismo servidor donde está alojada la base de datos (localhost), el puerto es el 5432, el nombre de la base de datos es lapsusmentis, el usuario es metempsicosis y la contraseña es roro lo que tendríamos que incluir en el fichero sería:

              localhost:5432:lapsusmentis:metempsicosis:roro

Para generar el fichero de una manera rápida y cómoda podemos lanzar el siguiente comando que generará el archivo .pgpass en el home del root:

[root@lapsus ~]# echo  localhost:5432:lapsusmentis:metempsicosis:roro >> /root/.pgpass

Como notas adicionales tenemos que tener en cuenta que para usuarios distintos al root el directorio de home del usuario es/home/nombre_del_usuario y que los permisos que ha de tener el fichero .pgpass han de ser de de lectura y escritura solo para el propietario (en caso de tener permisos superiores no funcionará por seguridad). Si queremos cambiar estos permisos para garantizar que son correctos podemos lanzar el comando:

[root@lapsus ~]# chmod 0600 /root/.pgpass

viernes, 12 de febrero de 2016

For loop - Script para llenar tablas en PostgreSql

Si tenemos la necesidad de llenar una base de datos PostgreSql por ejemplo para realizar pruebas de estrés, podemos utilizar una función que utilice un for loop como el que os dejo a continuación. Solo tendréis que modificar la parte de el número de repeticiones (1255255) y de los insert (person,direccion) en función del volumen de datos que necesitéis y las tablas que queráis llenar.

Ejemplo de script:

CREATE OR REPLACE FUNCTION cargar_bd()
RETURNS void AS
$BODY$BEGIN
for i in 1..1255255 loop
insert into person (nombre) values ('nombre');
insert into direccion (calle) values ('Avd. Lapsusmentis nº 3');
end loop;
END
$BODY$
LANGUAGE 'plpgsql';

Para ejecutarlo bastará con lanzarlo con la siguiente consulta y se repetirá 1255255 :

SELECT  cargar_bd();

lunes, 8 de febrero de 2016

Comandos importantes en WPScan

Actualización de las bases de datos

root@PC:/home/rencinar/software/wpscan/wpscan# ruby wpscan.rb --update
_______________________________________________________________
        __          _______   _____                 
        \ \        / /  __ \ / ____|                
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ 
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.


Escaneo genérico de vulnerabilidades

Con el siguiente comando podemos sacar un listado genérico de las vulnerabilidades que tiene el WordPress que estamos auditando. En cada apartado nos indican las url donde podemos consultar en que consisten estas vulnerabilidades, como solucionarlas y como explotarlas.
root@PC:/home/rencinar/software/wpscan/wpscan# ruby wpscan.rb --url http://XXXXXXXX.com
_______________________________________________________________
        __          _______   _____                 
        \ \        / /  __ \ / ____|                
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ 
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://XXXXXXX/
[+] Started: Fri Jan 15 16:00:47 2016

[!] The WordPress 'http://XXXXXXX/readme.html' file exists exposing a version number
[+] Interesting header: SERVER: Apache
[+] XML-RPC Interface available under: http://XXXXXXXXX/xmlrpc.php

[+] WordPress version 3.9.1 identified from meta generator
[!] 20 vulnerabilities identified from the version number

[!] Title:  WordPress 3.9 & 3.9.1 Unlikely Code Execution
    Reference: https://wpvulndb.com/vulnerabilities/7527
    Reference: https://core.trac.wordpress.org/changeset/29389
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5203
[i] Fixed in: 3.9.2

[!] Title: WordPress 2.0.3 - 3.9.1 (except 3.7.4 / 3.8.4) CSRF Token Brute Forcing
    Reference: https://wpvulndb.com/vulnerabilities/7528
    Reference: https://core.trac.wordpress.org/changeset/29384
    Reference: https://core.trac.wordpress.org/changeset/29408
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5204
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5205
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.0 - 3.9.1 Authenticated Cross-Site Scripting (XSS) in Multisite
    Reference: https://wpvulndb.com/vulnerabilities/7529
    Reference: https://core.trac.wordpress.org/changeset/29398
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5240
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.6 - 3.9.1 XXE in GetID3 Library
    Reference: https://wpvulndb.com/vulnerabilities/7530
    Reference: https://github.com/JamesHeinrich/getID3/commit/dc8549079a24bb0619b6124ef2df767704f8d0bc
    Reference: http://getid3.sourceforge.net/
    Reference: http://wordpress.org/news/2014/08/wordpress-3-9-2/
    Reference: http://lab.onsec.ru/2014/09/wordpress-392-xxe-through-media-upload.html
    Reference: https://github.com/ONsec-Lab/scripts/blob/master/getid3-xxe.wav
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-2053
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.4.2 - 3.9.2 Does Not Invalidate Sessions Upon Logout
    Reference: https://wpvulndb.com/vulnerabilities/7531
    Reference: http://whiteoaksecurity.com/blog/2012/12/17/cve-2012-5868-wordpress-342-sessions-not-terminated-upon-explicit-user-logout
    Reference: http://blog.spiderlabs.com/2014/09/leveraging-lfi-to-get-full-compromise-on-wordpress-sites.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-5868
[i] Fixed in: 4.0

[!] Title: WordPress 3.0-3.9.2 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/7680
    Reference: http://klikki.fi/adv/wordpress.html
    Reference: https://wordpress.org/news/2014/11/wordpress-4-0-1/
    Reference: http://klikki.fi/adv/wordpress_update.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9031
[i] Fixed in: 4.0

[!] Title: WordPress <= 4.0 - Long Password Denial of Service (DoS)
    Reference: https://wpvulndb.com/vulnerabilities/7681
    Reference: http://www.behindthefirewalls.com/2014/11/wordpress-denial-of-service-responsible-disclosure.html
    Reference: https://wordpress.org/news/2014/11/wordpress-4-0-1/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9034
    Reference: http://osvdb.org/show/osvdb/114857
    Reference: https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_long_password_dos
    Reference: https://www.exploit-db.com/exploits/35413/
    Reference: https://www.exploit-db.com/exploits/35414/
[i] Fixed in: 4.0.1

[!] Title: WordPress <= 4.0 - Server Side Request Forgery (SSRF)
    Reference: https://wpvulndb.com/vulnerabilities/7696
    Reference: http://www.securityfocus.com/bid/71234/
    Reference: https://core.trac.wordpress.org/changeset/30444
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9038
[i] Fixed in: 4.0.1

[!] Title: WordPress 3.9, 3.9.1, 3.9.2, 4.0 - XSS in Media Playlists
    Reference: https://wpvulndb.com/vulnerabilities/7697
    Reference: https://core.trac.wordpress.org/changeset/30422
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9032
[i] Fixed in: 4.0.1

[!] Title: WordPress <= 4.1.1 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/7929
    Reference: https://wordpress.org/news/2015/04/wordpress-4-1-2/
    Reference: https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3438
[i] Fixed in: 4.1.2

[!] Title: WordPress <= 4.2.2 - Authenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8111
    Reference: https://wordpress.org/news/2015/07/wordpress-4-2-3/
    Reference: https://twitter.com/klikkioy/status/624264122570526720
    Reference: https://klikki.fi/adv/wordpress3.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5622
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5623
[i] Fixed in: 3.9.7

[!] Title: WordPress <= 4.2.3 - wp_untrash_post_comments SQL Injection
    Reference: https://wpvulndb.com/vulnerabilities/8126
    Reference: https://github.com/WordPress/WordPress/commit/70128fe7605cb963a46815cf91b0a5934f70eff5
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2213
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Timing Side Channel Attack
    Reference: https://wpvulndb.com/vulnerabilities/8130
    Reference: https://core.trac.wordpress.org/changeset/33536
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5730
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Widgets Title Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8131
    Reference: https://core.trac.wordpress.org/changeset/33529
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5732
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Nav Menu Title Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8132
    Reference: https://core.trac.wordpress.org/changeset/33541
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5733
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Legacy Theme Preview Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8133
    Reference: https://core.trac.wordpress.org/changeset/33549
    Reference: https://blog.sucuri.net/2015/08/persistent-xss-vulnerability-in-wordpress-explained.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5734
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.3 - Authenticated Shortcode Tags Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8186
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: http://blog.checkpoint.com/2015/09/15/finding-vulnerabilities-in-core-wordpress-a-bug-hunters-trilogy-part-iii-ultimatum/
    Reference: http://blog.knownsec.com/2015/09/wordpress-vulnerability-analysis-cve-2015-5714-cve-2015-5715/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5714
[i] Fixed in: 3.9.9

[!] Title: WordPress <= 4.3 - User List Table Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8187
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: https://github.com/WordPress/WordPress/commit/f91a5fd10ea7245e5b41e288624819a37adf290a
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7989
[i] Fixed in: 3.9.9

[!] Title: WordPress <= 4.3 - Publish Post and Mark as Sticky Permission Issue
    Reference: https://wpvulndb.com/vulnerabilities/8188
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: http://blog.checkpoint.com/2015/09/15/finding-vulnerabilities-in-core-wordpress-a-bug-hunters-trilogy-part-iii-ultimatum/
    Reference: http://blog.knownsec.com/2015/09/wordpress-vulnerability-analysis-cve-2015-5714-cve-2015-5715/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5715
[i] Fixed in: 3.9.9

[!] Title: WordPress  3.7-4.4 - Authenticated Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8358
    Reference: https://wordpress.org/news/2016/01/wordpress-4-4-1-security-and-maintenance-release/
    Reference: https://github.com/WordPress/WordPress/commit/7ab65139c6838910426567849c7abed723932b87
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1564
[i] Fixed in: 3.9.10

[+] WordPress theme in use: XXXXX - v1.2.0

[+] Name: XXXXXX - v1.2.0
 |  Location: http://XXXXXXXXX/wp-content/themes/XXXXX/
 |  Readme: http://XXXXXXX/wp-content/themes/XXXX/readme.txt
 |  Style URL: http://XXXXXXXX/wp-content/themes/XXXXX/style.css
 |  Referenced style.css: http://blog.XXXXXX.com/wp-content/themes/XXXXX/style.css
 |  Theme Name: XXXXXX
 |  Theme URI: http://XXXXXXXXXXX
 |  Description: XXXXX Clean, Responsive and Modern Theme for Personal Blogging
 |  Author: XXXXXX
 |  Author URI: http://XXXXXX.com

[+] Enumerating plugins from passive detection ...
[+] No plugins found

[+] Finished: Fri Jan 15 16:00:48 2016
[+] Requests Done: 36
[+] Memory used: 3.219 MB
[+] Elapsed time: 00:00:01




Escaneo en profundidad de vulnerabilidades

Con la opción --enumerate WPScan realizará un escaneo profundo de las vulnerabilidades de WordPress donde entre otros datos podremos obtener los usuarios dados de alta en él. El obtener estos usuarios nos permitirá por ejemplo realizar una auditoría de las contraseñas mediante un ataque por diccionario por esto con la información obtenida con --enumerate podremos tener información adicional para completar una auditoría de seguridad exhaustiva de WordPress.

root@PC:/home/rencinar/software/wpscan/wpscan# ruby wpscan.rb --url http://XXXXX --enumerate
_______________________________________________________________
        __          _______   _____                 
        \ \        / /  __ \ / ____|                
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ 
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://XXXXXXXX/
[+] Started: Fri Jan 15 16:01:34 2016

[!] The WordPress 'http://XXXXXX/readme.html' file exists exposing a version number
[+] Interesting header: SERVER: Apache
[+] XML-RPC Interface available under: http://XXXXXXX/xmlrpc.php

[+] WordPress version 3.9.1 identified from meta generator
[!] 20 vulnerabilities identified from the version number

[!] Title:  WordPress 3.9 & 3.9.1 Unlikely Code Execution
    Reference: https://wpvulndb.com/vulnerabilities/7527
    Reference: https://core.trac.wordpress.org/changeset/29389
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5203
[i] Fixed in: 3.9.2

[!] Title: WordPress 2.0.3 - 3.9.1 (except 3.7.4 / 3.8.4) CSRF Token Brute Forcing
    Reference: https://wpvulndb.com/vulnerabilities/7528
    Reference: https://core.trac.wordpress.org/changeset/29384
    Reference: https://core.trac.wordpress.org/changeset/29408
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5204
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5205
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.0 - 3.9.1 Authenticated Cross-Site Scripting (XSS) in Multisite
    Reference: https://wpvulndb.com/vulnerabilities/7529
    Reference: https://core.trac.wordpress.org/changeset/29398
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5240
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.6 - 3.9.1 XXE in GetID3 Library
    Reference: https://wpvulndb.com/vulnerabilities/7530
    Reference: https://github.com/JamesHeinrich/getID3/commit/dc8549079a24bb0619b6124ef2df767704f8d0bc
    Reference: http://getid3.sourceforge.net/
    Reference: http://wordpress.org/news/2014/08/wordpress-3-9-2/
    Reference: http://lab.onsec.ru/2014/09/wordpress-392-xxe-through-media-upload.html
    Reference: https://github.com/ONsec-Lab/scripts/blob/master/getid3-xxe.wav
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-2053
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.4.2 - 3.9.2 Does Not Invalidate Sessions Upon Logout
    Reference: https://wpvulndb.com/vulnerabilities/7531
    Reference: http://whiteoaksecurity.com/blog/2012/12/17/cve-2012-5868-wordpress-342-sessions-not-terminated-upon-explicit-user-logout
    Reference: http://blog.spiderlabs.com/2014/09/leveraging-lfi-to-get-full-compromise-on-wordpress-sites.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-5868
[i] Fixed in: 4.0

[!] Title: WordPress 3.0-3.9.2 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/7680
    Reference: http://klikki.fi/adv/wordpress.html
    Reference: https://wordpress.org/news/2014/11/wordpress-4-0-1/
    Reference: http://klikki.fi/adv/wordpress_update.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9031
[i] Fixed in: 4.0

[!] Title: WordPress <= 4.0 - Long Password Denial of Service (DoS)
    Reference: https://wpvulndb.com/vulnerabilities/7681
    Reference: http://www.behindthefirewalls.com/2014/11/wordpress-denial-of-service-responsible-disclosure.html
    Reference: https://wordpress.org/news/2014/11/wordpress-4-0-1/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9034
    Reference: http://osvdb.org/show/osvdb/114857
    Reference: https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_long_password_dos
    Reference: https://www.exploit-db.com/exploits/35413/
    Reference: https://www.exploit-db.com/exploits/35414/
[i] Fixed in: 4.0.1

[!] Title: WordPress <= 4.0 - Server Side Request Forgery (SSRF)
    Reference: https://wpvulndb.com/vulnerabilities/7696
    Reference: http://www.securityfocus.com/bid/71234/
    Reference: https://core.trac.wordpress.org/changeset/30444
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9038
[i] Fixed in: 4.0.1

[!] Title: WordPress 3.9, 3.9.1, 3.9.2, 4.0 - XSS in Media Playlists
    Reference: https://wpvulndb.com/vulnerabilities/7697
    Reference: https://core.trac.wordpress.org/changeset/30422
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9032
[i] Fixed in: 4.0.1

[!] Title: WordPress <= 4.1.1 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/7929
    Reference: https://wordpress.org/news/2015/04/wordpress-4-1-2/
    Reference: https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3438
[i] Fixed in: 4.1.2

[!] Title: WordPress <= 4.2.2 - Authenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8111
    Reference: https://wordpress.org/news/2015/07/wordpress-4-2-3/
    Reference: https://twitter.com/klikkioy/status/624264122570526720
    Reference: https://klikki.fi/adv/wordpress3.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5622
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5623
[i] Fixed in: 3.9.7

[!] Title: WordPress <= 4.2.3 - wp_untrash_post_comments SQL Injection
    Reference: https://wpvulndb.com/vulnerabilities/8126
    Reference: https://github.com/WordPress/WordPress/commit/70128fe7605cb963a46815cf91b0a5934f70eff5
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2213
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Timing Side Channel Attack
    Reference: https://wpvulndb.com/vulnerabilities/8130
    Reference: https://core.trac.wordpress.org/changeset/33536
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5730
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Widgets Title Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8131
    Reference: https://core.trac.wordpress.org/changeset/33529
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5732
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Nav Menu Title Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8132
    Reference: https://core.trac.wordpress.org/changeset/33541
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5733
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.2.3 - Legacy Theme Preview Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8133
    Reference: https://core.trac.wordpress.org/changeset/33549
    Reference: https://blog.sucuri.net/2015/08/persistent-xss-vulnerability-in-wordpress-explained.html
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5734
[i] Fixed in: 3.9.8

[!] Title: WordPress <= 4.3 - Authenticated Shortcode Tags Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8186
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: http://blog.checkpoint.com/2015/09/15/finding-vulnerabilities-in-core-wordpress-a-bug-hunters-trilogy-part-iii-ultimatum/
    Reference: http://blog.knownsec.com/2015/09/wordpress-vulnerability-analysis-cve-2015-5714-cve-2015-5715/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5714
[i] Fixed in: 3.9.9

[!] Title: WordPress <= 4.3 - User List Table Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8187
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: https://github.com/WordPress/WordPress/commit/f91a5fd10ea7245e5b41e288624819a37adf290a
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7989
[i] Fixed in: 3.9.9

[!] Title: WordPress <= 4.3 - Publish Post and Mark as Sticky Permission Issue
    Reference: https://wpvulndb.com/vulnerabilities/8188
    Reference: https://wordpress.org/news/2015/09/wordpress-4-3-1/
    Reference: http://blog.checkpoint.com/2015/09/15/finding-vulnerabilities-in-core-wordpress-a-bug-hunters-trilogy-part-iii-ultimatum/
    Reference: http://blog.knownsec.com/2015/09/wordpress-vulnerability-analysis-cve-2015-5714-cve-2015-5715/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5715
[i] Fixed in: 3.9.9

[!] Title: WordPress  3.7-4.4 - Authenticated Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8358
    Reference: https://wordpress.org/news/2016/01/wordpress-4-4-1-security-and-maintenance-release/
    Reference: https://github.com/WordPress/WordPress/commit/7ab65139c6838910426567849c7abed723932b87
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1564
[i] Fixed in: 3.9.10

[+] WordPress theme in use: XXXX - v1.2.0

[+] Name: XXXXX - v1.2.0
 |  Location: http://XXXXXX/wp-content/themes/XXXXXX/
 |  Readme: http://XXXXXX/wp-content/themes/XXXXXX/readme.txt
 |  Style URL: http://XXXXXX/wp-content/themes/XXXXXX/style.css
 |  Referenced style.css: http://blog.XXXXXX.com/wp-content/themes/XXXXXX/style.css
 |  Theme Name: XXXXXX
 |  Theme URI: http://XXXXXX
 |  Description: XXXXXX Clean, Responsive and Modern Theme for Personal Blogging
 |  Author: XXXXXX
 |  Author URI: http://XXXXXX.com

[+] Enumerating installed plugins (only ones with known vulnerabilities) ...

   Time: 00:00:02 <========================================================================================================================================================================> (1258 / 1258) 100.00% Time: 00:00:02

[+] We found 1 plugins:

[+] Name: akismet - v3.0.0
 |  Location: http://XXXXXX/wp-content/plugins/akismet/
 |  Readme: http://XXXXXX/wp-content/plugins/akismet/readme.txt
[!] The version is out of date, the latest version is 3.1.7

[!] Title: Akismet 2.5.0-3.1.4 - Unauthenticated Stored Cross-Site Scripting (XSS)
    Reference: https://wpvulndb.com/vulnerabilities/8215
    Reference: http://blog.akismet.com/2015/10/13/akismet-3-1-5-wordpress/
    Reference: https://blog.sucuri.net/2015/10/security-advisory-stored-xss-in-akismet-wordpress-plugin.html
[i] Fixed in: 3.1.5

[+] Enumerating installed themes (only ones with known vulnerabilities) ...

   Time: 00:00:00 <==========================================================================================================================================================================> (368 / 368) 100.00% Time: 00:00:00

[+] No themes found

[+] Enumerating timthumb files ...

   Time: 00:00:04 <========================================================================================================================================================================> (2539 / 2539) 100.00% Time: 00:00:04

[+] No timthumb files found

[+] Enumerating usernames ...
[+] Identified the following 3 user/s:
    +----+----------+----------+
    | Id | Login    | Name     |
    +----+----------+----------+
    | 1  | caXXX    | caXX    |
    | 2  | caXXXa | caXXXa |
    | 3  | admin    | admin    |
    +----+----------+----------+

[+] Finished: Fri Jan 15 16:01:49 2016
[+] Requests Done: 4218
[+] Memory used: 38.895 MB
[+] Elapsed time: 00:00:14 




Ataque de login por fuerza bruta en WordPress

Como hemos podido comprobar en los pasos anteriores nos enfrentamos a un WordPress sin ninguna restricción adicional de acceso en la parte de administración tales como chaptra o bloqueo con .htpasswd. Esto nos permite sin ninguna complicación ni paso adicional realizar una auditoría de usuario/password para ver su fortaleza pero ademas tenemos a nuestro favor que ya conocemos usuarios dados de alta en él gracias a la información desprendida por el comando anterior. Asumiendo que he generado un diccionario con Crunch tal y como explico en este post y que está en /home/rencinar/pass.txt para auditar la fortaleza del usuario admin el comando sería:
root@PC:/home/rencinar/software/wpscan/wpscan# ruby wpscan.rb --url http://XXXXXX --wordlist /home/rencinar/pass.txt --username admin

sábado, 6 de febrero de 2016

Inittab cambiando el runlevel en linux

El runlevel o nivel de ejecución determina los recursos de los que va a disponer el sistema operativo tras el arranque de una máquina linux/unix. Por ejemplo, si arrancamos en un nivel de ejecución sin entorno de X11 el sistema no podrá disponer de los recursos para la ejecución de gráficos 3D. Cabe decir además que, aunque los niveles de ejecución pueden variar en función de la distribución que estemos utilizando, en general las definiciones se mantienen en todos los linux y son:
  • 0 – halt: Es el nivel de ejecución de apagado.
  • 1 - Single user mode: Es el nivel de ejecución que usamos para acceder al sistema cuando hay problemas pues solo está disponible el usuario root y no levanta ningún demonio del sistema ni la red.
  • 2 - Multiuser, without NFS: Es el nivel de ejecución multiusuario sin red.
  • 3 - Full multiuser mode: Es el nivel de ejecución que se suele usar por defecto en servidores pues tiene cargados todos los recursos del sistema sin restarle recursos de interfaz gráfica dado que esta no estará disponible.
  • 4 – unused: Actualmente en desuso.
  • 5 – X11: Es el nivel de ejecución con todo el sistema funcional al 100% incluyendo la interfaz gráfica.
  • 6 – reboot: Es el nivel de ejecución de reinicio.
En el fichero /etc/inittab es donde le indicamos al sistema en que nivel de ejecución vamos a arrancar, y se realiza de la siguiente manera:
                                 id:<nivel de ejecución>:initdefault:

De esta manera un ejemplo del contenido del fichero /etc/inittab donde el nivel de ejecución fuese el 3 sería:

[root@metempsicosis ~]# cat /etc/inittab
id:3:initdefault:

Cada vez que modifiquemos el nivel de ejecución deberemos reiniciar el sistema para que el cambio tenga efecto.

Comandos para conocer el nivel de ejecución en linux

 

who -r -> Nos indica el nivel de ejecución que tiene el sistema operativo en ese momento. Un ejemplo de la salida del comando es:

[root@metempsicosis ~]$ who -r
         `run-level' 3 2015-12-01 15:15                   último=S

runlevel -> Al igual que el comando anterior, nos indica el nivel de ejecución que tiene el sistema operativo en ese momento.

sábado, 16 de enero de 2016

Seguridad en WordPress con WPScan

WordPress posiblemente sea el CMS más popular para generar blogs y uno de los factores que más nos preocupan cuando tenemos un blog es que este sea seguro. Hay muchos post que indican lo que hay que hacer para realizar una instalación segura de WordPress pero no he encontrado muchos que permita comprobar en cinco minutos indicios de que una instalación ha sido realizada de una manera descuidada y por lo tanto que el blog esté parcial o totalmente al descubierto.
En primer lugar vamos a contextualizar si la instalación se realizó atendiendo a las recomendaciones mínimas de seguridad mediante las siguientes comprobaciones:
1.- Intentamos acceder al archivo http://nombre_del_blog/readme.html, que de encontrarse nos indicará un descuido grave ya que en él podremos obtener información valiosa como la versión de php y base de datos, versión de WordPress,...etc y por ende conocer y explotar las vulnerabilidades de esas versiones.


2.- Intentamos acceder a http://nombre_del_blog/wp-login.php que de ser visible por cualquiera indicará que el blog es susceptible a ataques por fuera bruta y que el administrador en ningún caso se ha preocupado de securizar lo más mínimo el blog. Este php es recomendable que esté en otra localización y proteger su acceso mediante contraseña con .htpasswd por ejemplo, además deberemos incluirle un chaptra en la pantalla de login.


3.- Intentamos acceder a http://nombre_del_blog/wp-admin/install.php que de estar nos confirmará que nos enfrentamos a un blog instalado o administrado por alguien que no ha tenido en cuenta ninguna de las recomendaciones de seguridad básicas y por tanto estará muy descubierto.


Como hemos podido ver, con unas comprobaciones rápidas podemos ver si vamos a auditar un blog altamente complicado de penetrar o por el contrario nos encontramos con un blog absolutamente vulnerable. Esta información nos hace suponer además que la complejidad de las contraseñas va a ser baja y que tendrá una gran cantidad de paquetes desactualizados que nos permitirá explotar alguna brecha de seguridad de ellos. A partir de este punto y viendo lo frágil que es el blog del ejemplo, vamos a utilizar WPScan para confirmar estas sospechas.

¿Que es WPScan?

WPScan es una herramienta que nos permite obtener un listado de vulnerabilidades de un blog además de otras muchas cosas como usuarios dados de alta en Wordpress,...etc. Hay muchos plugins que podemos instalar en Wordpress que permiten esto pero lo interesante de WPScan es que lo realizamos desde fuera del blog y de esta manera lo podemos usar para auditar cualquier blog y ver lo que podría ver un tercero malintencionado.

¿Como se instala?

WPScan es un proyecto dirigido por erwanlr y publicado en Github que podemos instalar como cualquier otro proyecto publicado en él.
1- Instalamos las dependencias que necesitaremos para ejecutarlo:
root@:/home/rencinar/software:~# apt-get install git libcurl4-gnutls-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev ruby  make
2- Generamos una carpeta que contenga WPScan cuando lo descarguemos:
root@PC:/home/rencinar/software# mkdir /home/rencinar/software/wpscan
3-Entramos en la carpeta que hemos creado:
root@PC:/home/rencinar/software# cd  /home/rencinar/software/wpscan
4- Descargamos el proyecto WPScan:
root@PC:/home/rencinar/software/wpscan# git clone https://github.com/wpscanteam/wpscan.git
5-  Instalamos el proyecto:
root@PC:/home/rencinar/software/wpscan/# gem install bundler && bundle install --without test development
6- Ejecutamos WPScan para ver que todo ha ido bien:
root@PC: /home/rencinar/software/wpscan#cd wpscan
root@PC:/home/rencinar/software/wpscan/wpscan# ruby wpscan.rb --help
_______________________________________________________________
        __          _______   _____                 
        \ \        / /  __ \ / ____|                
         \ \  /\  / /| |__) | (___   ___  __ _ _ __ 
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

Help :

Some values are settable in a config file, see the example.conf.json

--update                            Update the database to the latest version.
--url       | -u <target url>       The WordPress URL/domain to scan.
--force     | -f                    Forces WPScan to not check if the remote site is running WordPress.
--enumerate | -e [option(s)]        Enumeration.
  option :
    u        usernames from id 1 to 10
    u[10-20] usernames from id 10 to 20 (you must write [] chars)
    p        plugins
    vp       only vulnerable plugins
    ap       all plugins (can take a long time)
    tt       timthumbs
    t        themes
    vt       only vulnerable themes
    at       all themes (can take a long time)
  Multiple values are allowed : "-e tt,p" will enumerate timthumbs and plugins
  If no option is supplied, the default is "vt,tt,u,vp"

--exclude-content-based "<regexp or string>"
                                    Used with the enumeration option, will exclude all occurrences based on the regexp or string supplied.
                                    You do not need to provide the regexp delimiters, but you must write the quotes (simple or double).
--config-file  | -c <config file>   Use the specified config file, see the example.conf.json.
--user-agent   | -a <User-Agent>    Use the specified User-Agent.
--cookie <String>                   String to read cookies from.
--random-agent | -r                 Use a random User-Agent.
--follow-redirection                If the target url has a redirection, it will be followed without asking if you wanted to do so or not
--batch                             Never ask for user input, use the default behaviour.
--no-color                          Do not use colors in the output.
--wp-content-dir <wp content dir>   WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it.
                                    Subdirectories are allowed.
--wp-plugins-dir <wp plugins dir>   Same thing than --wp-content-dir but for the plugins directory.
                                    If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed
--proxy <[protocol://]host:port>    Supply a proxy. HTTP, SOCKS4 SOCKS4A and SOCKS5 are supported.
                                    If no protocol is given (format host:port), HTTP will be used.
--proxy-auth <username:password>    Supply the proxy login credentials.
--basic-auth <username:password>    Set the HTTP Basic authentication.
--wordlist | -w <wordlist>          Supply a wordlist for the password brute forcer.
--username | -U <username>          Only brute force the supplied username.
--usernames     <path-to-file>      Only brute force the usernames from the file.
--threads  | -t <number of threads> The number of threads to use when multi-threading requests.
--cache-ttl       <cache-ttl>       Typhoeus cache TTL.
--request-timeout <request-timeout> Request Timeout.
--connect-timeout <connect-timeout> Connect Timeout.
--max-threads     <max-threads>     Maximum Threads.
--throttle        <milliseconds>    Milliseconds to wait before doing another web request. If used, the --threads should be set to 1.
--help     | -h                     This help screen.
--verbose  | -v                     Verbose output.
--version                           Output the current version and exit.


Examples :

-Further help ...
ruby wpscan.rb --help

-Do 'non-intrusive' checks ...
ruby wpscan.rb --url www.example.com

-Do wordlist password brute force on enumerated users using 50 threads ...
ruby wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
ruby wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
ruby wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
ruby wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
ruby wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby wpscan.rb --url www.example.com --enumerate tt

-Use a HTTP proxy ...
ruby wpscan.rb --url www.example.com --proxy 127.0.0.1:8118

-Use a SOCKS5 proxy ... (cURL >= v7.21.7 needed)
ruby wpscan.rb --url www.example.com --proxy socks5://127.0.0.1:9000

-Use custom content directory ...
ruby wpscan.rb -u www.example.com --wp-content-dir custom-content

-Use custom plugins directory ...
ruby wpscan.rb -u www.example.com --wp-plugins-dir wp-content/custom-plugins

-Update the DB ...
ruby wpscan.rb --update

-Debug output ...
ruby wpscan.rb --url www.example.com --debug-output 2>debug.log

See README for further information.


Una vez que tenemos correctamente instalado WPScan podremos empezar con nuestra auditoría. Para ello podéis consultar el artículo comandos importantes con WPScan que es la segunda parte de este post.

domingo, 10 de enero de 2016

Consultar la clave de producto en Windows 10

Por ejemplo, si queremos reinstalar nuestro Windows 10 necesitaremos conocer la clave de instalación de Windows y si por cualquier motivo la hemos traspapelado tendremos que descubrirla en nuestra instalación. Hay varias formas de consultarla como por ejemplo instalando software de terceros tales como ProduKey de Nirsoft o Jalapeno Keyfinder pero desde mi punto de vista es innecesario ya que de una manera directa lo podemos consultar.
Lo primero que tenemos que hacer es ejecutar el comando regedit. Para ello tenemos 2 maneras de hacerlo con idénticos resultados:
  • Podemos acceder al apartado ejecutar mediante las teclas rápidas windows+r, escribir regedit y pinchar en aceptar.
  • Podemos escribir directamente regedit en el textbox de Cortana.


Una vez ejecutado el comando regedit nos aparecerá el editor del registro de Windows.

Para acceder al apartado donde se encuentra la clave de producto tendremos que ir a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform y lo encontraremos en el apartado BackupProductKeyDefault.




Como nota adicional, si hemos actualizado de Windows 7 a Windows 10, aunque consultemos la clave de producto y la utilicemos para una instalación limpia de Windows 10 no podremos activarlo dado que esta clave no se puede usar en otras instalaciones por tener el uso restringido al sistema actualizado.