shell web en fragmentos PNG IDAT

Iniciado por retr02332, Febrero 12, 2021, 01:54:42 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 12, 2021, 01:54:42 PM Ultima modificación: Febrero 12, 2021, 02:00:20 PM por retr02332
Hola a todos

He estado investigando un poco sobre cómo se construye un PNG internamente, así como algunos artículos sobre una técnica para incluir una web shell dentro del fragmento IDAT de un PNG.

Investigando en Internet di con una publicación, en la cual se enumeraban ciertos pasos para poder crear una cadena que sobreviviría al DEFLATE.
Me explico, digamos que yo tengo el siguiente payload: <SCRIPT src=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta><script> (puede ser tanto web shell, como una instrucción de JS)

Ese payload en hexadecimal se ve de la siguiente forma: 3c534352495054205352433d2f2f5254462e425a3e3c2f7363726970743e

El objetivo aquí es crear una cadena en la cual, al momento de hacer un gzdeflate() "es una funcion de php", pues me devuelva la cadena anterior...

En el articulo plantean los siguientes pasos para llevar esta operación a cabo:
1. Prepend 0x00 -> 0xff to the hex string above (one to three times)
2. Append 0x00 -> 0xff to the hex string above (one to three times)
3. Randomly generate a string of bytes and try to GZDeflate it until an error isn't thrown
4. Check that the result contains our expected string

Siendo honesto no entendí muy bien el flujo de trabajo (programaticamente hablando) para llevar a cabo esta operación.
Si alguien me ayuda a entender este proceso (programaticamente hablando) lo agradecería para poder seguir mi investigación.

Cabe decir que me he hecho un script y el único test que falla es el encargado de verificar que esos 4 pasos anteriores vayan a la perfección, como fallan... quiere decir que los he implementado mal.

Gracias a todos.