基于Metasploit的渗透测试

本次渗透测试靶场环境为《Metasploit渗透测试魔鬼训练营》书中的靶场环境

网络拓扑结构

网络环境配置

vmware虚拟网络编辑器配置

DHCP的结束IP地址应为255,而不是254,因为经过实现发现为254时nmap对网关254的端口扫描会扫不出结果。

网关服务器linux配置

开启数据包路由转发功能

vim /etc/sysctl.conf

配置防火墙实现从内网出去的数据包进行网络地址转换

实现开机自启都配置该命令

kali攻击机配置

OWASP Web服务器配置

kali攻击机浏览器访问www.dvssc.com

成功

后台服务器Win2K3配置

内网客户机winxp配置

连通性测试

内网winxp主机

成功访问网关与服务器区的主机

成功访问网关与服务器区的主机,不能主动访问内网主机

kali攻击机安装GVM

apt update

apt-get update

apt dist-upgrade

apt-get install gvm -y

进行设置 gvm-setup

运行gvm-check-setup检查是否安装完全

启动gvm-start

更新NVT特征库greenbone-feed-sync

注意:第一次安装的时候需要等待很长一段时间让其构建好数据库并部署设施后才能使用

【渗透测试过程】

攻击机为kali处于DMZ区,公司的公开门户网站为www.dvssc.com

【信息搜集】

【对公开网站进行信息收集】

由于是虚拟机环境whois,google信息搜索等都做不了

使用dig和nslookup查看域名解析情况

可以看到该网站得到的IP地址为10.10.10.254我们知道该地址为网关的地址,因此应该不是网站的真实地址

使用traceroute查看拓扑路径

这里可以看到该网站的IP地址为10.10.10.129,该地址才是该网站准确的

使用dir_scanner收集网站目录信息

【对主机端口服务信息搜集】

使用arp_sweep模块发现网段中活跃的主机

除去虚拟网卡可以看到扫描出了三台主机,10.10.10.129,10.10.10.130和10.10.10.254

使用Nmap对发现的主机的操作系统以及其开放的端口服务进行扫描

10.10.10.129

10.10.10.130

10.10.10.254

扫描结果分析

主机

操作系统

主要开放端口

对应服务版本

web服务器(10.10.10.129)

Linux 2.6.x

(ubuntu 10.04)

FTP(21)

vsftpd 2.2.2

SSH(22)

OpenSSH 5.3pl

HTTP(80)

Apache httpd 2.2.14

netbios-ssn(139)

Samba smbd 3.X

Imap(143)

Courier Imap

(released 2008)

netbios-ssn(445)

Samba smbd 3.X

java-object(5001)

Java Object Serializayion

HTTP(8080)

Apache Tomcat/Coyote JSP engine 1.1

后台服务器(10.10.10.130)

Windows Server 2003

FTP(21)

Microsoft ftpd

HTTP(80)(8099)

Microsoft IIS httpd 6.0

msrpc(135)(1025)(1026)(1030)(1031)

Microsoft Windows RPC

netbios-ssn

(139)

Microsoft Windows netbios-ssn

microsoft-ds

(445)

Microsoft Windows 2003 or 2008 microsoft-ds

multiling-http(777)

?

oracle-tns

(1521)

Oracle TNS Listener 10.2.0.1.0 (for 32-bit Windows)

HTTP(6002)

SafeNet Sentinel Protection Server 7.3

afs3-callback(7001)

?

HTTP(7002)

SafeNet Sentinel Keys License Monitor httpd 1.0 (Java Console)

网关服务器

(10.10.10.254)

Linux 2.6.X

(ubuntu 8.04)

FTP(21)

ProFTPD 1.3.1

SSH(22)

OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)

telnet(23)

Linux telnetd

SMTP(25)

Postfix smtpd

domain(53)

ISC BIND 9.4.2

HTTP(80)

Apache httpd 2.2.8

netbios-ssn

(139)(445)

Samba smbd 3.X

MySQL(3306)

MySQL5.0.51a-3ubuntu5

PostgreSQL

(5432)

PostgreSQL DB 8.3.0 - 8.3.7

ajp13(8009)

?

HTTP(8180)

Apache Tomcat/Coyote JSP engine 1.1

根据整理出来的信息,对Telnet、SSH、Oracle服务进行针对性扫描。对SSH和FTP服务进行口令嗅探

【对重点服务进行针对性扫描】

对网关服务器(10.10.10.254)的telnet服务进行扫描

得到Telnet Ubuntu 8.04 的用户名为:ametasploitable

