砍箱子。JSON演练。通过SeImpersonatePrivilege的Json.Net和LPE中的漏洞

图片

我将继续发布从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和信息安全性问题上互相帮助。

All Articles