1. 项目概述一次完整的权限提升之旅最近在VulnHub上看到一个挺有意思的靶机叫Momentum。光看名字可能觉得平平无奇但它的渗透路径设计得相当有层次感完美地串联了从Web前端漏洞到最终系统Root权限获取的完整链条。这可不是那种简单扫个端口、爆个弱口令就能拿下的机器它需要你像剥洋葱一样一层层地揭开它的防御。核心路径就是从一道经典的跨站脚本攻击入手逐步深入最终拿到那枚象征着最高权限的“旗帜”。对于想系统练习渗透测试中不同阶段技术衔接的朋友来说这台靶机是个绝佳的沙盒。我自己在实战演练的时候感觉整个过程就像在解一个设计精巧的谜题。它没有故意设置那些偏门、冷僻的漏洞而是聚焦于实战中高频出现但组合利用起来又颇具挑战的技术点。你需要用到信息搜集、漏洞扫描、漏洞利用、权限提升等一系列技能。无论你是刚入门渗透测试的新手想看看一个完整的流程长什么样还是有一定经验的老手想磨练一下自己的漏洞串联和纵深突破思维Momentum都能给你带来实实在在的收获。接下来我就把自己从头到尾拿下这台靶机的详细过程、踩过的坑以及一些思考完整地分享出来。2. 环境准备与信息搜集2.1 靶机与攻击机环境搭建工欲善其事必先利其器。第一步肯定是把环境准备好。Momentum靶机的镜像可以从VulnHub官网下载导入到你的虚拟机软件里就行我用的VMware Workstation。这里有个小细节要注意靶机的网络模式最好设置为“桥接模式”或者和你的攻击机在同一“NAT网络”下。我一开始图省事用了默认的NAT结果扫描时发现IP段不对折腾了半天。设置为桥接后Kali和靶机就在同一个局域网里了互访起来最方便。攻击机我用的自然是渗透测试的“瑞士军刀”——Kali Linux。确保你的Kali是最新版本并且更新了软件源sudo apt update sudo apt upgrade -y。这不是必须的但能避免一些工具因版本过旧而报错的问题。准备好之后先别急着扫描第一件事是确定靶机的IP地址。因为虚拟机每次启动获取的IP可能不同。我常用的方法是先用netdiscover进行主动ARP扫描sudo netdiscover -r 192.168.1.0/24请将192.168.1.0/24替换成你实际的内网网段。扫描结果中除了你熟悉的设备比如你自己的电脑、路由器那个陌生的、主机名可能带有“Momentum”或类似字样的IP就是我们的目标了。假设我们找到的靶机IP是192.168.1.105。2.2 全方位信息搜集策略拿到IP后切忌直接上漏洞扫描器狂轰滥炸。有节制、分层次的信息搜集是专业渗透与“脚本小子”的区别。我的搜集流程一般是端口服务 - Web技术栈 - 目录结构 - 其他服务信息。首先使用nmap进行全端口扫描并尝试识别服务版本和操作系统。sudo nmap -sS -sV -sC -O -p- 192.168.1.105 -oN nmap_full.txt-sS: SYN半开放扫描速度快且相对隐蔽。-sV: 探测服务版本。-sC: 使用默认的Nmap脚本进行更深入的探测。-O: 尝试识别操作系统。-p-: 扫描所有65535个端口。-oN: 将结果输出到文件方便后续查看。扫描结果通常是渗透的“地图”。对于Momentum我们大概率会看到类似这样的输出PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.41 3306/tcp open mysql MySQL 5.5.5-10.1.44-MariaDB这里已经揭示了关键信息开放了SSH、HTTP和MySQL端口。Web服务80端口是我们的首要入口点。SSH和MySQL则可能在后期的横向移动或权限提升中发挥作用。接下来针对HTTP服务我们要进行更细致的Web信息搜集访问网站直接用浏览器打开http://192.168.1.105看看是什么应用有什么功能用的什么技术比如查看页面源码看是否有Powered by XXX的注释。目录爆破使用gobuster或dirb寻找隐藏的目录或文件。gobuster dir -u http://192.168.1.105 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,js,bak这个步骤可能会发现后台登录页面如/admin、配置文件如/config.php.bak、备份文件等。子域名枚举如果主站没什么发现可以尝试寻找虚拟主机或子域名不过对于这种CTF靶机通常主站就是核心。技术指纹识别使用whatweb或浏览器插件如Wappalyzer快速识别网站使用的技术比如PHP版本、框架如ThinkPHP、SpringBoot、中间件如Apache、Nginx等。注意在真实环境中信息搜集的广度和深度要依据测试范围和时间来定。在靶场里我们可以做得更彻底些。所有搜集到的信息最好用笔记软件或keepnote这样的工具记录下来形成你的“作战地图”。3. 漏洞发现与利用XSS作为突破口3.1 定位输入点与XSS漏洞验证在对Momentum的Web应用进行一番探索后我们很可能发现一个存在用户交互的功能点比如一个搜索框、留言板、用户注册或登录表单。XSS漏洞通常发生在这些将用户输入输出到页面的地方。假设我们发现了一个搜索功能URL形如http://192.168.1.105/search.php?querykeyword。测试XSS的第一步就是尝试注入基本的测试载荷。试探性输入在搜索框输入然后搜索。观察页面是否弹窗。如果弹窗说明存在反射型XSS并且过滤非常弱。查看源码如果没弹窗右键查看页面源代码搜索你输入的alert(1)看它是否被原样输出到了HTML的某个位置比如标签内或标签属性里。有可能被HTML编码了变成script那就意味着有过滤。尝试绕过如果被编码或过滤就需要尝试绕过。常见方法有换用大小写使用img标签的事件属性尝试闭合现有的HTML标签如果输出点在可以输入“使用JavaScript伪协议在Momentum靶机中经过测试我们可能会在某个页面例如一个“反馈”或“联系”表单发现一个存储型XSS漏洞。存储型XSS的危害更大因为载荷会被保存到服务器如数据库每次其他用户访问该页面时都会触发。3.2 利用XSS获取进一步信息找到XSS漏洞不是终点而是起点。我们的目标是通过它获取更多信息向服务器内部迈进。一个直接的利用方式是窃取用户的Cookie但如果应用设置了HttpOnly标志JavaScript就无法通过document.cookie读取到会话Cookie。更有效的思路是利用XSS让受害者的浏览器代表我们执行一些操作也就是“前端黑客”。我们可以构造一个Payload让浏览器向攻击者控制的服务器发送请求携带敏感信息。搭建接收服务器在Kali上用nc监听一个端口。nc -lvnp 4444构造窃取数据的Payload假设我们发现页面会显示当前登录用户的用户名比如在页面顶部显示“Hello, [username]”而这个username字段存在XSS。我们可以构造这样的Payload 这个Payload会尝试读取页面内容可能包含敏感信息然后通过一个Image对象的src属性将数据以GET参数的形式发送到攻击者服务器192.168.1.100:4444。利用漏洞将构造好的Payload提交到存在存储型XSS的地方如用户资料编辑的“用户名”字段。当管理员或其他用户查看该资料时他们的浏览器就会执行这段代码向我们监听的nc端口发送请求我们就能看到泄露的数据。在Momentum的上下文中通过这种方式我们可能窃取到一个管理员的会话Cookie或者直接获取到一段重要的凭据信息例如一个数据库连接字符串、一个备份文件的路径甚至是一段包含SSH私钥的配置文件内容。这为我们打开了通往下一层的大门。4. 权限提升从Web到系统Root4.1 利用泄露信息进行横向移动假设通过XSS我们成功获取到了一些敏感信息比如一个MySQL数据库的账号密码dbuser:dbpass123或者一个Web后台的管理员密码。这时渗透测试进入了一个新阶段横向移动。连接数据库使用获取的凭据连接MySQL。mysql -h 192.168.1.105 -u dbuser -pdbpass123进入数据库后查看有哪些库和表show databases;use database_name;show tables;。重点寻找存储用户凭据的表如users,admin尝试提取密码哈希。MariaDB/MySQL 5.x的密码哈希可以使用john或hashcat进行破解。如果运气好管理员可能用了弱密码或者密码明文存储这在老旧或设计不良的应用中确实存在。登录Web后台如果获取的是后台密码直接登录。后台往往有文件上传、命令执行、系统配置查看等更高权限的功能。寻找任何可以上传文件的地方尝试上传一个Webshell如PHP的一句话木马。寻找文件包含或命令注入在Web应用的参数中仔细测试。例如查看URL中是否有?pageabout.php这样的参数尝试进行本地文件包含LFI?page../../../../etc/passwd。或者在诸如“ping工具”、“系统信息查询”等功能点测试命令注入如输入127.0.0.1; id。在Momentum靶机中很可能在数据库的某个表里或者通过文件包含读取到的系统文件里我们找到了一个低权限系统用户的SSH私钥或密码。4.2 系统提权实战与思路通过Web漏洞拿到一个低权限的shell比如www-data用户或者通过SSH登录了一个普通用户比如john后最后也是最关键的一步就是提权到root。首先进行系统的信息搜集# 查看当前用户和权限 id sudo -l # 非常重要查看当前用户能以root身份无需密码运行哪些命令 # 查看系统版本和内核信息 uname -a cat /etc/os-release # 查看运行的服务和进程 ps aux netstat -tulnp # 查看具有SUID权限的特殊文件 find / -perm -us -type f 2/dev/null # 查看计划任务 crontab -l ls -la /etc/cron* /var/spool/cron/sudo -l是提权的“黄金检查点”。如果返回类似(ALL) NOPASSWD: /usr/bin/vim就意味着你可以不用密码用root权限运行vim那么直接在vim里执行:!bash就能得到一个root shell。如果sudo -l没有收获就检查SUID文件。常见的危险SUID程序有find,nmap旧版本,vim,bash,more,less等。例如如果find有SUID位可以find . -exec /bin/bash -p \;-p参数会保留提升的权限。接下来是内核漏洞。用uname -a获取内核版本然后在Kali上使用searchsploit搜索公开的漏洞利用代码。searchsploit linux kernel 3.10 # 替换成你的内核版本找到对应的本地提权exp后将其上传到靶机编译并执行。但在靶机环境中更常见的是利用一些配置错误或脆弱的服务。在Momentum靶机中提权路径可能设计得非常巧妙。例如你可能发现一个以root身份运行的、周期性执行脚本的计划任务cron job而这个脚本当前用户有写入权限。你可以通过编辑这个脚本植入反向shell命令等待cron执行后就能获得root权限的shell。另一种可能是利用环境变量劫持。如果有一个SUID程序调用了另一个相对路径的命令比如system(“ls”)而你可以控制PATH环境变量并提前在当前目录放置一个恶意的ls可执行文件那么当SUID程序执行时就会以root权限运行你的恶意程序。整个提权过程需要耐心和细致的枚举。我个人的习惯是将上面提到的信息搜集命令写成一个脚本一键运行并输出到文件然后慢慢分析。每一条异常的信息都可能是通往root的钥匙。5. 常见问题与排查技巧实录在实际操作Momentum或类似靶机的过程中肯定会遇到各种问题。这里我记录了几个最典型的场景和解决办法。5.1 网络连通性与扫描问题问题nmap扫描不到靶机或者ping不通。排查确认靶机是否已开机。在虚拟机软件里查看状态。确认攻击机和靶机的网络模式。最推荐的是“桥接”到同一物理网络或者两者都在同一个“自定义”的VMnet中如VMnet2。确保它们在同一IP网段如都是192.168.1.x。关闭攻击机和靶机的防火墙靶场环境为了方便sudo systemctl stop firewalld(CentOS/RHEL) 或sudo ufw disable(Ubuntu)。在靶机上用ip addr或ifconfig查看其IP在攻击机上用arp -a或再次用netdiscover扫描确认。心得网络问题是新手第一道坎。建立一个固定的“靶场网络”环境是个好习惯比如在VMware里专门创建一个“仅主机模式”的虚拟网络把Kali和所有靶机都放进去这样IP固定互访方便。5.2 漏洞利用失败与绕过技巧问题发现的XSS不弹窗或者上传的Webshell无法访问。排查与技巧XSS过滤查看页面源码看输入被如何处理。如果被HTML编码尝试使用不依赖和的Payload比如基于事件的。也可以尝试双写、编码绕过如URL编码、HTML实体编码。Webshell上传检查文件上传处的过滤。尝试修改文件扩展名shell.php.jpg、在文件开头添加图片魔数GIF89a、使用.phtml,.phps等备用扩展名。同时用burpsuite拦截上传请求修改Content-Type为image/jpeg。Webshell访问404确认上传路径。使用文件包含漏洞来包含上传的Webshell有时比直接访问更有效。上传后用目录扫描工具再扫一遍看看文件是否被重命名或移动到其他位置。心得永远不要假设第一次尝试就能成功。渗透测试是一个“测试-失败-调整-再测试”的循环。利用Burp Suite的Repeater模块可以方便地修改和重放请求快速测试各种绕过手法。5.3 权限提升受阻与信息枚举问题拿到了低权限shell但找不到提权方法。sudo -l需要密码SUID文件没发现常见的危险程序内核版本也没有公开的exp。排查与技巧深入枚举运行linpeas或linux-smart-enumeration这类自动化提权脚本。它们能更全面、更智能地发现系统的弱点。检查所有用户cat /etc/passwd看看有没有其他用户尝试su到他们密码可能很简单如用户名本身、123456。检查历史文件cat ~/.bash_historycat /var/log/auth.log看看有没有记录下root密码或其他敏感命令。检查数据库如果之前有数据库权限看看数据库里有没有存储系统用户的密码。检查配置文件Web应用的配置文件config.php,.env里常有数据库密码而数据库里可能又有其他密码。形成“密码链”。检查进程和环境变量ps auxwww查看所有进程的完整命令cat /proc/[PID]/environ查看某个进程的环境变量可能泄露密钥。心得提权往往不是靠一个“大招”而是靠拼凑零散的信息。在Momentum这类精心设计的靶机中提权的钥匙可能藏在之前某个阶段获取的“不起眼”的信息里。养成做笔记、画流程图的习惯至关重要。当你卡住时回头看看之前搜集的所有信息可能会有新的发现。5.4 心态与学习方法建议不要过度依赖自动化工具像sqlmap,metasploit这样的工具很强大但在学习阶段尽量手动完成每一步。这能帮你深刻理解漏洞原理。善用搜索引擎和社区遇到错误信息直接复制到Google或安全社区如Stack Overflow、安全论坛搜索。你遇到的问题很可能别人已经解决过。搭建自己的实验笔记用Markdown或Notion记录每台靶机的渗透路径、命令、Payload和思路。积累自己的“武器库”和“案例库”。从“做出来”到“搞清楚”拿到root flag不是终点。问自己还有别的路径吗这个漏洞在真实环境中如何防御修复方案是什么这才是能力提升的关键。渗透测试就像一场数字空间的“密室逃脱”Momentum靶机提供了一个非常标准的房间。它考验的不仅是你的技术知识库更是你的观察力、耐心和逻辑串联能力。每一次“卡关”后的突破都是实实在在的成长。最后当你看到# whoami返回root的那一刻那种通过自己一步步推理、操作最终攻克目标的成就感正是网络安全学习路上最迷人的部分之一。希望这份详细的解析能帮你顺利通关并从中提炼出属于自己的方法论。
从XSS到Root权限:Momentum靶机渗透测试实战全解析
1. 项目概述一次完整的权限提升之旅最近在VulnHub上看到一个挺有意思的靶机叫Momentum。光看名字可能觉得平平无奇但它的渗透路径设计得相当有层次感完美地串联了从Web前端漏洞到最终系统Root权限获取的完整链条。这可不是那种简单扫个端口、爆个弱口令就能拿下的机器它需要你像剥洋葱一样一层层地揭开它的防御。核心路径就是从一道经典的跨站脚本攻击入手逐步深入最终拿到那枚象征着最高权限的“旗帜”。对于想系统练习渗透测试中不同阶段技术衔接的朋友来说这台靶机是个绝佳的沙盒。我自己在实战演练的时候感觉整个过程就像在解一个设计精巧的谜题。它没有故意设置那些偏门、冷僻的漏洞而是聚焦于实战中高频出现但组合利用起来又颇具挑战的技术点。你需要用到信息搜集、漏洞扫描、漏洞利用、权限提升等一系列技能。无论你是刚入门渗透测试的新手想看看一个完整的流程长什么样还是有一定经验的老手想磨练一下自己的漏洞串联和纵深突破思维Momentum都能给你带来实实在在的收获。接下来我就把自己从头到尾拿下这台靶机的详细过程、踩过的坑以及一些思考完整地分享出来。2. 环境准备与信息搜集2.1 靶机与攻击机环境搭建工欲善其事必先利其器。第一步肯定是把环境准备好。Momentum靶机的镜像可以从VulnHub官网下载导入到你的虚拟机软件里就行我用的VMware Workstation。这里有个小细节要注意靶机的网络模式最好设置为“桥接模式”或者和你的攻击机在同一“NAT网络”下。我一开始图省事用了默认的NAT结果扫描时发现IP段不对折腾了半天。设置为桥接后Kali和靶机就在同一个局域网里了互访起来最方便。攻击机我用的自然是渗透测试的“瑞士军刀”——Kali Linux。确保你的Kali是最新版本并且更新了软件源sudo apt update sudo apt upgrade -y。这不是必须的但能避免一些工具因版本过旧而报错的问题。准备好之后先别急着扫描第一件事是确定靶机的IP地址。因为虚拟机每次启动获取的IP可能不同。我常用的方法是先用netdiscover进行主动ARP扫描sudo netdiscover -r 192.168.1.0/24请将192.168.1.0/24替换成你实际的内网网段。扫描结果中除了你熟悉的设备比如你自己的电脑、路由器那个陌生的、主机名可能带有“Momentum”或类似字样的IP就是我们的目标了。假设我们找到的靶机IP是192.168.1.105。2.2 全方位信息搜集策略拿到IP后切忌直接上漏洞扫描器狂轰滥炸。有节制、分层次的信息搜集是专业渗透与“脚本小子”的区别。我的搜集流程一般是端口服务 - Web技术栈 - 目录结构 - 其他服务信息。首先使用nmap进行全端口扫描并尝试识别服务版本和操作系统。sudo nmap -sS -sV -sC -O -p- 192.168.1.105 -oN nmap_full.txt-sS: SYN半开放扫描速度快且相对隐蔽。-sV: 探测服务版本。-sC: 使用默认的Nmap脚本进行更深入的探测。-O: 尝试识别操作系统。-p-: 扫描所有65535个端口。-oN: 将结果输出到文件方便后续查看。扫描结果通常是渗透的“地图”。对于Momentum我们大概率会看到类似这样的输出PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.41 3306/tcp open mysql MySQL 5.5.5-10.1.44-MariaDB这里已经揭示了关键信息开放了SSH、HTTP和MySQL端口。Web服务80端口是我们的首要入口点。SSH和MySQL则可能在后期的横向移动或权限提升中发挥作用。接下来针对HTTP服务我们要进行更细致的Web信息搜集访问网站直接用浏览器打开http://192.168.1.105看看是什么应用有什么功能用的什么技术比如查看页面源码看是否有Powered by XXX的注释。目录爆破使用gobuster或dirb寻找隐藏的目录或文件。gobuster dir -u http://192.168.1.105 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,js,bak这个步骤可能会发现后台登录页面如/admin、配置文件如/config.php.bak、备份文件等。子域名枚举如果主站没什么发现可以尝试寻找虚拟主机或子域名不过对于这种CTF靶机通常主站就是核心。技术指纹识别使用whatweb或浏览器插件如Wappalyzer快速识别网站使用的技术比如PHP版本、框架如ThinkPHP、SpringBoot、中间件如Apache、Nginx等。注意在真实环境中信息搜集的广度和深度要依据测试范围和时间来定。在靶场里我们可以做得更彻底些。所有搜集到的信息最好用笔记软件或keepnote这样的工具记录下来形成你的“作战地图”。3. 漏洞发现与利用XSS作为突破口3.1 定位输入点与XSS漏洞验证在对Momentum的Web应用进行一番探索后我们很可能发现一个存在用户交互的功能点比如一个搜索框、留言板、用户注册或登录表单。XSS漏洞通常发生在这些将用户输入输出到页面的地方。假设我们发现了一个搜索功能URL形如http://192.168.1.105/search.php?querykeyword。测试XSS的第一步就是尝试注入基本的测试载荷。试探性输入在搜索框输入然后搜索。观察页面是否弹窗。如果弹窗说明存在反射型XSS并且过滤非常弱。查看源码如果没弹窗右键查看页面源代码搜索你输入的alert(1)看它是否被原样输出到了HTML的某个位置比如标签内或标签属性里。有可能被HTML编码了变成script那就意味着有过滤。尝试绕过如果被编码或过滤就需要尝试绕过。常见方法有换用大小写使用img标签的事件属性尝试闭合现有的HTML标签如果输出点在可以输入“使用JavaScript伪协议在Momentum靶机中经过测试我们可能会在某个页面例如一个“反馈”或“联系”表单发现一个存储型XSS漏洞。存储型XSS的危害更大因为载荷会被保存到服务器如数据库每次其他用户访问该页面时都会触发。3.2 利用XSS获取进一步信息找到XSS漏洞不是终点而是起点。我们的目标是通过它获取更多信息向服务器内部迈进。一个直接的利用方式是窃取用户的Cookie但如果应用设置了HttpOnly标志JavaScript就无法通过document.cookie读取到会话Cookie。更有效的思路是利用XSS让受害者的浏览器代表我们执行一些操作也就是“前端黑客”。我们可以构造一个Payload让浏览器向攻击者控制的服务器发送请求携带敏感信息。搭建接收服务器在Kali上用nc监听一个端口。nc -lvnp 4444构造窃取数据的Payload假设我们发现页面会显示当前登录用户的用户名比如在页面顶部显示“Hello, [username]”而这个username字段存在XSS。我们可以构造这样的Payload 这个Payload会尝试读取页面内容可能包含敏感信息然后通过一个Image对象的src属性将数据以GET参数的形式发送到攻击者服务器192.168.1.100:4444。利用漏洞将构造好的Payload提交到存在存储型XSS的地方如用户资料编辑的“用户名”字段。当管理员或其他用户查看该资料时他们的浏览器就会执行这段代码向我们监听的nc端口发送请求我们就能看到泄露的数据。在Momentum的上下文中通过这种方式我们可能窃取到一个管理员的会话Cookie或者直接获取到一段重要的凭据信息例如一个数据库连接字符串、一个备份文件的路径甚至是一段包含SSH私钥的配置文件内容。这为我们打开了通往下一层的大门。4. 权限提升从Web到系统Root4.1 利用泄露信息进行横向移动假设通过XSS我们成功获取到了一些敏感信息比如一个MySQL数据库的账号密码dbuser:dbpass123或者一个Web后台的管理员密码。这时渗透测试进入了一个新阶段横向移动。连接数据库使用获取的凭据连接MySQL。mysql -h 192.168.1.105 -u dbuser -pdbpass123进入数据库后查看有哪些库和表show databases;use database_name;show tables;。重点寻找存储用户凭据的表如users,admin尝试提取密码哈希。MariaDB/MySQL 5.x的密码哈希可以使用john或hashcat进行破解。如果运气好管理员可能用了弱密码或者密码明文存储这在老旧或设计不良的应用中确实存在。登录Web后台如果获取的是后台密码直接登录。后台往往有文件上传、命令执行、系统配置查看等更高权限的功能。寻找任何可以上传文件的地方尝试上传一个Webshell如PHP的一句话木马。寻找文件包含或命令注入在Web应用的参数中仔细测试。例如查看URL中是否有?pageabout.php这样的参数尝试进行本地文件包含LFI?page../../../../etc/passwd。或者在诸如“ping工具”、“系统信息查询”等功能点测试命令注入如输入127.0.0.1; id。在Momentum靶机中很可能在数据库的某个表里或者通过文件包含读取到的系统文件里我们找到了一个低权限系统用户的SSH私钥或密码。4.2 系统提权实战与思路通过Web漏洞拿到一个低权限的shell比如www-data用户或者通过SSH登录了一个普通用户比如john后最后也是最关键的一步就是提权到root。首先进行系统的信息搜集# 查看当前用户和权限 id sudo -l # 非常重要查看当前用户能以root身份无需密码运行哪些命令 # 查看系统版本和内核信息 uname -a cat /etc/os-release # 查看运行的服务和进程 ps aux netstat -tulnp # 查看具有SUID权限的特殊文件 find / -perm -us -type f 2/dev/null # 查看计划任务 crontab -l ls -la /etc/cron* /var/spool/cron/sudo -l是提权的“黄金检查点”。如果返回类似(ALL) NOPASSWD: /usr/bin/vim就意味着你可以不用密码用root权限运行vim那么直接在vim里执行:!bash就能得到一个root shell。如果sudo -l没有收获就检查SUID文件。常见的危险SUID程序有find,nmap旧版本,vim,bash,more,less等。例如如果find有SUID位可以find . -exec /bin/bash -p \;-p参数会保留提升的权限。接下来是内核漏洞。用uname -a获取内核版本然后在Kali上使用searchsploit搜索公开的漏洞利用代码。searchsploit linux kernel 3.10 # 替换成你的内核版本找到对应的本地提权exp后将其上传到靶机编译并执行。但在靶机环境中更常见的是利用一些配置错误或脆弱的服务。在Momentum靶机中提权路径可能设计得非常巧妙。例如你可能发现一个以root身份运行的、周期性执行脚本的计划任务cron job而这个脚本当前用户有写入权限。你可以通过编辑这个脚本植入反向shell命令等待cron执行后就能获得root权限的shell。另一种可能是利用环境变量劫持。如果有一个SUID程序调用了另一个相对路径的命令比如system(“ls”)而你可以控制PATH环境变量并提前在当前目录放置一个恶意的ls可执行文件那么当SUID程序执行时就会以root权限运行你的恶意程序。整个提权过程需要耐心和细致的枚举。我个人的习惯是将上面提到的信息搜集命令写成一个脚本一键运行并输出到文件然后慢慢分析。每一条异常的信息都可能是通往root的钥匙。5. 常见问题与排查技巧实录在实际操作Momentum或类似靶机的过程中肯定会遇到各种问题。这里我记录了几个最典型的场景和解决办法。5.1 网络连通性与扫描问题问题nmap扫描不到靶机或者ping不通。排查确认靶机是否已开机。在虚拟机软件里查看状态。确认攻击机和靶机的网络模式。最推荐的是“桥接”到同一物理网络或者两者都在同一个“自定义”的VMnet中如VMnet2。确保它们在同一IP网段如都是192.168.1.x。关闭攻击机和靶机的防火墙靶场环境为了方便sudo systemctl stop firewalld(CentOS/RHEL) 或sudo ufw disable(Ubuntu)。在靶机上用ip addr或ifconfig查看其IP在攻击机上用arp -a或再次用netdiscover扫描确认。心得网络问题是新手第一道坎。建立一个固定的“靶场网络”环境是个好习惯比如在VMware里专门创建一个“仅主机模式”的虚拟网络把Kali和所有靶机都放进去这样IP固定互访方便。5.2 漏洞利用失败与绕过技巧问题发现的XSS不弹窗或者上传的Webshell无法访问。排查与技巧XSS过滤查看页面源码看输入被如何处理。如果被HTML编码尝试使用不依赖和的Payload比如基于事件的。也可以尝试双写、编码绕过如URL编码、HTML实体编码。Webshell上传检查文件上传处的过滤。尝试修改文件扩展名shell.php.jpg、在文件开头添加图片魔数GIF89a、使用.phtml,.phps等备用扩展名。同时用burpsuite拦截上传请求修改Content-Type为image/jpeg。Webshell访问404确认上传路径。使用文件包含漏洞来包含上传的Webshell有时比直接访问更有效。上传后用目录扫描工具再扫一遍看看文件是否被重命名或移动到其他位置。心得永远不要假设第一次尝试就能成功。渗透测试是一个“测试-失败-调整-再测试”的循环。利用Burp Suite的Repeater模块可以方便地修改和重放请求快速测试各种绕过手法。5.3 权限提升受阻与信息枚举问题拿到了低权限shell但找不到提权方法。sudo -l需要密码SUID文件没发现常见的危险程序内核版本也没有公开的exp。排查与技巧深入枚举运行linpeas或linux-smart-enumeration这类自动化提权脚本。它们能更全面、更智能地发现系统的弱点。检查所有用户cat /etc/passwd看看有没有其他用户尝试su到他们密码可能很简单如用户名本身、123456。检查历史文件cat ~/.bash_historycat /var/log/auth.log看看有没有记录下root密码或其他敏感命令。检查数据库如果之前有数据库权限看看数据库里有没有存储系统用户的密码。检查配置文件Web应用的配置文件config.php,.env里常有数据库密码而数据库里可能又有其他密码。形成“密码链”。检查进程和环境变量ps auxwww查看所有进程的完整命令cat /proc/[PID]/environ查看某个进程的环境变量可能泄露密钥。心得提权往往不是靠一个“大招”而是靠拼凑零散的信息。在Momentum这类精心设计的靶机中提权的钥匙可能藏在之前某个阶段获取的“不起眼”的信息里。养成做笔记、画流程图的习惯至关重要。当你卡住时回头看看之前搜集的所有信息可能会有新的发现。5.4 心态与学习方法建议不要过度依赖自动化工具像sqlmap,metasploit这样的工具很强大但在学习阶段尽量手动完成每一步。这能帮你深刻理解漏洞原理。善用搜索引擎和社区遇到错误信息直接复制到Google或安全社区如Stack Overflow、安全论坛搜索。你遇到的问题很可能别人已经解决过。搭建自己的实验笔记用Markdown或Notion记录每台靶机的渗透路径、命令、Payload和思路。积累自己的“武器库”和“案例库”。从“做出来”到“搞清楚”拿到root flag不是终点。问自己还有别的路径吗这个漏洞在真实环境中如何防御修复方案是什么这才是能力提升的关键。渗透测试就像一场数字空间的“密室逃脱”Momentum靶机提供了一个非常标准的房间。它考验的不仅是你的技术知识库更是你的观察力、耐心和逻辑串联能力。每一次“卡关”后的突破都是实实在在的成长。最后当你看到# whoami返回root的那一刻那种通过自己一步步推理、操作最终攻克目标的成就感正是网络安全学习路上最迷人的部分之一。希望这份详细的解析能帮你顺利通关并从中提炼出属于自己的方法论。