我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案。我希望这将至少帮助某人在信息安全领域发展。在本文中,我们利用Json.Net中的漏洞,并了解如何在拥有SeImpersonatePrivilege特权的情况下增加对SYSTEM的特权。通过VPN连接到实验室。建议不要从可用对您重要的数据的工作计算机或主机进行连接,因为您将与知道信息安全领域知识的人进入专用网络:)组织信息, - , :
- PWN;
- (Crypto);
- c (Network);
- (Reverse Engineering);
- (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
情报服务
这台机器的IP地址为10.10.10.158,我将其添加到/ etc / hosts中。10.10.10.158 json.htb
首先,我们扫描开放端口。由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。我们以每秒500个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。masscan -e tun0 -p1-65535,U:1-65535 10.10.10.158 --rate=500
接下来,您需要收集有关已知端口的更多信息。为此,将nmap与-A选项一起使用。nmap json.htb -p49156,49154,49152,47001,80,137,49153,139,49155,135,445,49158,5985,6666,21
现在,有关在端口上运行的服务的更多详细信息,我们将使用-A选项运行扫描。nmap -A json.htb -p80,139,135,445,5985,6666,21
让我们去看看网上有什么。结果,页面加载,然后才将我们扔到授权页面。
我们可以解决这个问题,但是admin:admin允许我们登录。
网站本身没有任何有趣的东西,为了找到至少一些东西,我们坚持使用cookie。
解码Base64。echo "eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZG1pbmlzdHJhdG9yIn0=" | base64 -d ; echo
即,密码值是管理员密码中的MD5。
此外,没有什么有趣的。通过打开Burp并拦截请求,您可以找到一个有趣的HTTP标头。
在此阶段,我一直挂着直到被告知要“打破含义”。显然,在这种情况下,您需要犯错误并以三种状态观察API的反应:真,假和错误。但是由于某种原因我错过了。入口点
然后发现,如果在奇怪的HTTP标头中传输了损坏的数据(删除了一些字符),则服务器会给出错误消息。下面是服务器返回的带有正常标头值并删除了1-4个字符的数据。
在后一种情况下,我们会得到一个有趣的错误。由于JSON对象已停用,因此我们可以使用ysoserial来利用它。我们将使用Json.Net的ObjectDataProvider小工具并执行ping命令来验证漏洞假设。
现在,使用带有ICMP协议过滤器的tcpdump来捕获ping。
拦截请求时,我们更改标题。
然后我们得到了命令的ping。
用户
现在,您需要对负载计执行相同的操作。首先,我们生成一个负载并打开一个监听器。
现在,打开将从其开始加载的本地SMB服务器。
现在,我们再次序列化必要的数据,作为命令,我们从服务器启动加载。
我们看到与SMB服务器的成功连接以及成功加载的Meterpreter会话。
并读取用户文件。根
首先,我们查看有关我们工作的用户的信息。
用户启用了SeImpersonatePrivilege特权(“身份验证后模拟客户端”权限)。正如微软所说:向用户分配“身份验证后模拟客户端”权限,可以代表该用户启动的程序模拟客户端。使用此参数可防止未经授权的服务器模拟使用RPC过程或命名管道连接到这些服务器的客户端。
事实是我们可以提高对SYSTEM的权利。完整的研究可以在这里找到。以下特权受此漏洞影响:- 个人特权
- SeAssignPrimaryPrivilege
- Setcb特权
- SeBackup特权
- SeRestore特权
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnership特权
- SeDebugPrivilege
让我们生成另一个负载并为其运行侦听器。
操作时,我们将使用多汁土豆。但是作为参数,您需要指定目标系统帐户的CLSID,我们也将从存储库中获取它。但是首先,让我们看看什么样的系统。
现在我们来看一下CLSID。
将文件上传到目标主机。
现在运行Juicy Potato,并告诉它如何创建进程(CreateProcessWithTokenW或CreateProcessAsUser,参数-t),进程文件(-p),侦听端口(-l)和CLSID(-c)。
该过程已成功创建,我们将看到已创建的metterpreter会话。
然后我们获得了SYSTEM帐户。您可以通过电报加入我们。让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全性问题上互相帮助。