风萧萧兮易水寒,壮士一去兮不复还。 —— 佚名《荆轲歌.渡易水歌》
一、信息收集
在不知道目标靶机的情况下,我们先来个主机发现,我们这里使用nmap来进行:
排除掉常用的那些IP,剩下了就是我们的靶机IP了,然后继续使用nmap进行端口扫描,发现只开放了SSH和http服务:
访问目标靶机的web服务,根据wappalyzer收集到的信息显示,目标系统使用的CMS是Drupal8:
二、外围打点
既然基本的信息收集已经有了,那就先上神器xray进行漏洞扫描但是除了扫描出几个文件来,其他毫无所获。
无果,只能回到目标网页,更具提示内容显示,这个靶机使用了新的概念,尝试使用爆破的方式可能不会成功,所以确实的考虑一下新的手法了:
考虑到我们的信息收集其实并不全面,所以尝试收集一些新的信息,比如通过社工。
我们看到,靶机作者是DC7USER。我们上google搜索看看,发现存在一个github账户和一个Twiter账户:
我们先看看github账户,发现上面存储有DC7的一部份源码:
我们把源码下载下来,在config.php中找到了数据库的用户名和密码:
我们回想到目标靶机开放了22端口,所以试运气看看是否能使用此账号进行登录,结果运气不错,成功登录到了目标靶机:
三、权限提升
既然已经拿到了我们的普通权限的shell了,那提权当然是必不可少的了。根据登陆时的提示,我么有一封新的邮件:
查看一下邮件内容,发现是一个计划任务的执行信息,该计划任务时呗root执行的,使用的脚本时/opt/scripts/backups.sh。
我们查看一下这个脚本的内容,发现该脚本的作用是备份数据库内容:
再查看一下这个脚本的权限信息,发现该脚本可以被www-data用户修改,也就是说,只要我们拿到一个webshell,然后修改一下脚本内容,就可以等root用户执行计划任务时get一个root的设立了了。
我们拿着登陆系统的账号上web上进行登陆,发现登陆失败。回过头来想到计划任务执行的脚本是备份数据库,所以我们可以看看数据库中保留的找账号信息。
再查看的时候,我们发现数据库备份文件是被加了密的,好在我们再脚本中找到了加密密钥:
使用gpg进行解密,然后吧备份文件下载到本地进行查看,成功找到了账号相关的信息:
不过尝试解密加密的密码,在多个平台都未能成功。回过头来再看,我们的计划任务中有利用到drush,这是一个drupal的命令行shell,可以对drupal进行命令行操作。百度得到结果,发现可以直接用命令行改账户密码。nice!!!.
更改了账号的密码后,我们成功登陆后台,尝试找了各处可以getshell的利用点,没有可以getshell的地方,此处陷入僵局,看了看wp,发现需要安装一个插件包才能getshell,草了。
安装好之后,要启用我们的插件才行,不然没用:
开启了php编辑插件,那我们就回到文档编辑的地方,写入我们的php木马,使用菜刀进行连接:
菜刀连接上之后,成功得到一个www用户的shell,于是我们想sh脚本文件中写入nc命令,等待计划任务执行就可以get一个root的设立了了。
监听好端口,等了一会,成功get到root 的shell.