alphasec
Bash / Unix protip 007c
in 𝕏

Skaner portów w bashu

tty1 · bash
$ for p in {22,443,2083,8880,31337}; do (timeout 1s bash -c "</dev/tcp/berkeley.edu/$p")2>/dev/null && echo "$p - open"||echo "$p - closed"; done
#Unix#Bash#RedTeam#Recon

Posiadając wyłącznie basha, bez dodatkowych narzędzi możemy zestawić połączenie na dowolnym porcie UDP bądź TCP z wybranym hostem wykorzystując pseudourządzenia /dev/tcp/[host]/[port] oraz /dev/udp/[host]/[port]. Tu warto dodać, że nie są to urządzenia dostarczane przez kernel, lecz jest to konstrukcja wykorzystywana przez basha. Jeśli port, na który staramy się zrobić połączenie nie jest dostępny, bash wyświetli odpowiedni błąd, natomiast nie interesuje nas jego treść, lecz fakt czy się udało zestawić połączenie czy nie.

Wykorzystując polecenie timeout z pakietu coreutils jesteśmy w stanie ograniczyć czas oczekiwania na połączenie - w naszym wypadku jest to jedna sekunda (oczywiście nasz skaner zadziała również bez niego, ale trzeba będzie zaakceptować długi czas oczekiwania w niektórych wypadkach lub inaczej rozwiązać kwestię timeoutu). Jeśli się uda, wykorzystujemy operator && (and), by wyświetlić dobrą wiadomość, w innym wypadku skrypt przejdzie do operatora || (or), komunikując, że port niedostępny.

Wykorzystanie takiego skanera mogłoby wyglądać następująco:

Skaner portów w bashu

Przydatne linki

# aptm.in/protip/0002 reverse shell z wykorzystaniem /dev/tcp protip ↗ www.tldp.org/LDP/abs/html/devref1.html dodatkowe informacje o /dev/tcp i /dev/udp web ↗
← poprzedni protip 007b ••• Wszystkie protipy następny → protip 007d
// subskrybuj

Nowe protipy prosto na maila.

Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.

wersja newslettera: