Alters

Aventuras de DoHITB: parte I

Buenas!

Como os dije, voy a explicaros la historieta de cómo una brecha tonta de seguridad puede arruinar una web entera.

No esperéis ataques a servidores, shellcodes, cosas rollo "matrix", ni nada por el estilo...

Tampoco es algo del tipo "scriptkiddie"... es simplemente aprovechar una pequeña apertura que permite (más bien dicho, permitiría) obtener la contraseña de un usuario en cierta web (no publicaré datos relevantes).

Voy a intentar seguir la siguiente estructura:


  • Contar la historia
  • Cómo encontré la brecha
  • Ampliar el efecto de la brecha
  • Arreglar la brecha
    • Posible solución
    • Inconvenientes de esta solución
El último punto se repetirá varias veces. Es decir, plantearé una posible solución, y sus inconvenientes; y así hasta dar con una buena.


Ya lo iremos viendo poco a poco... empecemos por el principio.

Todo empezó con un encargo de un tipo; un encargo que no parecía del todo trigo limpio; pero al fin y al cabo, pensé "es rápido de hacer, y me ofrecen algo de dinero"... pues duro con ello, ¿no?

Me puse con la cosa en cuestión; en unas 2 horas tenía la base de mi proyecto creada. Todo parecía correcto.

Una hora más, y tengo el proyecto completado. Le envío un correo a quien me lo pidió, y le envío un .rar con archivos php.

El contacto me responde, diciendo que cómo ejecuta el PHP.

Aquí ya me extraño un poco, así que lo agrego al chat de Outlook, y le comento:

 - Sube las 2 carpetas (en total son dos carpetas, una con 4 archivos .dat y otra con 3 archivos .php) tal cual a algún servidor suyo y que acceda por navegador.

 - Lo he hecho, y no me funciona

Me puse a revisar, y claro, al tener un "set_time_limit(0)" daba un error, ya que el hosting no permitía ese cambio; sin embargo en local (en mi localhost con wampp) si que podía...

 - Vale, en localhost funciona

 - ¿Cómo hago eso?

 - Bájate el wampp (link) y lo instalas; es siguiente, siguiente, siguiente...

Al cabo del rato me dice que lo tiene pero que no le funciona.

 - Mira el icono de la "w"; es verde?

 - Está naranja

Hablando y comprobando el "services.msc" logré ver que (por el motivo que fuera) le faltaba un servicio (el apache).

Seguí indagando, y resulta que tenía un pc x64, y bajó la verisón x86 (la que yo le pasé...)

Me cansé de tontunas e hice la aplicación con vb.net

 - Te la mando en .exe, será más fácil. El funcionamiento es el mismo

 - No me funciona

En esos momentos estaba ya maldiciendo su estampa... así que probé yo desde mi pc la aplicación, usando como referencia sus datos; y si, funcionaba (desde la primera entrega que funcionaba...)

Pero bueno, arreglo un par de cosas, pongo un botón de test y reenvío

 - Sigue sin funcionar

Ya no pude más... aunque se que funciona, lo envié a los cerros de Úbeda, y me puse a maquinar un plan para tocarle un poco la moral (de este plan me surgió una idea para una App, así que...)

Y así me hallo ahora mismo; con la aplicación entregada y sin cobrar... pero en fin, no me costó demasiado, y, por otra parte, obtuve varias ideas para aplicaciones; así que una cosa por la otra...


Por ahora lo dejamos en suspense, hasta la próxima entrada...

La próxima os contaré algunos detalles de la entrega (en qué consistía), y esto desembocará en cómo encontré la pequeña brecha, cómo la aproveché (veremos algo de código útil), y qué mecanismo usé para ensancharla (también tendremos aquí código útil, pero esta parte será en una tercera entrada).

Finalmente, en una cuarta parte, explicaré mecanismos que se podrían usar para cerrar esta brecha.

Saludos, y

¡Hasta la próxima!