Может кто-нибудь объяснить код Shell Shock Bash?
У меня проблемы с пониманием следующего кода, который является "доказательством уязвимости" кода Shell Shock. Может кто-нибудь объяснить это мне? Специально эта часть() { :;};
"
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
1 ответ
Решение
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
какие env
делает?
Из документов, env
запускает программы в измененной среде
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
ясно, что x
это имя / переменная и () { :;}; echo vulnerable'
это значение переменной
что теперь () { :;};
?
когда функция экспортируется, bash сохраняет ее определение как значение для переменной среды
$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};
сейчас, когда x='() {:;}'
означает похожий на написание
$ x() {:;}
$ export x
$ env | grep x
То есть мы косвенно сделали export x
на новую среду, созданную env
Вот :
это пустое утверждение в Bash
Надеюсь, поможет