VulnHub DC-2WordPress 弱口令爆破 与 Git SUDO 提权前言1. 信息收集1.1 攻击机网段确认1.2 存活主机探测1.3 全端口与服务版本扫描1.3.1 端口开放统计1.3.2 扫描阶段结论1.3.3 扫描命令精简与输出优化1.4 Web服务指纹识别1.4.1 域名绑定与页面直观验证1.4.2 Wappalyzer技术栈探测结果1.4.3 Nmap脚本扫描信息佐证1.4.4 WhatWeb工具指纹佐证1.4.5 站点目录爆破探测1.5 版本精确探测与漏洞预判2. WordPress漏洞利用2.1 枚举站点有效用户名2.2 使用 cewl 生成专属字典2.3 WPScan弱口令爆破WP后台2.4 后台人工线索挖掘2.5 SSH登录靶机服务器2.6 本阶段黑盒整体思路总结3. 本地权限提升3.1 SSH 登录目标服务器3.2 探测受限rbash并执行逃逸3.2.1 rbash基础概念3.2.1 测试发现受限rbash3.2.3 利用vi直接读取flag文件3.2.4 rbash完整逃逸操作3.3 su切换jerry用户3.4 探测sudo权限利用Git工具提权至Root4. DC-2 完整闯关总结声明前言DCDirty Cow系列是 VulnHub 上最经典的入门到进阶靶场之一覆盖了 Web 漏洞利用、CMS 攻防、Linux 本地提权、内网信息收集等核心渗透场景是打牢渗透测试基础的必刷系列。本专栏将逐台拆解 DC-1 至 DC-9 全部靶机每篇聚焦核心漏洞原理 完整攻击链路 多种提权思路拒绝一键梭哈式 WriteUp力求讲透每一步的底层逻辑。DC-2 作为系列第二篇核心考点从框架 RCE 转向了更贴近真实环境的配置失误链重点集中在WordPress CMS 指纹识别与用户枚举cewl 站点关键词爬取与专属密码字典生成wpscan 弱口令爆破原理与实战利用rbash 受限 Shell 逃逸原理与多种绕过路径Linux sudo 权限滥用与 git 命令交互式提权横向移动tom → jerry的内网渗透思路构建阅读前置 具备基础 Linux 命令、SSH 基本使用、Web 渗透概念即可文中所有步骤均附详细命令与原理说明。1. 信息收集1.1 攻击机网段确认黑盒测试第一步先明确自身攻击机所在网段确保后续扫描范围准确。Kali攻击机执行ipaddr show eth0输出关键段确认攻击机IP为192.168.200.131子网掩码/24靶机与攻击机同处VMware NAT网络目标扫描范围锁定192.168.200.0/24整个C段。为什么先确认网段黑盒场景下不预设靶机IP必须先明确自身所在网络边界避免扫错网段或遗漏目标这是渗透测试信息收集的标准第一步。1.2 存活主机探测网段确认后优先做二层ARP存活扫描。相比ICMP ping扫描ARP扫描直接走数据链路层不受靶机防火墙禁ping规则影响漏扫率更低是局域网寻靶首选方式。执行扫描命令arp-scan-l本机网卡 eth0攻击机 IP 192.168.200.131扫描网段 192.168.200.0/24。两条权限警告仅无法识别硬件厂商不影响主机探测可直接忽略。ARP 扫出 4 台在线设备网关192.168.200.1、VM 虚拟网卡192.168.200.2、目标DC-2 192.168.200.133、DHCP 地址192.168.200.254。nmap交叉验证nmap-sn192.168.200.0/24扫描共5台存活主机含本机设备MAC与arp扫描完全对应确定靶机IP192.168.200.133。1.3 全端口与服务版本扫描黑盒场景不预设任何端口必须全量扫描1-65535所有端口。DC-2的SSH就跑在非常规的7744端口如果只扫默认22端口会直接漏掉远程管理入口。1.3.1 端口开放统计分两步走先全端口快速扫出开放端口再针对开放端口做深度版本探测兼顾速度与精度。第一步全端口快速扫描nmap -p--T4--open192.168.200.133参数说明-p-扫描1-65535全部端口-T4扫描速度等级4平衡速度与隐蔽性--open只输出开放端口过滤filtered/closed状态减少刷屏靶机仅开放80、7744两个端口攻击面集中80为Web服务作为首要突破入口7744非常规端口待深度扫描确认服务下一步执行带版本探测的深度扫描命令nmap -p 80,7744 -sV -sC 192.168.200.133第二步开放端口深度版本探测nmap-p80,7744-sV-sC192.168.200.133参数说明-sV探测服务版本号-sC调用默认安全脚本补充服务信息深度扫描结果1.3.2 扫描阶段结论端口服务信息汇总表端口服务版本关键情报80/tcpApache HTTP2.4.10 (Debian)访问IP自动跳转域名dc-2裸IP无法正常加载站点7744/tcpOpenSSH6.7p1 Debian 5deb8u7非常规SSH端口修正初次扫描raqmon-pdu误识别支持SSH协议2.0配套文字分析系统判定两款服务均标注Debian发行版结合SSH版本可判断靶机为Debian 8 Jessie系统。攻击面优先级80端口Web服务入口更多作为首要渗透路径7744端口SSH作为后续远程接入备选。前置操作提示Web站点依赖域名解析下一步必须修改本地hosts绑定192.168.200.133 dc-2才能完整探测WordPress站点。设备校验MAC地址00:0C:29:82:62:BC和ARP存活扫描结果一致目标IP无偏差。1.3.3 扫描命令精简与输出优化全端口扫描默认输出大量filtered状态的端口容易刷屏干扰视线优化方案方案1–open 参数推荐nmap -p--T4--open192.168.1.105只显示状态为open的端口结果干净直观适合快速定位。方案2grep 过滤nmap -p--T4192.168.1.105|grepopen用grep提取含open的行效果与–open类似。方案3输出到文件 静默模式nmap -p--T4-oN/home/kali/Desktop/dc2_port.txt192.168.200.133cat/home/kali/Desktop/dc2_port.txt|grepopen扫描结果保存到文件便于后续回溯查阅渗透测试推荐养成保存扫描结果的习惯。此处我习惯于保存到桌面便于查找你们可以自定义1.4 Web服务指纹识别80端口直接访问IP会302跳转到http://dc-2/报错为DNS_PROBE_FINISHED_NXDOMAIN本地没有DNS解析导致页面加载失败。这是DC-2的第一个坑必须先解决域名绑定问题才能继续Web探测。1.4.1 域名绑定与页面直观验证Linux(Kali)绑定方式echo192.168.200.133 dc-2/etc/hosts验证绑定ping-c1dc-2Windows系统绑定方式用管理员身份打开记事本打开路径C:\Windows\System32\drivers\etc\hosts在文件末尾添加一行192.168.200.133 dc-2保存文件CMD内验证解析ping -n 1 dc-2参数说明Windows ping用-n 1替代Linux的-c 1代表仅发送1个数据包自动停止。原理说明Windows无root权限直接修改hosts会保存失败必须右键记事本选择「以管理员身份运行」再编辑。返回192.168.200.133说明解析成功。浏览器访问页面正常加载直观特征识别页面底部显示Proudly powered by WordPress初步判定站点为WordPress CMS使用默认主题twentyseventeen。为什么要绑定hosts部分CMS配置了站点域名直接用IP访问会触发跳转或资源加载失败导致指纹识别不准确、目录扫描漏报。渗透测试中遇到域名跳转第一时间绑定hosts是标准操作。第一个flag这个时候就出来了此处的暗示Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.常规通用密码字典rockyou等爆破成功率低不能直接拿来用点名工具cewl爬取当前网站页面文字自动生成专属自定义密码字典用本站关键词做爆破词库。More passwords is always better, but sometimes you just can’t win them all.单纯堆大量密码也不一定能跑出全部账号靶机存在多名用户部分账号密码复杂度高无法一次性全部爆破成功。Log in as one to see the next flag.至少成功爆破任意一名WP用户登录后台就能拿到第二面Flag。If you can’t find it, log in as another.站点存在多个有效用户名单一账号爆破失败就换其他用户尝试。1.4.2 Wappalyzer技术栈探测结果浏览器Wappalyzer插件一键识别技术栈结果汇总打开http://dc-2后使用Wappalyzer插件探测页面识别到站点完整技术栈CMS系统为WordPress配套默认主题Twenty SeventeenWeb服务端运行Apache HTTP Server 2.4.10后端编程语言为PHP服务器操作系统Debian配套数据库MySQL前端引入jQuery 1.12.4、jQuery Migrate 1.4.1、Google Font API站点支持RSS订阅。1.4.3 Nmap脚本扫描信息佐证用nmap的http-wordpress-enum脚本做辅助验证从服务端角度确认WordPress特征nmap-p80--scripthttp-wordpress-enum --script-args http-wordpress-enum.search-scopefull192.168.200.1331.4.4 WhatWeb工具指纹佐证执行探测命令whatweb http://dc-2工具返回站点完整指纹信息页面状态码200Web服务为Apache 2.4.10服务器系统Debian Linux页面Meta生成器字段直接读取到WordPress 4.7.10页面标题标注DC-2靶机标识识别出jQuery 1.12.4前端库页面基于HTML5构建存在PoweredBy[WordPress]标识再次确认站点基于WordPress搭建。通过WhatWeb终端扫描无需人工查看页面源码直接提取出精确WP版本与Wappalyzer、Nmap脚本扫描结果三方交叉验证CMS版本信息完全吻合。1.4.5 站点目录爆破探测使用dirsearch对站点做目录扫描挖掘后台入口、备份文件、敏感目录、配置文件等dirsearch-uhttp://dc-2-ephp,txt,zip,bak,sql-x403,404-t30参数说明-e php,txt,zip,bak,sql指定扫描的后缀名覆盖常见备份、脚本、数据库文件-x 403,404排除403、404状态码减少干扰-t 3030线程平衡速度与稳定性扫描关键结果扫描返回关键路径结果可直接访问页面文件/license.txt、/readme.htmlWordPress核心后台路由/wp-admin301重定向、/wp-login.php登录核心入口资源目录/wp-content/存放站点主题与插件插件相关脚本/wp-content/plugins/akismet/akismet.php、hello.phpWP后台功能文件/wp-admin/admin-ajax.php出现500报错页面/wp-config.php无法直接读取配置内容。访问/wp-admin发现了登录入口1.5 版本精确探测与漏洞预判通过页面源码、readme.html、WhatWeb三方交叉验证确认站点使用WordPress 4.7.10该版本发布时间较早存在多处可利用风险结合黑盒探测到的资产梳理攻击路径漏洞风险分级攻击路径实施成本优先级说明WordPress后台弱口令爆破低★★★★★站点无登录次数限制、无验证码页面提示需用cewl抓取站点文本生成专属字典爆破存在多名有效用户成功登录即可获取下一Flag插件/主题漏洞利用中★★★☆☆Nmap枚举到akismet 3.3.2、twentyseventeen 1.2等组件可检索对应版本漏洞WordPress 4.7核心漏洞高★★☆☆☆4.7系列存在REST API用户枚举、XSS等漏洞可辅助获取用户名但直接拿权限难度高SSH端口暴力破解中★★★☆☆7744端口开放SSH需先从WP内拿到系统用户名才可爆破渗透流程结论页面明确提示常规字典无效必须使用cewl爬取网站内容生成专属词库配合WPScan枚举全部用户名开展WordPress后台弱口令爆破是当前最直接、成功率最高的攻击手段。2. WordPress漏洞利用2.1 枚举站点有效用户名黑盒下不知道站点存在哪些登录账号无法直接爆破WordPress对外会暴露作者、文章作者接口工具可批量爬取全部有效用户名。完整枚举用户名生成日志到当前目录其实也可以不用导出wpscan--urlhttp://dc-2--enumerateu--outputuser.txt作用收集全部可用账号避免盲猜用户名缩小爆破范围。wpscan已成功枚举出 3 个有效用户名admin、jerry、tom。接下来按计划进行后台爆破。2.2 使用 cewl 生成专属字典根据靶机提示常规字典无效需要用cewl从站点内容中抓取单词构建密码列表。cewl http://dc-2-wdictionary.txt这是简单命令如果需要更深的就用下面的命令cewl http://dc-2-d2-m3-w/home/kali/dictionary.txt参数说明-d 2爬取深度 2 层可适当增大如-d 3-m 3单词最小长度 3过滤太短的词-w输出文件路径如果字典条目较少比如只有几十行可尝试增加爬取深度或加上-e收集邮箱名cewl http://dc-2-d3-m3-e-w/home/kali/dictionary.txt查看字典大小wc-l/home/kali/dictionary.txt2.3 WPScan弱口令爆破WP后台黑盒探测发现/wp-login.php无验证码、无登录锁定是最低成本的突破口页面提示只要登录任意一个用户就能拿到下一个线索。wpscan--urlhttp://dc-2/--passwordspasswd.txt这个时候耐心的等待就好了执行这条命令时WPScan 内部流程是固定的先自动执行用户枚举等价于-e u扫描网站拿到admin、jerry、tom3个真实用户拿着这3个识别到的账号遍历你的passwd.txt字典爆破全程不需要你提前导出、手动传入user文件工具自动识别站内真实用户。最后可以得到账号密码爆破成功两组有效凭证jerry:adipiscingtom:parturient2.4 后台人工线索挖掘登录账号看到这个页面http://dc-2/wp-admin/post.php?post21actioneditpage里面有flag2含义WordPress 后台这条路线拿不到完整靶机 root / 最终 flag只是中间线索提示你不能只卡在 WP 渗透需要去寻找网站其他入口、漏洞、服务WP 只是一条分支捷径真正通关需要换别的攻击面。2.5 SSH登录靶机服务器前期Nmap扫描发现7744端口SSH开放Web层仅为前置入口真正靶机核心Flag、系统权限都在服务器本地。ssh用户名192.168.200.133-p7744作用进入目标操作系统开启本地提权阶段。2.6 本阶段黑盒整体思路总结攻击优先级最低弱口令爆破无需复杂漏洞利用仅靠外部探测即可实施所有操作全部依托对外暴露的80端口Web服务全程不接触后端源码、数据库严格跟随页面给出的提示cewl、多用户登录不预设靶机内部信息完全符合黑盒渗透思路链路闭环端口扫描→域名解析→Web指纹→目录扫描→用户枚举→自定义字典爆破→后台拿SSH账号→登录服务器循序渐进。3. 本地权限提升3.1 SSH 登录目标服务器通过SSH自定义端口7744以jerry用户连接靶机sshjerry192.168.200.133-p7744利用jerry账号登陆失败我们再试试tom账号sshtom192.168.200.133-p7744使用 tom 账号成功通过 SSH 接入靶机服务器此时我们正式进入服务器内网环境开始本地权限提升环节逐层突破权限限制获取最高 root 权限。3.2 探测受限rbash并执行逃逸3.2.1 rbash基础概念rbash全称Restricted Bash即受限Bash是Linux自带的限制型Shell环境管理员通过修改登录配置限制用户操作范围常见约束规则重置、大幅缩减PATH环境变量大量系统命令cat、su、sudo等无法调用禁止切换工作目录cd失效、禁止修改PATH、禁止执行带路径的程序无法执行包含/的命令、无法重定向文件输出仅保留少量基础程序本靶机放行vi编辑器可供运行。3.2.1 测试发现受限rbash登录tom用户后执行探测命令ls列出目录存在flag3.txt尝试读取文件catflag3.txt返回报错-rbash: cat: command not found由此确认当前会话处于rbash受限环境PATH被裁剪外部工具cat无法使用。3.2.3 利用vi直接读取flag文件rbash未禁用vi编辑器可直接打开文件绕过cat命令读取线索viflag3.txt查看完成后输入:q退出编辑器。这里拿到flag3可怜的 Tom 一直追着 Jerry 跑或许他应该切换到 Jerry 用户来缓解这份压力。这里发现su的权限也不够所以优先还是逃逸3.2.4 rbash完整逃逸操作仅靠vi查看文件无法执行切换用户、提权等操作需要通过vi内置shell完全脱离受限环境打开vi编辑器vi进入vi后先按:进入vi末行模式输入第一行:set shell/bin/bash回车执行仅修改vi调用的shell程序再次输入:输入第二条指令:shell回车弹出独立bash窗口。重置PATH环境变量恢复全部系统命令exportPATH$PATH:/bin:/usr/bin此时rbash限制全部解除可正常使用su、sudo、cat等指令。3.3 su切换jerry用户完成rbash逃逸并修复PATH环境变量后根据flag3.txt线索执行切换用户操作输入jerry账号密码adipiscing完成身份切换。sujerry切换成功后当前工作目录仍停留在tom家目录执行ls查看文件时提示权限不足无法访问tom目录内容。ls# 报错ls: cannot open directory .: Permission denied使用pwd确认当前路径为/home/tom手动切换至jerry自身家目录cd/home/jerry进入jerry家目录后执行ls发现存在flag4.txt线索文件为后续提权操作提供提示。这里发现了flag4.txt使用cat读一下Go on - git outta here!!!!是双关git指系统git程序get outta here谐音暗示借助git工具完成提权跳出jerry普通用户权限拿到root。无额外文字线索黑盒下需要手动查询sudo权限配置确认jerry可免密执行git命令以此作为root提权突破口。3.4 探测sudo权限利用Git工具提权至Root读取flag4.txt后得到线索提示Go on - git outta here!!!!字面谐音暗示借助git程序完成权限提升黑盒渗透思路下先查询当前用户可执行的sudo权限。执行命令查看jerry用户sudo授权配置sudo-l结果解读(root)代表执行该程序时身份为rootNOPASSWD无需输入密码即可运行/usr/bin/gitjerry拥有免密以root身份运行git工具的权限。确认jerry可免密执行git程序使用分页参数-p打开git帮助面板利用分页器逃逸获取root shellsudogit-phelpconfigsudo以root权限运行后面的git程序根据sudo -l结果jerry执行这条不需要输入密码。git调用git工具该程序被赋予root免密权限是本次提权核心载体。-p全称--paginate分页参数作用git输出帮助文档过长时会调用系统分页器less逐行展示内容不会一次性刷屏。help config查看git config配置模块的完整帮助手册输出内容量极大一定会触发分页器。进入分页界面后输入以下指令直接弹出root交互终端!/bin/bash成功获取root最高权限进入/root目录读取系统最终flag文件。4. DC-2 完整闯关总结本次对DC-2靶机采用黑盒渗透思路完成完整攻陷整体流程分为三层Web层入口、服务器SSH接入、本地权限提升。Web信息收集环节通过扫描发现站点为WordPress使用WPScan黑盒爆破账号密码成功拿到tom、jerry两组账号凭证得到SSH登录可用凭据Flag2。SSH接入服务器黑盒下先测试jerry账号SSH登录失败更换tom账号成功接入但登录后为rbash受限shellPATH环境变量被裁剪cat等基础命令失效利用系统未禁用的vi编辑器先读取flag3获取切换用户线索再通过vi内置shell功能完整脱离rbash限制。本地横向移动与权限提升根据flag3提示执行su jerry切换用户读取flag4得到git相关提权线索执行sudo -l探测权限确认jerry可免密以root运行git借助git -p唤起less分页器使用!/bin/bash逃逸获取root最高权限最终拿到系统终极Flag。漏洞要点总结4. Web端WordPress弱口令漏洞泄露服务器登录凭证为外网打通服务器访问入口5. rbash受限shell存在逃逸缺陷系统自带编辑器vi可派生纯净bash环境突破路径限制6. sudo权限配置不当普通用户可免密以root运行git结合less分页器内置执行shell功能实现本地提权至root。声明本文仅用于本地自建靶机DC-2安全学习、技术复盘文中涉及的漏洞利用、权限逃逸、提权操作等技术手段仅允许在自己拥有完全授权的实验环境中操作。严禁未经授权对任何公网服务器、他人设备实施扫描、渗透、提权等测试行为私自开展未授权网络攻击将触犯《网络安全法》等相关法律法规由此产生的一切法律责任由行为人自行承担。