对web服务器和网关服务器的SSH服务进行扫描

得到Web服务器为ubuntu 10.04,网关服务器 8.04

对后台服务器(10.10.10.130)的Oracle数据库服务进行扫描

【进行口令嗅探】

暴力破解SSH口令

可以看到破解到了网关服务器的SSH口令,<用户名:密码>,root:ubuntu,user:user,postgres:postgres,msfadmin:msfadmin

使用psnuffle口令嗅探

该模块是通过对网络中的数据包进行监听,监听哪些远程链接协议服务的数据包,如上面列出的FTP、IMAP、POP3、SMB、URL等。该嗅探的成功实施需要有人进行远程连接,这在实际的公司网络中或许很常见,应该是能探查到的,但这里是在虚拟机中进行模拟渗透测试。因此在这里用另一台DMZ主机登陆网关服务器的FTP服务,进行两次连接,第一次输入错误的用户密码,第二次输入成功的

可以看到psnuffle做出了反应,明确得到了用户名密码,也能知道该次连接是否成功。这是因为FTP是以明文方式进行的。如果是像SFTP这种以加密形式传输的就办不到了

【漏洞扫描】

使用GVM进行漏洞扫描

对web服务器10.10.10.129,后台服务器10.10.10.130,网关服务器10.10.10.254扫描

扫描结果

10.10.10.129

10.10.10.130

10.10.10.254

对高危漏洞进行整理

服务器

端口

高危漏洞

CVE

web服务器

(10.10.10.129)

8080

Apache Tomcat Manager/Host Manager/Server Status Default/Hardcoded Credentials (HTTP)

CVE-2010-4094

CVE-2009-3548

CVE-2009-4189

CVE-2009-3099

CVE-2009-3843

CVE-2009-4188

CVE-2010-0557

80

Joomla < 3.9.5 Multiple Vulnerabilities

CVE-2019-10945

CVE-2019-10946

CVE-2019-11358

80

Joomla! Core LDAP Information Disclosure Vulnerability (Nov 2017)

CVE-2017-14596

80

Joomla! < 3.8.0 LDAP Information Disclosure Vulnerability

CVE-2017-14596

80

Joomla < 3.8.12 Multiple Vulnerabilities

CVE-2018-15880

CVE-2018-15882

80

Joomla! < 3.9.7 Multiple Vulnerabilities

CVE-2019-12764

CVE-2019-12765

CVE-2019-12766

80

Joomla! < 3.9.13 Multiple Vulnerabilities

CVE-2019-18650

CVE-2019-18674

80

Joomla! < 3.8.13 ACL Violation Vulnerability

CVE-2018-17855

80

Tiki Wiki CMS Groupware < 17.2 SQL Injection Vulnerability

CVE-2018-20719

80

Tiki Wiki < 22 Multiple Vulnerabilities

CVE-2020-29254

80

OrangeHRM <= 4.3.1 RCE Vulnerability

CVE-2019-12839

80

Tiki Wiki < 24.1 Multiple Vulnerabilities

CVE-2023-22850

CVE-2023-22853

80

Tiki Wiki CMS Groupware fixedURLData Local File Inclusion Vulnerability

CVE-2016-10143

80

Tiki Wiki CMS Groupware < 4.2 Multiple Unspecified Vulnerabilities

CVE-2010-1135

CVE-2010-1134

CVE-2010-1133

CVE-2010-1136

80

Tiki Wiki < 24.2 PHP Object Injection Vulnerability

CVE-2023-22851

在Apache Tomcat漏洞中得知可在http://www.dvssc.com:8080/host-manager/html

http://www.dvssc.com:8080/manager/html,http://www.dvssc.com:8080/manager/status

这三个地方使用用户:root,密码:owaspbwa登录Tomcat

服务器

端口

高危漏洞

CVE

后台服务器

