NFsec Logo

Podstawy skryptów shell #4

30/08/2017 w Bezpieczeństwo Brak komentarzy.

W

kolejnej części naszej serii [ 1 ] [ 2 ] [ 3 ] zajmiemy się atakami związanymi z uwierzytelnianiem. Zaczniemy od tezy, że nie należy polegać na skryptach, aby ustalać, czy użytkownik ma lub nie ma uprawnień do danej czynności. Jest to możliwe, jednak istnieją dobre i złe strony takiego rozwiązania. Za przykład posłuży nam skrypt:

#!/bin/bash

if [ $UID = 0 -a $USER = "root" ] ; then
    echo "Jesteś administratorem zapraszam do domu."
    echo $HOME
fi

Kod ten zawiera trzy błędy bezpieczeństwa i wszystkie są spowodowane używaniem zmiennych. Mimo, że bash chroni przed modyfikacją zmienną $UID to już $USER jest niezabezpieczona. No i kto powiedział, że inne powłoki chronią zmienną $UID?

root@darkstar:/home/agresor# ./test.sh
Jesteś administratorem zapraszam do domu.
/root
root@darkstar:~#

Skrypt działa poprawnie dla konta administratora. Przeprowadźmy teraz atak za pomocą zwykłego użytkownika:

agresor@darkstar:~$ ./test.sh
agresor@darkstar:~$ # Niestety nic z tego, ale...
agresor@darkstar:~$ tcsh
darkstar:~> setenv UID 0
darkstar:~> setenv USER root
darkstar:~> setenv HOME /tmp
darkstar:/home/agresor> /bin/bash test.sh
Jesteś administratorem zapraszam do domu.
/tmp

Jeśli ewentualnie chcemy pozyskać informacje o użytkowniku powinniśmy wykorzystać polecenie id:

# Prawdziwy UID
USRUID="$(/usr/bin/id -u -r)"
# Efektywny UID
USEUID="$(/usr/bin/id -u)"
# Nazwa użytkownika
USNUID="$(/usr/bin/id -u -n)"

Na szczęście powyższy skrypt operował tylko wyświetlaniem komunikatów za pomocą echo. W połączeniu z innym możliwym atakiem (wstrzykiwania) można te błędy wykorzystać w bardziej zły sposób.

Więcej informacji: TCSH / CSH Shell Set PATH Variable, Shell Script Security

Ukrywanie szkodliwego kodu w skryptach bash

09/01/2017 w Ataki Internetowe, Bezpieczeństwo Brak komentarzy.

Przez przypadek trafiłem na wpis na wykopie. Idąc tym tropem dotarłem do źródła, w którym możemy znaleźć prosty przepis na stworzenie szkodliwego skryptu w powłoce bash, który z pozoru będzie wyglądał normalnie:

$ printf '#!/bin/bash\necho szkodliwy kod!\nexit\n\033[2Aecho cos tam! ...\n' > backdoor.sh
$ chmod +x backdoor.sh
$ cat backdoor.sh
#!/bin/bash
echo cos tam! cos tam!
$ ./backdoor.sh
szkodliwy kod!

Jak to działa? Istnieją specjalne sekwencje znaków, które interpretuje terminal nie wyświetlając ich, ale podejmując daną akcję. Dlaczego takie polecenia, jak: cat, head, tail, more i inne zostają oszukane? Ponieważ sekwencja \033[XA powoduje przesunięcie kursora do góry o X linii nadpisując to, co jest w tej X linii. Przez, co użytkownik widzi zupełnie inny kod niż w rzeczywistości zostanie wykonany. W połączeniu z innymi atakami mogą stanowić kompletny wektor na oszukanie użytkownika sytemu z rodziny *nix.

Więcej informacji: JournalCTL Terminal Escape Injection && Log Injection, Terminal Emulator Security Issues

Wszystko, co chciałbyś wiedzieć o użytkowniku Twittera, ale boisz się zapytać

11/09/2016 w Pen Test Brak komentarzy.

T

infoleak jest prostym skryptem napisanym w języku Python, który pozwala na uzyskanie takich informacji o użytkowniku Twittera, jak:

  • podstawowe informacje: nazwę, zdjęcie, lokacje, śledzących itp.,
  • urządzenia oraz systemy operacyjne,
  • aplikacje oraz używane inne media społecznościowe,
  • odwiedzane miejsca oraz dane geolokalizacyjne,
  • analizę hashtagów, wspomnień i wiele innych…

Oczywiście informacje te uzależnione są od ustawień konta, jakie wybrał dany użytkownik Twitter’a. Przejdźmy do procesu instalacji i przykładowego użycia skryptu.
[ czytaj całość… ]

DNS – raport miliona zapytań

12/03/2016 w Bezpieczeństwo 2 komentarze.

P

o napisaniu podstaw bezpieczeństwa DNS zastanawiałem się, jaka jest skala problemu źle skonfigurowanych serwerów, które pozwalają na ściągnięcie całej strefy lub wykonywanie zapytań dowolnemu klientowi. Duch patryjotyzmu namawiał mnie na sprawdzenie TLD .pl, zarządzaną przez NASK. Niestety, jak zawsze polski dwór zakończył nadzieję na czwartej wymianie zdania. Dialog wyglądał tak:

– Czy istnieje możliwość otrzymania od Państwa listy wszystkich dotychczas zarejestrowanych domen .pl?
– NASK nie udostępnia tego typu informacji.
– A orientują się Państwo do jakiego organu można zwrócić się w tej sprawie?
– Te dane posiada tylko NASK.

Nie chciało mi się już próbować, czy aby jednak istnieje taka możliwość poprzez CZDS. Rozważałem już przerzucić się na zagraniczne banany, ale z pomocą przyszedł portal, który stanowi swoiste źródło wiedzy o ruchu w Internecie. Okazuje się, że Alexa bez żadnych zbędnych formalności udostępnia milion najczęściej odwiedzanych stron. To stanowi już jakąś próbkę, którą można poddać testom.
[ czytaj całość… ]

Piszemy skrypty, a raczej scenariusze

02/01/2016 w Administracja Brak komentarzy.

J

eśli chcemy nagrać interaktywny „film” z sesji, jaką odbyliśmy na naszej konsoli możemy posłużyć się prostym narzędziem script. W celu rozpoczęcia nagrywania wystarczy uruchomić polecenie:

script --timing=sesja1.tim sesja1.log

Odpali to nową powłokę bash i zacznie nagrywać wszystkie nasze polecenia dopóki jej nie opuścimy. Po zakończeniu nagrania możemy je odtworzyć korzystając z polecenia:

scriptreplay sesja1.tim sesja1.log

Istnieje możliwość przyśpieszenia lub zwolnienia szybkości odtwarzania za pomocą dodatkowego parametru. Ctrl+S wstrzymuje odtwarzania, a Ctrl+Q wznawia.

Więcej informacji: Strony manualne dla script(1) oraz scriptreplay(1)