martes, 2 de junio de 2020

martes, 2 de diciembre de 2008

VULNERABILIDADES HTTP (PUT)

Ultimamente apesar del avance de los updates y demás, muchos servidores webs tienen aún vulnerabilidades q muchas veces nace por parte del descuido del administrador mas que por otra cosa, una de esa vulnerabilidades es dejar habilitado otros métodos además del GET en nuestro servidor web, tal como el metodo PUT... estuve buscando hace poco un código exploit para dicha vulnerabilidad, sin embargo los que encontré no funcionó ninguno... por lo q me dí a la tarea de hacer el código yo, el cual expongo acontinuación y el cual se puede usar para trabajar otros métodos, como DELETE, GET, TRACE...... etc.

<script type="text/javascript">
function xxx()
{
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");

//inicializa el HTTP Request.
WinHttpReq.Open("PUT", "http://www.servidor.com/newdoc.txt", false);

//Sube el contenido del nuevo documento (newdoc).
WinHttpReq.Send("Hola mundo, Yo estuve aquí!!");

//Visualiza cualquier respuesta (q muchas veces es html) por parte del servidor
document.write(WinHttpReq.ResponseText);
}
</script>
<input type="button" onclick="xxx()" value="Subir Archivo" />

....

El código anterior sube el archivo newdoc.txt con el contenido Hola mundo....... al servidor con el método PUT activo. funciona con IE.

WinHttpReq.Open("PUT", "http://www.servidor.com/newdoc.txt", false);

Inicializa un http request con el método PUT, en lugar de dicho método se puede enviar DELETE, GET, OPTIONS, etc..., el segundo parametro es el servidor (URL), y por último le decimos si queremos que sea asíncrono (true) o síncrono, esto es si queremos que se envien los request sin esperar respuesta (asíncrono) o si queremos que espere un Response.

En caso del PUT el método send lleva como parámetro el contenido, en caso de otros métodos http, como el GET, send no lleva parámetros ( WinHttpReq.Send(); ).

lunes, 1 de diciembre de 2008

4 Tips para aprender un lenguaje de programación

Durante mi corta experiencia con los lenguajes de programación he tenido la oportunidad de pasar desde lenguajes de bajo nivel (Ensamblador y Ensamblados específicos para microprocesadores), leguajes estructurados (C ANSI, QBASIC), scripts (todo tipo de scripts de lotes para sistemas operativos y también para web), orientados a objetos (C++, Java, , Visual Basic, C#........), funcionales (Sheme), Declarativos (PL/SQL)…. Etc.

En fin, en otras palabras he tenido la oportunidad de conocer una amplia gama de lenguajes y tipos de lenguajes, de esto ha quedado una huella, unos tips a la hora de aprender nuevos lenguajes que le pueden servir a cualquiera a la hora de enfrentarse con nuevos retos:


1. Tener un buen fundamento de programación básica estructurada, debido a sin importar que tipo de lenguajes te enfrentes (a excepción de los derivados de SGML como HTML y XML) se basan en una programación estructurada, que conservan ciclos o bucles (for, while, do, foreach, forall….), condiciones (if, elseif, else), funciones, procesos…. Por lo que conocer cómo funcionan y se constituyen estas estructuras algorítmicamente, así como los conceptos básicos de orientados a objetos, clases, herencia, atributos, eventos…. Todo esto es de gran ayuda.

2. Tener presente para todos los lenguajes la frase “Existe la Manera”, debido a que todos los lenguajes proveen un juego de funciones, métodos o formas de acceder a datos, estructuras, clases, etc.

3. Del punto anterior va relacionado con lo que quizá es la parte más importante a la hora de entender, aprender y utilizar un lenguaje de programación: Entender la estructura de la documentación, la mayoría de lenguajes bien conocidos, tienen una estructura de documentación muy similar a la de Java, especialmente los OO. Conocer cómo es la forma de la documentación te ayuda a encontrar más fácilmente lo que necesitas.

4. Y por último, buscar ejemplos de aplicación. Esto te sirve de guía para entender la aplicación de algunas funciones o métodos de algunos lenguajes, cuando la documentación por sí sola no es suficiente.

Primer Encuentro con AJAX

Últimamente me he visto en la necesidad de trabajar aplicaciones web, inclusive, éste semestre en la universidad he tenido una materia en la cual hemos visto los dos tipos de servidor que me faltaba por conocer: ASP y JSP. Anteriormente había tenido un encuentro breve con PHP.

Sin importar la tecnología que usemos, ni la plataforma, la tendencias actuales en la web son orientadas aún más a la usabilidad y una mejor interfaz para el usuario. Las tecnologías AJAX crean un gran soporte para este tipo de aplicaciones (esto aunque no sean utilizadas para lo que realmente se construyó).

Me he visto envuelto en varias tecnologías (por así decirlo) que tienen q ver con AJAX:

Dojo Toolkit: una propuesta libre, bastante completa, se puede usar sobre html aunque su uso no es el más fácil. (http://dojotoolkit.org/)

AJAX ASP Toolkit: es una librería exclusivamente para controles ASP.Net, utiliza el concepto de “Extender” lo cuál es una extensión del control ASP normal, es sencillo de usar, y aún más si desarrollas con Visual Studio, aunque es un poco inestable y tiene un par de bugs q pueden ser un dolor de cabeza. (http://www.asp.net/ajax/)

JQuery: es mi favorito, no sólo por q es realmente fácil de usar, implementar y modificar, sino por que es realmente liviano teniendo en cuenta que, como dije anteriormente, AJAX muchas veces solo es usado para mejorar la parte visual de los sitios web. (http://jquery.com/)