¿Es la matriz de PHP no deseada para convertir la cadena un riesgo de seguridad?

3

Durante una prueba de penetración, noté que cambiar algunos de los parámetros HTTP GET de las cadenas esperadas a las matrices usando ?test[]=1 en lugar de ?test=1 . En PHP, esto se traduce en un error o en una conversión no deseada de Array a String. Que (cuando se suprimen los errores) da como resultado la cadena "Array".

¿Esto introduce algún riesgo de seguridad? Aparte del pequeño "riesgo" de que pueda dar una idea de la tecnología utilizada (PHP). que también es detectable de muchas maneras diferentes.

Una vez vi un caso similar en el que la inyección de una matriz multidimensional profunda ?test[][][][][]=1 (veces 100), resultó en un rápido agotamiento de los recursos (denegación de servicio) ya que una función recursiva comenzó a procesar todo eso.

    
pregunta Bob Ortiz 21.06.2017 - 14:41
fuente

1 respuesta

4

Ser capaz de provocar un error de PHP siempre es una mala señal, y vale la pena analizarlo con más detalle o al menos informar. Lo malo que es esto en la práctica puede variar de completamente benigno a absolutamente catastrófico. Todo depende de lo que haga el código con la matriz que espera que sea una cadena.

Echemos un vistazo a un ejemplo del mundo real del extremo malo de esa escala: el aviso de seguridad de Drupal SA-CORE -2014-005 , o Drupalgeddon como se conoce más comúnmente.

Fue un ataque de inyección SQL que funcionó porque las programadoras no esperaban que un parámetro de consulta fuera una matriz. Cuando fue así, por alguna razón no entiendo completamente, las claves de esa matriz se concatenaron en una consulta SQL. Puede ver algunos ejemplos de cargas útiles aquí .

Entonces, ¿esto introduce riesgo? Potencialmente, sí.

    
respondido por el Anders 21.06.2017 - 15:09
fuente

Lea otras preguntas en las etiquetas