Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

255
Vistas
¿Se puede explotar mi función usando corchetes en la entrada del usuario, cuando la entrada es JSON?

Tengo un código que valida las entradas proporcionadas por el usuario (este ejemplo es una lista de secretos, hacemos lo mismo con otros datos).

Este es un ejemplo súper simple (sin la validación), que demuestra un exploit. notsupplied es una variable establecida en el código, no algo proporcionado por el usuario, para demostrar que puede acceder a cosas que no debería:

 var notsupplied = "secret" var secrets = [{database: "dbpass"} , {ssh: "sshkey"} , {other: console.log(notsupplied)}] for (var key in secrets) {console.log (secrets[key])}

(En lugar de console.log(secrets[key]) en realidad validará cada secreto).

Ahora, puede ver en este ejemplo, el "otro" secreto travieso puede registrar un valor que el usuario no proporcionó (creo que puede ejecutar cualquier código en el servidor en ese momento).

Si estuviéramos tomando entradas como esta, entonces eso sería malo. SIN EMBARGO, el usuario proporciona sus secretos como JSON en el cuerpo de una solicitud POST. (Las comprobaciones "¿es la entrada JSON válida?" se realizan antes de que el código llegue a "comprobar que todos los secretos son aceptables").

Estamos usando express/express-validator y estamos en un AWS Lambda detrás de una API GW. (¡en caso de que eso haga alguna diferencia en la respuesta!)

Entonces, mi pregunta es: ¿JSON proporciona suficiente desinfección de valores o hay alguna forma inteligente de sortear el "JSON define siete tipos de valores: cadena, número, objeto, matriz, verdadero, falso y nulo". y hacer que ejecute código? (No sé, algún truco extraño con un valor con algunos más []s o un doble escape; o ya sabes, los sospechosos habituales ;-) ? )

Mi CICD sigue quejándose de que hay un exploit de ejecución remota de código aquí, pero creo que debido a que las entradas se "desinfectan" al pasar como JSON, eso es suficiente.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda