0day en base de datos oracle

Un experto en seguridad informática considera que nueve de cada diez bases de datos Oracle son vulnerables a un ataque que podría dar a los hackers el acceso y control de la sensibilidad de las empresas y los sistemas de base de datos del gobierno, sin la necesidad de una identificación de usuario o contraseña.

David Litchfield, jefe de investigación en NGSSoftware Ltd, una compañía con sede en Reino Unido dijo haber reportado a Oracle la vulnerabilidad desde Noviembre (Oracle 10.2.0.4), pero no fue solucionado en los parches de seguridad de enero. Por lo que ha decidido hacerlo público (”11g 0day exploit”) durante la conferencia Black Hat en Washington el miércoles.

Litchfield dijo que “permite a un atacante sin un ID de usuario y contraseña tomar el control completo. Todos los firewalls se vuelven irrelevantes”.

Aunque es posible prevenir la explotación cambiando la configuración por defecto del software, Litchfield cree que nueve de cada diez bases de datos son vulnerables. Añadió que no había manera de saber si los hackers ya aprovechan la vulnerabilidad para acceder a una base de datos.

Mientras tanto Black Hat retiró el video de David Litchfield donde se mostraba el código y Oracle no ha hecho algún comentario al respecto.

Fuente: latinohack.com

Obtener la dirección IP [PHP]

Hoy vamos a comentar una función con la que me topé por internet para obtener una ip


<?php
function getIP() {
    if (isset(
$_SERVER)) {
    if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR'])) {
    return 
$_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
    return 
$_SERVER['REMOTE_ADDR'];
    }
    } else {
    if (isset(
$GLOBALS['HTTP_SERVER_VARS']['HTTP_X_FORWARDER_FOR'])) {
    return 
$GLOBALS['HTTP_SERVER_VARS']['HTTP_X_FORWARDED_FOR'];
    } else {
    return 
$GLOBALS['HTTP_SERVER_VARS']['REMOTE_ADDR'];
    }
    }
}
 
$ip getIP();  
?>


Es una función muy simple, primero comprueba si existe el array global $_SERVER en caso de que no exista intenta hacerlo lo mismo pero mediante el array $GLOBALS.
Algunos proxyes dejan la ip del usuario en HTTP_X_FORWARDED_FOR, por esta razón primero comprobamos si exsite, en caso de que exista esa es la IP real.
Sino tomamos el valor REMOTE_ADDR.

Este script, como todos los de GETIP, no garantiza que la ip tomada sea la verdadera pero tienes mas probabilidades que con otros que he visto en la red

Las variables variables de PHP

Aunque suene un tanto raro existen y quizá cueste un poquito de captar a la primera, así que recomiendo la doble lectura.

En algún momento dado podemos necesitar que el contenido de una variable sea el nombre de la varable.
Ejemplo:
tenemos la variable $boque =  "arbol";
queremos asignarle a una variable $arbol = "verde"; pero no siempre será arbol también podria ser planta.

Entonces, como lo hacemos? Ya que:

<?php

  $bosque 
$arbol "verde"; ?>


solo conseguimos 2 variables con el valor verde, que no es lo que buscamos.
Aquí entran las variables variables.

Asignación de una variable normal:

<?php

  $bosque 
"arbol"; ?>


Ahora una variable variable siguiendo el ejemplo anterior:


<?php

  
$$bosque "verde"; ?>


Y el efecto es asignar la variable $arbol = "verde";

Saludos
Nax

Rotación de imagenes con JavaScript

Hoy es domingo y he tenido un día ajetreado así que a diferencia de otros días les dejo un code muy sencillo en javascript del cual pedian una ayuda en LH

Hace una rotación de X imágenes cada Y segundos durante un tiempo indefinido.

<html>
<head>
<title>Secuencia</title>

<script language="javascript">

var SecuenciaEjecutandose = false
var SecuenciaID = null
var imagen = 4
var duracion = 1000

if ( CompruebaVersion() ) {
imagenes = new CreaArray( 4 )
imagenes[1].src = "imagen1.jpg"
imagenes[2].src = "imagen2.jpg"
imagenes[3].src = "imagen3.jpg"
imagenes[4].src = "imagen4.jpg"
}

function CompruebaVersion() {
if (navigator.appVersion.charAt(0) >= 3 && document.images) 

return true
else return false
}

function CreaArray(n) {
this.length = n
for (var i = 1; i<=n; i++) {
this[i] = new Image()
}
return this
}