(10.10.10.130

445

Vulnerabilities in SMB Could Allow Remote Code Execution (958687) - Remote

CVE-2008-4114

CVE-2008-4834

CVE-2008-4835

445

Microsoft Windows SMB Server NTLM Multiple Vulnerabilities (971468)

CVE-2010-0020

CVE-2010-0021

CVE-2010-0022

CVE-2010-0231

80

Microsoft Internet Information Services (IIS) End of Life (EOL) Detection

445

Microsoft Windows SMB Server Multiple Vulnerabilities-Remote (4013389)

CVE-2017-0143

CVE-2017-0144

CVE-2017-0145

CVE-2017-0146

CVE-2017-0147

CVE-2017-0148

服务器

端口

高危漏洞

CVE

网关服务器

(10.10.10.254

80

TWiki XSS and Command Execution Vulnerabilities

22

SSH Brute Force Logins With Default Credentials Reporting

CVE-1999-0501

CVE-1999-0502

CVE-1999-0507

CVE-1999-0508

CVE-2020-9473

CVE-2023-1944

CVE-2024-22902

8009

Apache Tomcat AJP RCE Vulnerability (Ghostcat)

CVE-2020-1938

3632

DistCC RCE Vulnerability (CVE-2004-2687)

CVE-2004-2687

5432

PostgreSQL Default Credentials (PostgreSQL Protocol)

80

Tiki Wiki < 24.1 Multiple Vulnerabilities

CVE-2023-22850

CVE-2023-22853

80

Tiki Wiki < 22 Multiple Vulnerabilities

CVE-2020-29254

80

Tiki Wiki CMS Groupware < 17.2 SQL Injection Vulnerability

CVE-2018-20719

21

FTP Brute Force Logins Reporting

CVE-1999-0501

CVE-1999-0502

CVE-1999-0507

CVE-1999-0508

CVE-2001-1594

CVE-2013-7404

CVE-2017-8218

CVE-2018-19063

CVE-2018-19064

80

Tiki Wiki CMS Groupware < 4.2 Multiple Unspecified Vulnerabilities

CVE-2010-1135

CVE-2010-1134

CVE-2010-1133

CVE-2010-1136

5432

SSL/TLS: OpenSSL CCS Man in the Middle Security Bypass Vulnerability

CVE-2014-0224

80

Tiki Wiki < 24.2 PHP Object Injection Vulnerability

CVE-2023-22851

还得到如下信息,可能的用户名密码:

FTP and SSH:It was possible to login with the following credentials <User>:<Password> , msfadmin:msfadmin,postgres:postgres,service:service,user:user

PostgreSQL: It was possible to login as user postgres with password "postgres".

【DMZ区渗透实施】

【对Web服务器进行渗透】

点击网页www.dvssc.com的右上角的SIGNIN,发现进入到一个登录界面。

尝试admin admin结果发现直接进去了

点进Dame Vulnerable Web Application,发现进入了DVWA的后台界面。点击左侧DVWA security 将安全等级调到low。

使用sqlmap进行SQL注入攻击

随后出现告警信息,根据告警信息补充命令

需要为GRT请求或POST请求提供参数

’http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit#‘

出现302重定向到登录界面,因此提供Cookie保持登录状态。按F12查看网页Cookie

sqlmap -u "http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit#" --cookie="JSESSIONID=0D4AAD047174F9BB879F52FCC4D1F371;PHPSESSID=hbhld9mq5mh86kpk7debh8ot25;security=low"

发现存在bool注入点,基于错误、时延注入点和union注入点。

获取到Web平台,数据库的版本信息

web application technology: PHP 5.3.2, Apache 2.2.14

back-end DBMS: MySQL >= 5.0

逐步进行注入获取数据库数据

探测数据库名称

sqlmap -u "http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit#" --cookie="JSESSIONID=0D4AAD047174F9BB879F52FCC4D1F371;PHPSESSID=hbhld9mq5mh86kpk7debh8ot25;security=low" --dbs

获得数据库名称为:dvwa

探测数据库dvma中的表名

sqlmap -u "http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit#" --cookie="JSESSIONID=0D4AAD047174F9BB879F52FCC4D1F371;PHPSESSID=hbhld9mq5mh86kpk7debh8ot25;security=low" -D dvwa --tables

探测数据库dvma中users表的列名

sqlmap -u "http://www.dvssc.com/dvwa/vulnerabilities/sqli/?id=a&Submit=Submit#" --cookie="JSESSIONID=0D4AAD047174F9BB879F52FCC4D1F371;PHPSESSID=hbhld9mq5mh86kpk7debh8ot25;security=low" -D dvwa -T users --columns

使用--dump选项获取数据并拖库

使用sqlmap自带的哈希密码字典对读取到的哈希形式的密码数据进行破译

这样就获取到了Web服务器(10.10.10.129)的www.dvssc.com网站的用户密码数据。

利用上传恶意文件控制web服务器主机

发现还有个可以上传文件的地方

随便上传一个文件后发现回显了存储该文件的相对路径的信息

编写一个PHP payload反弹shell

上传payload到网站上

msf开启监听,等待payload的反向链接

在浏览器上访问上传的payload所在的URL地址,触发PHP脚本使其反弹shell连接回Metasploit。

http://www.dvssc.com/dvwa/hackable/uploads/shell.php

反弹shell连接成功执行命令 uname -a可以看到该web服务器为32位的linux

生成适用于x86 linux 的meterpreter会话恶意程序

上传到web服务器上

打开另一个msf,开启监听本地4445端口用来接收meterpreter会话

在链接好的shell上chmod +x client.elf,并执行该程序

可以看到成功链接上meterpreter 会话

至此成功控制了Web服务器主机,对于web服务器的渗透测试告一段落

【对后台服务器进行渗透】

尝试使用MS17-010进行攻击

在漏洞扫描中有一个名为Microsoft Windows SMB Server Multiple Vulnerabilities-Remote (4013389)的漏洞进过Google查询发现该漏洞就是大名鼎鼎的永恒之蓝MS17-010漏洞。

在msf上搜索ms17-010得到

使用auxiliary/scanner/smb/smb_ms17_010扫描10.10.10.130进一步确认是否有永恒之蓝漏洞

得到后台服务器存在该漏洞,服务器主机为 Windows server 2003 x86

进入exploit/windows/smb/ms17_010_eternalblue查看支持的payload发现都是windows 64位的,并不支持32位的系统,因此使用不了该模块对目标主机进行攻击。

使用exploit/windows/smb/ms17_010_psexec模块对后台服务器10.10.10.130进行攻击

可以看到漏洞利用顺利获得了系统权限也成功上传了payload,成功启动了服务,没能顺利建立meterpreter会话。

还注意到在对10.10.10.130进行端口服务扫描时,其开启了Oracle TNS Listener 10.2.0.1.0 (for 32-bit Windows)服务,从NVD处查询发现存在漏洞NVD - CVE-2009-1979,

出现问题:攻击过程执行成功却没有返回shell,再次执行发现报错,说明之前的攻击应该是有效果的

查看tns_auth_sesskey.rb ,在win2k3metasploitable中使用ollydbg查看oracle汇编

因此可以知道代码的返回地址并没有写错

这里是漏洞利用模块编写buffer的代码,溢出字符串sploit由payload、随机字符、对应版本的返回地址、jmp指令块组成。sploit字符串作为AUTH_SESSKEY的值组成数据包发送出去。有可能是在oracle程序中也有一个AUTH_SESSKEY字符串导致冲突。

在ollydbg中查找字符串AUTH_SESSKEY

查找到三条

可以看到三段指令代码在引用AUTH_SESSKEY后都调用了oracommon10.kpzgkvl,就是oracommon10.dll中的kpzgkvl函数,右键选择follow查看kpzgkvl函数,在该函数起始点F2打下一个断点

F9运行oracle.exe

攻击机运行漏洞利用模块。oracle中断到断点处,按Ctrl+F9运行到函数返回

之后调用的函数的栈为

修改tns_auth_sesskey.rb 生成buffer处代码为

运行后还是不行

试着更换payload 为windows/shell/bind_tcp

运行后成功连上后台服务器

查看服务器主机的关键信息

【对网关服务器进行渗透】

在漏洞扫描时得到存在漏洞DistCC RCE Vulnerability (CVE-2004-2687)

在msf中查找

查看其适合哪些系统

发现其是自动检测目标系统的

执行漏洞利用程序

漏洞利用代码执行时出错

尝试使用别的payload,查看能使用哪些payload

之前搜集端口服务时看到开启了telnet服务尝试使用

payload/cmd/unix/reverse_bash_telnet_ssl

执行成功但会话链接失败

还注意到在漏洞扫描时扫到了有openssl漏洞

尝试使用payload/cmd/unix/reverse_openssl  

成功链接上网关服务器。

至此已经成功获得了DMZ区域的三台服务器主机的控制权,对于DMZ区域的渗透测试告一段落,接下来将通过网关服务器主机进军内网

【对内网WinXP主机进行渗透】

前面对网关服务器进行渗透攻击时得到的是普通的command shell,使用use post/multi/manage/shell_to_meterpreter模块将其升级为meterpreter shell。

先将当前会话挂起并查看会话id

使用use post/multi/manage/shell_to_meterpreter模块将该会话进行升级

可以看到会话列表中多了一个meterpreter会话说明成功升级获得了meterpreter shell

进入meterpreter shell,使用命令run get_local_subnets 查看网关服务器链接了哪些子网

arp发现192.168.10.0/24网段有一个主机192.168.10.128

本地设置访问内网192.168.10.0/24的路由,通过攻击会话2进行路由

使用auxiliary/server/socks_proxy开启代理

选择版本 socks5

修改/etc/proxychains4.conf 添加 SOCKS 5 代理配置

使用proxychains nmap -O -sV -sT -Pn 192.168.10.128对在网关服务器arp表中发现的内网主机进行扫描。

主机

操作系统

主要开放端口

对应服务版本

内网主机

(192.168.10.128)

Windows XP SP3

SMTP(25)

Microsoft ESMTP 6.0.2600.5512

HTTP(80)

Microsoft IIs httpd 5.1

msrpc(135)

?

netbios-ssn(139)

?

https(443)

?

microsoft-ds(445)

Microsoft Windows Xp microsoft-ds

multiling-http(777)

?

msrpc(1025)

Microsoft Windows RPC

X11:2(6002)

?

afs3-callback(7001)

?

使用proxychains运行gvm进行漏洞扫描

创建新用户gvmuser并加入到_gvm用户组,运行命令对192.168.10.128进行漏洞扫描

扫描结果

主机

端口

高危漏洞

CVE

内网主机

(192.168.10.128)

80

Microsoft Internet Information Services (IIS) End of Life (EOL) Detection

445

Microsoft Windows SMB Server NTLM Multiple Vulnerabilities (971468)

MS10-012

CVE-2010-0020

CVE-2010-0021

CVE-2010-0022

CVE-2010-0231

445

Vulnerabilities in SMB Could Allow Remote Code Execution (958687) - Remote MS09-001

CVE-2008-4114

CVE-2008-4834

CVE-2008-4835

445

Microsoft Windows SMB Server Multiple Vulnerabilities-Remote (4013389)  MS17-010

CVE-2017-0143

CVE-2017-0144

CVE-2017-0145

CVE-2017-0146

CVE-2017-0147

CVE-2017-0148

80

Microsoft IIS WebDAV Remote Authentication Bypass Vulnerability

CVE-2009-1535

25

Microsoft Windows SMTP Server DNS spoofing vulnerability

CVE-2010-1690

CVE-2010-1689

首先先尝试一下大名鼎鼎的MS17-010永恒之蓝漏洞

成功连接上meterpreter shell

【后渗透攻击】

【内网主机192.168.10.128】

进入内网主机的meterpreter shell

使用getuid查看,发现已经是system权限。使用sysinfo获取系统信息

使用dumplinks模块获取近期操作和访问记录

使用enum_application模块获取安装软件、安全更新与漏洞补丁

keyscan获取键盘记录,获取该模块开启过程中的键盘记录

开启sniffer嗅探,其功能是对靶机上的指定网卡上的数据进行监听捕获

查看在这段时间捕获到的数据包

使用enum_ie模块获取缓存IE浏览器中的口令

遗憾的是目标主机的IE浏览器等级低于IE7

使用smart_hashdump模块获取系统口令

清除痕迹

【总结与体会】

    在本次基于metasploit的渗透测试中,学习使用metasploit,逐渐领略到了渗透测试的魅力,同时也明白metasploit是渗透测试中的一个强大的工具,其模块化与便捷性能让我这个渗透测试小白也能快速上手。

在渗透测试的过程中也遇到了一些困难,比如在安装gvm时,由于第一次安装使用需要初始化PostgreSQL数据库的,这个初始化是软件自动进行的但不会有明确的提示,而其初始化的流程很长耗时很久,这导致我第一次安装使用时因为其没有初始化完毕导致扫描功能使用不了,那时候我还以为是安装出错了,一直搜寻资料寻找解决办法但一直都没能解决,最终是在gvm官方网站的这一讨论帖子  https://forum.greenbone.net/t/no-scap-database-found-please-help-me/15527/21中的一位用户评论找到了答案,通过“tail -f /var/log/gvm/gvmd.log”就可以知道其正在一步一步初始化重建数据库。

 在使用metasploit的攻击模块时也不是一帆风顺的,很多时候探测出了有这个漏洞但使用对应的漏洞利用模块却不能成功反弹shell 这可能由多种原因组成,如与系统版本不适应等等,能力强者可以通过在靶机一步一步调试,完善漏洞利用代码,让其兼容不同系统版本。

【参考文献】

  1. Metasploit渗透测试魔鬼训练营 (诸葛建伟  陈力波  田繁  孙松柏  等)
  2. Metasploit渗透测试指南(修订版) (David Kennedy 诸葛建伟)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值