sábado, 8 de octubre de 2011

Evitar RFI y LFI!

Bueno me he decidido hacer este tuto porque a veces me llegan mensajes de admins desesperados que no saben que hacer cuando se les presenta una vulnerabilidad tipo RFI o LFI en su página web, tranquilos, no es el fin del mundo (o si jaja :P).


RFI


Como evitar vulnerabilidad RFI...


Bueno lo primero sera dejar atras el anticuado include y pasarnos a swicht.
La sentencia switch es como muchos if's juntos cada uno se separa por un case (parecido a C)
En ejemplo:


<?php
switch ($i) {
    case 0:
        echo "i es igual a 0";
        break;
    case 1:
        echo "i es igual a 1";
        break;
    case 2:
        echo "i es igual a 2";
        break;
}
?>

Eso vendria a significar...

Si la variable i :                   swicht ($i) {
   Es igual a 0 :                         case 0:
   Imprimir i es igual a 0 :            echo 'I es igual a 0';
                                               
Y los demas asi es como funciona swicht ahora apliquemoslo a invulnerabilizar RFI.
Codigo en php:     (esto solo es una tecnica de las muchas que hay de
evitar RFI)

<?php
 switch($id) {
   default:
     include('index.php');
     break;  
   case "link":
     include('link.php');
     break;  
   case "otro-link.php":
     include('otro-link.php');
 }
?>
Expliquemos ese codigo...
Mas o menos pueden hacerse una idea de como funciona ese codigo en php
Si en el id (variable de donde se seleccionan las paginas en php) se selecciona 'link' incluir en esa variable link.php y asi con los demas, menos en default que le dice a php que si no existe ninguna opcion vaya a index.php




LFI


Como evitar vulnerabilidad LFI

Aqui como antes es utilizar swicht y es el mismo codigo que antes

<?php
switch($id) {
    default:
   include('index.php.php');
  break;  case "link":
   include('link.php');
  break;  case "otro-link.php":
   include('otro-link.php');
 }
?>

Señores,siglo XXI, dejemos atras el clasico:


<?php
$variable $_GET['variable'];
include($variable);
?>

Que solo traia owneds y demás cosas...


Un saludo y espero que les haya gustado!!

Aplicaciones blackberry....

¿Que son las APIs? y ¿Porque se deben firmar?
Lo primero que debemos saber es que Research In Motion (RIM) debe realizar un seguimiento del uso de algunos Interfaces de Programas de Aplicación (API´s, por sus siglas en Ingles) de BlackBerry ® en el entorno de desarrollo Java (JDE) para un control en materia de seguridad, esto quiere decir, que ellos velan hasta cierto punto de que la Aplicacion no se use para tomar informacion del usuario por ejemplo.

En la documentación de referencia de las API, se indican las APIs que requieren de firma mediante un candado o simplemente donde se indique su requerimiento.
Si utilizas estas APIs en las clases (Archivos .Java) o codigos de tus aplicaciones, estas deberán estar firmadas con una clave, o la firma, proporcionada por RIM antes de que puedas cargar la aplicación con el archivo .cod en el dispositivo. Cuando cargas una aplicacion sin firma al dispositivo este dara un error de ""
Aca les dejo algunos ejemplos de APIs que necesitan firma:


Nota: El registro y firma de las aplicaciones solo sera requerido cuando se necesita correr la aplicacion en el dispositivo. La firma no es necesaria para correr la aplicacion en el simulador.
Para poder firmar las aplicaciones necesitamos 20$ que pagaremos por Tarjeta de Crédito y rellenar el siguiente formulario que por cierto no lo pude abrir con el Firefox ya que me da un error (Se les pedirá un PIN que no deben olvidar ya que se usara para instalar las Keys, y ojo este no es el PIN de su Blackberry):

https://www.blackberry.com/SignedKeys/

Luego 4 días aproximadamente recibiremos la respuesta de RIM en tres correos, cada uno tendrá un adjunto (client-RCR-1560404037.csi; client-RRT-1560404037.csi y client-RBB-1560404037.csi) estos tenemos que descargarlos y ejecutarlos en la Computadora donde desarrollaremos la aplicación. Es importante saber que estas firmas son para uso de un (01) solo computador. En este proceso se les pedirá un Password (no olviden colocar el mismo password a los 3 Keys), este Password no es el mismo PIN que también tendrán que introducir en este proceso y para cada vez que firmemos una aplicación, así que tampoco lo pierdan.

Aqui les copio textualmente la guía que está en los tres correos que envía RIM:

The following attachment will allow the BlackBerry SignatureTool to register with the Signing Authority. Please ensure that the BlackBerry Java Development Environment or BlackBerry Java Development Environment Component Package has been installed onto the workstation that will be used to sign your BlackBerry Java applications.

To register the attachment, please follow the instructions below:

1)Double-click on the attachment.
2)If a dialog box appears that states that a private key cannot be found, complete steps 3 through 6 before you continue. Otherwise, proceed to step 7.
3)Click "Yes" to create a new key pair file.
4)Type a password for your private key, and type it again to confirm.
5)Click "Ok"
6)Move your mouse to generate date for a new private key.
7)In the "Registration PIN" field, type the PIN number that you supplied on the signature key request form.
8)In the Private Key password field, type a password of at least 8 characters. This is your private key password, which protects your private key. Please remember this password as you will be prompted for it each time signing is attempted.
9)Click "Register".
10)Click "Exit".

Note: All 3 keys (RBB, RCR, RRT) received should be installed on the same PC. The same password must be specified for all keys on the same PC.

¿Que programas se requieren para el desarrollo?
Por supuesto necesitamos principalmente el JDE, aunque tambien se pueden desarrollar con el IDE de su preferencia, por ejemplo existe un Plugin para JDE de Eclipse. Netbean, Visual C y otros.
Desde Aca pueden descargar el JDE en sus distintas versiones y otras herramientas para el Desarrollo en Java