function DetenerSecuencia () {
if( SecuenciaEjecutandose )
clearTimeout(SecuenciaID)
SecuenciaEjecutandose = false
imagen = 0
}

function MostrarSecuencia () {
if (CompruebaVersion()) {
document.images["secuencia"].src = imagenes[imagen].src
imagen++
if ( imagen == 5 )
imagen = 1
}
SecuenciaID = setTimeout(" MostrarSecuencia() ", duracion)
SecuenciaEjecutandose = true
}

function IniciarSecuencia () {
DetenerSecuencia()
imagen = 1
MostrarSecuencia()
}

</script>

</head>

<body onLoad="IniciarSecuencia()">
<img src="imagen1.jpg" width="100" height="100" alt="Secuencia" 

name="secuencia"> 

</body>
</html>

 

Como se aprecia en el code el script carga 4 imágenes en un array y esas imágenes las va pasando por una etiqueta llamada secuencia.

saludos
nax

Cifrado vigenère [code PHP]

Hoy os presento un code sencillo que se comentó por DragonJAR y como estaba aburrido decidí crear un cifrador.

El cifrado es vigenerè y es, básicamente, el cifrado cesar un poco mas avanzado.

Como yo no soy bueno comentado la historia me centro en las matemáticas:

El cifrado recive 3 parámetros:

- Mensaje a cifrar
- Clave
- Cantidad de letras del abecedario (este 3er parámetro es una constante)

La fórmula del cifrado vigenère es:

Yi = (Xi + Zi) mod T

Donde:

Xi = letra original
Zi = letra clave

T = 26 (letras alfabeto -1 , ya que empezamos de 0)

Un ejemplo:

Xi = A
Zi = B

Yi = (A + B) mod 26
Yi = (0 + 1) mod 26

Yi = 1 = B

Siendo:
A = 0
Z = 26

El código es:

<?php

form
();
$message strtolower(str_replace("n"," ",$_POST['message'])); $clavestrtolower($_POST['clave']); $final "";
$letters explode(' ',"a b c d e f g h i j k l m n o p 

q r s t u v w x y z"); $saltar explode(' ''º Âª  ! | " @ Â· # $ ~ % 
â�¬ & Â¬ / ( ) = ? ' Â¿ Â¡ ^ ` [ ] + * Â¨ Â´ { } Ã§ - _ . : , ;');

for (
$i = 0, $x = 0 ; $i < strlen($message); $i++, $x++) {
   
   if (
$x >= strlen($clave))
      
$x = 0;
   
   if (in_array(
$message[$i],$saltar) || $message[$i] === ' ') {
      
$final .= $message[$i];
      
$x--;
   }else {
      
      
$vigenere = (array_search($message[$i],$letters) + 

array_search($clave[$x],$letters) ) % 26 ;

      
$final .= $letters[$vigenere];

   }
}

echo '<b>Resultado encriptado:</b><br />'.strtoupper(
$final);

function form() {
   echo '<form action="'.
$_SERVER['PHP_SELF'].'" method="post">
         Mensaje: <br /> 
            <textarea name="message">'.
$_POST['message'].'</textarea><br />
         Clave: <input type="text" name="clave" value="'

.$_POST['clave'].'" />
         <input type="submit" name="send" value="Enviar">
        </form>
   ';   
}

?>


La cadena $saltar se ha desformatado al convertir el código así que la dejo aparte:

$saltar = explode(' ', 'º ª \ ! | " @ · # $ ~ % € & ¬ / ( ) = ? \' ¿ ¡ ^ ` [ ] + * ¨ ´ { } ç - _ . : , ;');


Explicación:

Básicamente lo que hacemos es crear un array del abecedario, para asignar de forma rápida el 0 = a y z = 26.
Después de eso tomamos un bucle donde usaremos 2 contadores, $i para el mensaje y $x para la clave.

La variable que hará salir del bucle es $i, ya que cuando se acabe el mensaje se acabará el bucle.
$x sin embargo se repetirá cada vez que se termine.

La variable $saltar nos permite saltarnos ciertos carácteres que no forman parte del abecedario y disminuimos $x en 1 ya que no usamos la letra clave para encriptar.

Luego ya solo es cuestión de buscar la letra del mensaje en el array y tomar el valor de la key sumarlo al valor de la letra clave y hacer mod entre 26.

Ejemplo de uso:


Espero que les guste y quizá con mas tiempo hago el decrypter.