¿Es posible explotar PHP sin serializar sin clases? [duplicar]

3

Estoy evaluando la seguridad de un portal web para un cliente y encontré una vulnerabilidad. El código es básicamente hacer esto:

$var = unserialize($_REQUEST['something']);

Tengo control completo sobre la variable. Pero no hay clases en el código del servidor, no tiene muchos objetos controlables __destruct , __wakeup etc.

¿Puedo hacer algo con esto? Como tal vez establecer una variable $_SESSION ? ¿Es posible? ¿Algún RCE o BoF o algo así?

    
pregunta GMX Rider 15.01.2018 - 21:23
fuente

1 respuesta

1

Depende de tu versión de PHP. El uso de unserialize para encontrar puntos débiles en la aplicación depende de que la aplicación tenga clases vulnerables. Si no tienen ninguna clase, la aplicación no es vulnerable.

Sin embargo, puede que tengas suerte! Yo realmente no uso la serialización de PHP porque en el pasado ha tenido muchos fallos, con graves vulnerabilidades de seguridad de PHP en sí mismo . No estoy personalmente familiarizado con los detalles exactos, y depende de la versión de PHP (que obviamente no conoce), pero existe un riesgo suficientemente alto de que para alguien que realiza una auditoría de seguridad, la respuesta sea legítima " NUNCA pase los datos del usuario a unserialize ". Para las versiones incorrectas de PHP, el resultado puede ser un desastre grave.

Tienes que saber realmente lo que estás haciendo para aprovechar las vulnerabilidades mencionadas, pero lo que obtienes es una vulnerabilidad de ejecución remota de código en el propio intérprete de PHP, lo que le da al atacante un premio mucho mayor. Aquí hay un resumen detallado de la vulnerabilidad en PHP 7. Esto obviamente no es directamente aplicable a usted, pero muestra que la vulnerabilidad es real y no depende de que el usuario haya definido las clases:

enlace

También información muy básica:

enlace

    
respondido por el Conor Mancone 15.01.2018 - 22:10
fuente

Lea otras preguntas en las etiquetas