• Vulnhub | DC: 7 |【实战】


    写在前面

    靶场链接:
    https://www.vulnhub.com/entry/dc-7,356/

    DC系列,有些知识点在DC:1中提到,可以翻阅

    DC:1

    信息搜集

    首先进行存活扫描
    在这里插入图片描述
    185为攻击目标,61为网关,141为物理机,115为攻击机

    端口及服务详情扫描,发现有8022端口
    在这里插入图片描述
    先查看一下80端口的网页,指纹非常明显,在DC1也是类似的界面,指纹是Drupal cms
    在这里插入图片描述
    作者给了一段话

    翻译:

    DC-7引入了一些“新”概念,但我将留给你们去弄清楚它们是什么
    虽然这个挑战并不完全是技术性的,但如果你需要诉诸暴力或字典攻击,你可能不会成功。
    你要做的是跳出框框思考。
    “在”盒子外。:-)
    
    • 1
    • 2
    • 3
    • 4

    在不知道DC1的信息的前提下,可以用以下方法确定版本和指纹。

    查看源代码meta标签中显示是Drupal 8
    在这里插入图片描述
    直接使用工具也可以(在谷歌商店查询该工具即可)
    在这里插入图片描述
    按照通常思路来说,此时就应该利用查到的指纹先查看是否有现成的pocexp。查询后是有的,在8版本以上的就是geddon2REST Module RCE
    在这里插入图片描述
    首先尝试之前在DC1中就使用过的geddon2 poc 。因为msf中直接有该poc(详情见DC1),我们就再次利用一下试试。并不能成功,可能是做了修补或者版本高于利用版本
    在这里插入图片描述
    接下来继续尝试一下适用于更高版本的poc

    尝试 drupal8 rest rce 编号为:cve-2019-6340 drupal8 rest rce

    详情可见以下链接

    CVE-2019-6340

    手动测试poc
    在这里插入图片描述
    在这里插入图片描述
    这里服务器响应为text 没有json模块 行不通

    社工

    直接使用现成的poc似乎有些困难,难道我们只能去找更多的poc了么?是否还能从其他角度来撕开口子?

    这也是作者提到的“跳出盒子思考”

    仔细观察页面可以发现,和之前DC1不同的地方在于下面有了一个用户名。在国外带@一般都是指用户名,在twitterins等都是如此,可能需要一点经验,判断出这里是一个用户名。
    在这里插入图片描述
    将这个用户名放在谷歌上查一下,果然查到了twittergithub等平台信息。

    twitter上写着“this is a twitter account for DC-7 challenge”,看来找对地方了
    在这里插入图片描述
    查看一下twitter并没有什么东西,继续看看github
    在这里插入图片描述
    打开后,是网站源代码,包括数据库连接等等脚本。简单代码审计一下,查看登录口,上传点等等,有没有明显的漏洞
    在这里插入图片描述
    这里简单说一下这里的登陆点问题,只能说加了单引号,免去了这个点的漏洞。并不是使用mysqli_real_escape_string()就是绝对安全的。
    如果是以下情况仍然可以攻击。
    在这里插入图片描述
    最后在配置文件中找到一些敏感数据。
    在这里插入图片描述
    尝试登录吧,ssh和后台都试一试。

    ssh直接就进了
    在这里插入图片描述

    提权

    查看当前有些什么,一个backups,打开就是备份文件,一个mbox,是信件,打开后可以发现是root发来的
    在这里插入图片描述
    查看信件内容
    在这里插入图片描述
    后面还有很多相似的,从Subject那一行可以看出:

    简单来看,这里写了一个计划任务并执行,执行脚本在 /opt/scripts/backups.sh(注意是root权限执行的)

    阅读一下那个脚本
    在这里插入图片描述
    看起来就是删除之前的备份,重新打包备份后再对备份文件使用gpg工具加密。

    这里对sql导出时,使用了一个drush命令,经查询得知,这是drupal的专用命令行工具
    在这里插入图片描述
    查看一下文档
    在这里插入图片描述
    继续查看,这里可以看到对用户的操作有以下这些
    在这里插入图片描述
    显然,user-password这个命令非常令人兴奋,它可以重设指定名字的密码,但是直接执行提示需要一个more functional drupal environment

    在这里插入图片描述
    运行的环境不对,结合前面邮件内容,我们也在相同的目录下进行运行,成功了,帮助选项如下

    在这里插入图片描述
    但是用户名应该是什么呢,这里就进行一个弱口令碰撞,发现是admin
    在这里插入图片描述
    更改一个密码后,就可以登录了,登录成功。

    接下来,就是后台RCE了,后台RCE一般就是文件上传点,模板文件。查看了一下,没咋看到模板,网页编辑器也比较严格
    在这里插入图片描述
    这里是网友们的思路,在drupal插件库中,有允许代码执行的插件,链接如下:

    https://www.drupal.org/project/php # 插件下载地址
    https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz #模块包

    在这里插入图片描述
    下载后要安装,记得点一下这里
    在这里插入图片描述
    安装并开启即可
    在这里插入图片描述
    接下来,就可以在Text format选项中选择php选项,先随便写一个代码执行测试
    在这里插入图片描述
    测试成功
    在这里插入图片描述
    上马
    在这里插入图片描述
    连接木马
    在这里插入图片描述
    成功,获得www权限
    在这里插入图片描述
    反弹出来后想办法继续提权,查看之前以root权限执行的脚本,可以看到,www是具有可写权限的
    在这里插入图片描述
    写上反弹shell,注意在这里并不是执行该脚本,虽然当前www用户具有执行权限,但是以www用户身份执行仅反弹www权限用户身份。前面已经提到这个文件已经写了计划任务,也就是计划任务执行时才是root权限,所以等待一段时间就可以了
    在这里插入图片描述
    反弹成功,获得flag
    在这里插入图片描述

  • 相关阅读:
    擎创技术流 | 深入浅出运维可观测工具(三):eBPF如何兼容多架构模式性能管理
    【Markdown】
    C++函数模板
    qt_vs_tools 设置
    循环神经网络和自然语言处理一
    化学制品制造业智慧供应商管理系统深度挖掘供应商管理领域,提升供应链协同
    【密码学篇】虚拟专用网技术原理与应用(商密)
    解决一进页面就会触发trigger: “change“表单校验问题
    八、class 与 style 绑定(1)
    LeetCode 41. 缺失的第一个正数
  • 原文地址:https://blog.csdn.net/bin789456/article/details/125752642