Desde aqui:BlackBerry - Java Development Environment

El BlackBerry Java Development Environment incluye las siguientes herramientas para el desarrollo:
•BlackBerry® Integrated Development Environment (IDE)
•BlackBerry Smartphone Simulador
•Java ME APIs and BlackBerry APIs
•Aplicaciones de Ejemplo

El JDE a su vez exige tener algunas otra herramientas para su correcta Instalacion y uso. Entre ellas tenemos:

•Java® SE Development Kit version 1.6 o superior. Lo pueden descargar desde acá: Java SE Downloads - Sun Developer Network (SDN)

   Esta Imagen ha sido ajustada. Haz Click en esta barra para verla en su tamaño original. La Imagen original mide 592x130.


•Microsoft® DirectX® version 8.0 or posterior
•Microsoft® Windows Vista o Microsoft® Windows® XP Professional
•Intel®Pentium® procesador o compatible (800 MHz o superior)
•Minimo 400 MB de Ram disponible o mas
•Minimo 500 MB de espacio en el disco duro disponible

Esta es la pagina principal de Blackberry para los desarrolladores:
BlackBerry - BlackBerry Developer Zone

Aca los Manuales de JDE y otros (BlackBerry Java Development Environment). Estes es el IDE para el desarrollo de los codigos Java.


Desde aca: ]http://na.blackberry.com/eng/deliverables/3802/development.pdf

Ejemplo de Desarrollo de una Aplicación

Estes es un ejemplo sencillo de un codigo en Java para el Desarrollo de un Web Launcher sin Rollover Icon:
Primero que nada debemos conocer como se esctructura y organiza una aplicacion. Cada aplicacion o proyecto en JDE debería ubicarse en una carpeta distinta.
En anexo observaran la estructura de la cual hablamos, en la parte superior se encuentra el Workspace o espacio de trabajo que en nuestro ejemplo es ZonaBB.jdw luego debajo o dentro encontraremos el nombre del Proyecto “ZonaBlackberry” (acá no le vemos la extensión al archivo pero este será .jdp y se encuentra dentro de la carpeta “com”. (No es necesario tener el recurso dentro de esta carpeta solo es la forma en que cada quien se organice, esta no es la única manera de desarrollar una aplicación, dentro de la programación existen muchos caminos o códigos que pueden conducir a un mismo destino, lo que sí es importante tomar en cuenta es que mientras más sencillo y logre su cometido este será mucho más eficiente y eficaz. En este caso es solo que se me pego de la forma donde están guardados los ejemplos: C:\Archivos de programa\Research In Motion\BlackBerry JDE 4.6.0\samples\com\rim\samples (:D)
Acá también podemos observar que dentro de la carpeta “com” se hayan dos carpetas una “img” donde guardare la imagen del icono (ZonaBB2.png) y otra de nombre “ZonaBlackberry” donde estará la Clase o archivo .Java que en nuestro ejemplo es ZonaBlackberry.java
Las propiedades del proyecto las podemos ver haciendo click derecho sobre el Proyecto.

Las pestañas de izquierda a derecha son:

General: desde acá colocaremos el titulo a la aplicación, la versión, el propietario, y la descripción de la aplicación:
Application: desde acá podemos especificar qué tipo de proyecto será (CLDC Application, MIDlet o Library)
Resources: desde acá podemos agregar todas las imágenes o recursos que tendrá la aplicación, en nuestro ejemplo solo tendremos el icono de la Aplicación.

Una vez definidas las propiedades de nuestro proyecto procedemos con el desarrollo del código fuente o source code.

Antes de firmar la aplicación, la probaremos con el Simulador para descartar algún bug o fallo en el mismo, para ello nos vamos por Build>Build All and Run. (Dependiendo del JDE que hayan instalado este traerá un Simulador de un Dispositivo Blackberry, la versión 4.6.0 trae consigo el simulador del Bold, la 4.7 el simulador del Storm y así sucesivamente

Luego de probar que no haya errores procedemos a construir el proyecto para que se generen los archivos .cod, .jar y .jad. Para ello seleccionamos el proyecto ZonaBB.jdw y luego nos vamos por Build>Build All


En la parte inferior vamos a ver el log del proceso de construcción, en donde observaremos algo como lo que se anexaesto es lo que nos indica que las APIs que usamos en la clase requieren firma. “requires signing with keys”
Entonces procedemos a firmar la aplicación por Build>Request Signatures…

Presionamos el botón inferior izquierdo que dice Request (Esto requiere de una conexión a internet)

Introducimos la clave que configuramos y aceptamos (Esto requiere de una conexión a internet)

Luego veremos que ya los archivos .cod están firmados y aparecerán en verde
Ahora podemos generar el archivo .alx para la instalación vía Desktop Manager por Project>Generate ALX file.
Por último tenemos todos los archivos juntos en la carpeta “com” los podemos copiar para luego subirlos a un servidor para la descarga OTA o para la distribución de la forma que mejor les parezca. Sin olvidar que es necesario que para la instalación OTA o vía SD se requieren los Archivos .jad y .cod, para la Instalacion vía Desktop Manager se requieren de los archivos .alx y .cod

Videotutorial metasploit: Reverse shell, comando search,back y nmap

Os dejo este tuto un poco mas avanzado que el anterior pero igual de práctico!

http://www.megaupload.com/?d=G9DILK0Z

Esta subido a Megaupload ya que youtube me pone restricciones

Un saludo!!

Videotutorial metasploit: Comandos básicos



Os dejo este videotutorial hecho por mi sobre metasploit, esa gran herramienta.... jaja
Un saludo y disfrutenlo!