-: En esta sección, hablaremos
de las pruebas de penetración de aplicaciones web.
Antes de que podamos comenzar a
hablar de eso, debemos entender qué es un sitio web.
Tal como dije
antes, un sitio web es solo una aplicación instalada en una computadora.
Esa computadora probablemente solo tiene mejores
especificaciones que
su computadora, pero, fundamentalmente, funciona exactamente igual
que otra computadora.
Tiene un sistema operativo
y también tiene una serie de
aplicaciones que le permiten actuar como servidor web.
Las dos aplicaciones principales que probablemente
tiene es un servidor web y una base de datos.
Un servidor web es como Apache,
y una base de datos es como MySQL.
El servidor web, básicamente, comprende y ejecuta la
aplicación web.
Su aplicación web se escribiría en PHP o Python,
en cualquier lenguaje de programación, realmente.
Lo único es
que el servidor web debe
ser capaz de comprender y ejecutar esta aplicación web.
La base de datos contiene los datos utilizados por la aplicación web.
Todo esto se almacena en una computadora llamada servidor.
La computadora está conectada a Internet y tiene
una dirección IP real, por lo
que cualquiera puede acceder a esa computadora y hacer ping.
La aplicación web es ejecutada por el servidor
web que está instalado en su servidor, en su destino.
Por lo tanto, cada vez que solicita una página o ejecuta
la aplicación web, en
realidad, se ejecuta en el servidor web
y no se ejecuta en la computadora del cliente.
Se ejecuta en el servidor
web y luego envía una página HTML que está lista
para leer para la persona objetivo o para los clientes.
Echemos un vistazo a un ejemplo.
Digamos que estás en el teléfono o en tu computadora y querías
ir a Facebook. com.
Entonces, escribes en Facebook. com en su URL.
Esto se traducirá utilizando un servidor DNS a una
dirección IP.
Hay un servidor que traduce cada nombre. com,. edu, o cualquier sitio web con un nombre de dominio, por lo que este
es un nombre de dominio, a
su dirección IP relevante.
Entonces, solicitas facebook. com, la solicitud va a
un
servidor DNS, traduce facebook. com a la IP donde
está
almacenado Facebook, y luego irá a la dirección
IP de Facebook, ejecutará la página que desea utilizando todas las aplicaciones
de las que hablamos, y
luego le dará un HTML listo.
Lo que obtienes es solo un marcado escrito
en HTML, que es un lenguaje de marcado, del resultado
de ejecutar el programa.
El programa se ejecuta en el servidor,
y luego solo obtienes el resultado.
Esto es muy importante porque en el
futuro si queríamos ejecutar algo
en el servidor web, si queríamos ejecutar un
shell,
un shell inverso o un virus en la computadora
de destino, entonces debemos enviarlo a
un idioma que el servidor web entiende.
Por ejemplo, PHP.
Una vez que lo ejecute allí,
se ejecutará en esa computadora, no en su computadora.
Independientemente de la persona que acceda a la página, el shell web
que enviará, si está escrito en
PHP, en un lenguaje que
el servidor
entienda, se ejecutará en el
servidor y no en su computadora.
Por lo tanto, le dará acceso al
servidor y no a la persona que accedió a ese servidor.
JavaScript, por otro lado, hay algunos sitios web
que usan JavaScript.
JavaScript es un lenguaje del lado del cliente.
Si logra encontrar un sitio
web que le permita ejecutar código JavaScript,
el código será ejecutado por los clientes.
Aunque el código podría inyectarse en el servidor
web, se ejecutará en el lado del
cliente y le permitirá
hacer cosas en la computadora del cliente y no en el servidor.
Es muy importante separar entre un idioma del lado del cliente
y un idioma del lado del servidor.