$ cat << EOM | /opt/vulnerable/bin/bash
> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
> EOM
Неправильно.
Во второй строке вы вызываете bash
, который будет использовать версию из $ PATH
1 .
Вы хотите использовать версию bash
в / opt / уязвимом / bin / bash
, например:
$ cat << EOM | /opt/vulnerable/bin/bash
> env x='() { :;}; echo vulnerable' /opt/vulnerable/bin/bash -c "echo this is a test"
> EOM
Я не вижу в вас необходимости дважды вызовите bash и используйте такой канал. Почему не просто:
$ env x='() { :;}; echo vulnerable' bash -c 'echo this is a test'
и
$ env x='() { :;}; echo vulnerable' /opt/vulnerable/bin/bash -c 'echo this is a test'
Я проверил, используя bash
по сравнению с ~ / src / bash / bash
в моей системе:
$ env x='() { :;}; echo vulnerable' bash -c 'echo $BASH_VERSION'
4.3.11(1)-release
$ env x='() { :;}; echo vulnerable' ~/src/bash/bash -c 'echo $BASH_VERSION'
4.3.42(1)-release
Сноски:
и т. д. Возможно, в вашей файловой системе включена функция metadata_csum
, но extundelete
не понимает эту функцию и не обновляет контрольную сумму растрового изображения блока, когда модифицирует ее, чтобы указать, что блоки из неудаленного файла снова используются.. Тем не менее, extundelete
не должен модифицировать файловую систему с функциями, которые он не понимает,так как это может привести к более серьезному повреждению файловой системы.
Вы сможете исправить это, запустив e2fsck -fy
в файловой системе. Вероятно, было бы также целесообразно отправить отчет об ошибке (в идеале с сопутствующим патчем )автору/сопровождающему extundelete
, чтобы исправить его для вычисления контрольных сумм метаданных, а также убедиться, что он не пытается открывать файловые системы, для которых он не понимает функции INCOMPAT
, и разрешать только чтение -открывается только для файловых систем с функциями RO_COMPAT
.