Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

257
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda