Archive for the 'Programación' Category

18
Dic
08

Vulnerabilidad XSS en siereslegalereslegal.com

El sitio web de la nueva campaña del Ministerio de Cultura es vulnerable a uno de los ataques mas comunes que puede sufrir una página web. Este fallo de seguridad conlleva el riesgo de infección de miles de ordenadores que puedan visitar la página web

El ataque en cuestión, XSS (Cross Site Scripting), consiste en “escribir” código en una página web (a través del enlace que sigue el usuario), código que no estaba originalmente. De esta forma, se modifica el contenido de la web, y se puede poner en peligro la seguridad de un equipo.

Esta vulnerabilidad representa una puerta abierta a cualquier tipo de ataque que pueda realizarse desde una web hacia un equipo. Un ejemplo sencillo, provocar que la página fuera redirigida a otra con contenido peligroso.

Un ejemplo: Esta dirección redirge la página de siereslegalereslegal a la definición de XSS en la Wikipedia

http://www.siereslegalereslegal.com/testimoniales.php?page=1%22%3E%3Cscript%3Elocation.href = 'http://es.wikipedia.org/wiki/XSS';%3C/script%3E

Personalmente, me parece indignante que se utilice dinero público para defender el negocio de empresas privadas y/o un impuesto abusivo. Lo peor es que encima esta web suponga un peligro para los visitantes de la misma

Anuncios
16
Dic
08

Citar notas en el nótame (menéame)

El nótame es una sección de menéame donde puedes escribir pequeñas notas públicas. En tus notas, puedes referirte (o citar) a la última nota de otro usuario escribiendo una arroba (@) seguida del nombre del usuario al que te refieres.
En mi opinión, debería ser mas fácil, no me gusta tener que escribir el nombre de usuario, o tener que copiar/pegar, por eso he escrito este pequeño script.

Puedes ver como funciona en http://www.youtube.com/watch?v=C2ktZAoBtpk

Para utilizarlo, necesitas usar el navegador web FireFox , y tener instalado el plugin GreaseMonkey para FireFox.
El script está publicado en http://userscripts.org/scripts/show/35186 , donde puedes instalarlo y ver el código fuente

También puedes ver el código fuente aquí

// ==UserScript==
// @name           Nótame Hacks
// @namespace      http://meneame.net/notame
// @description    Añade funciones extra en las notas
// @include        http://meneame.net/notame*
// ==/UserScript==

// Creamos el nodo con el script
var js = document.createElement('script');
js.setAttribute('id', 'notame_hacks');
js.setAttribute('type', 'text/javascript');

// ==UserScript==
// @name          Nótame Hacks
// @namespace     http://meneame.net/notame
// @description   Mejoras en la interfaz gráfica
// @include       http://meneame.net/notame/*
// ==/UserScript==

    js.text += "\nvar esperar = 1000;";
    js.text += "\nvar refresco = 100;";
    js.text += "\nvar cancelarBusqueda = false;";
    js.text += "\nvar it;";
    js.text += "\nvar invocarTextarea = function(usuario) {";
    js.text += "\n    get_votes('post_edit.php','edit_comment','addpost',0,0);";
    js.text += "\n    it = setInterval('comprobarTextarea(\\'' + usuario + '\\')', refresco);";
    js.text += "\n    setTimeout(function() { cancelarBusqueda = true; }, esperar);";
    js.text += "\n}";
    js.text += "\nvar comprobarTextarea = function(usuario) {";
    js.text += "\ntexto = document.getElementById('post');";
    js.text += "\n    if(texto) {";
    js.text += "\n        clearInterval(it);";
    js.text += "\n        citar(usuario);";
    js.text += "\n    } else if(cancelarBusqueda) {";
    js.text += "\n        clearInterval(it);";
    js.text += "\n    }";
    js.text += "\n}";
    js.text += "\nvar citando, texto;";
    js.text += "\nvar citar = function(usuario) {";
    js.text += "\n    texto = document.getElementById('post');";
    js.text += "\n    if(!citando || (!texto)) {";
    js.text += "\n        if(!texto) {";
    js.text += "\ncitando = false;";
    js.text += "\n            invocarTextarea(usuario);";
    js.text += "\n\n        } else {";
    js.text += "\ncitando = true;";
    js.text += "\n            texto.value = '@' + usuario + ' ';";
    js.text += "\n        }";
    js.text += "\n    } else {";
    js.text += "\n        texto.value += ' @' + usuario + ' ';";
    js.text += "\n    }";
    js.text += "\n}";
    js.text += "\nvar notas = document.getElementsByTagName('ol')[1].childNodes;";
    js.text += "\nvar nota, url, usuario;";
    js.text += "\nfor(i = 0; i < notas.length; i++) {";
    js.text += "\n    nota = notas[i];";
    js.text += "\n    if(nota.nodeType == 3) continue;";
    js.text += "\n    url = nota.childNodes[1].childNodes[1].getElementsByTagName('a')[0].href;";
    js.text += "\n    usuario = url.substring(url.lastIndexOf('/')+1);";
    js.text += "\n    obj = nota.childNodes[1].childNodes[0].innerHTML += '&nbsp;&nbsp;&nbsp;<a href=\"javascript:citar(\\'' + usuario + '\\')\">Citar</a>';";
    js.text += "\n}";
}
// Añadimos el nodo al <head>
document.getElementsByTagName('head')[0].appendChild(js);