news 2026/9/8 21:23:24

Jarbas靶机渗透实战:从信息收集到SUID提权的完整链路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jarbas靶机渗透实战:从信息收集到SUID提权的完整链路

靶机渗透是个老生常谈的话题,但每次打一台新靶机,都能把很多零散的知识串起来。Jarbas是我最近在VulnHub上重新刷的一台Linux靶机,体量不大,难度中等偏易,但覆盖的知识点非常典型:Web目录发现、弱口令爆破、SSH登录、Linux本地信息收集、SUID提权。整条链路走下来,基本就是一个标准的内网渗透测试最小闭环。这篇文章我会把每一步操作、每一步的思考逻辑和踩坑点都写出来,配合命令和实际输出,想练手的朋友可以直接照着打一遍。

先说靶机的基本情况:Jarbas对应的是VulnHub上的一个镜像,下载下来是个OVA文件,用VMware或VirtualBox导入就能用。官方描述里没有给任何账号和网络信息,所以IP要自己扫,这也模拟了真实环境中“黑盒”开局的状态。攻击机用Kali Linux,靶机和攻击机都放在同一块NAT或Host-Only网卡下,确保互通即可。

1. 环境准备与信息收集

1.1 靶机下载与导入

靶机镜像在VulnHub官网搜索Jarbas即可找到,下载后是一个OVA文件。VMware Workstation和VirtualBox都能直接导入,导入过程没什么特别之处,默认配置就行。需要注意的是,如果靶机导入后没有自动获取IP,大概率是网卡模式设置成了Bridge,但主机网络环境有改动,导致靶机拿不到地址。我习惯把两张虚拟网卡都放在NAT模式,这样的话靶机和Kali会在同一个网段内,方便后面做主机发现和扫描。

导入完成后先别急着开扫,等靶机完全启动。Jarbas用的是轻量级系统,开机速度很快,几十秒就能进入登录界面。这个时候不要指望在靶机屏幕上看到登录凭据,没有任何提示,直接开始从攻击机侧做信息收集。

1.2 网段发现与主机定位

Kali开机后,先用ip a确认自己的IP地址。假设Kali的地址是192.168.10.10/24,那么靶机大概率就在192.168.10.0/24这个网段里。为了找到靶机,我用的是netdiscover

netdiscover -r 192.168.10.0/24

这个工具会发ARP广播包,把网段内所有存活主机列出来。因为Kali和靶机在同一个二层网络里,ARP是必然能扫出来的。如果靶机响应了ARP,就能直接看到它的MAC地址和IP。Jarbas这台机器的MAC地址没有特别标识,但只要扫到一个除了Kali网关和Kali本身之外的新IP,基本就是靶机。

如果netdiscover没扫出来,也可以用arp-scan -l,效果类似。扫出来靶机IP之后,下一步就是端口扫描。

1.3 端口扫描与服务识别

端口扫描是整个渗透测试的地基。我习惯先做一个快速的全端口TCP扫描,确认开放端口范围,再做服务和版本识别:

nmap -Pn -sS -p- --min-rate 1000 192.168.10.20

这里用-Pn跳过主机存活探测,因为前面已经确认靶机在线了。-sS是SYN半开扫描,速度快;--min-rate 1000控制发包速率,不至于让靶机丢包太多。结果很快出来,Jarbas开放了三个端口:22(SSH)、80(HTTP)、8080(HTTP-Proxy)。

拿到开放端口后,再做一次详细的版本探测:

nmap -Pn -sV -sC -p 22,80,8080 192.168.10.20

-sV负责服务版本识别,-sC跑默认的NSE安全脚本,包括常见的banner抓取、HTTP标题、SSH指纹等信息。这一步很关键,因为Nmap会告诉我们Web服务是Apache还是Nginx、SSH版本是多少,这些指纹直接影响后续漏洞方向的选择。

实际探测结果里,80端口是Apache默认页,8080端口也是HTTP服务,具体内容要访问后才能确定。到这里,信息收集的第一阶段就算完成了:我们知道靶机开放了三个网络入口,其中两个是Web服务,一个是SSH。接下来的重点就是Web服务探测。

2. Web服务探测与目录爆破

2.1 手工访问Web页面

先看80端口。浏览器访问http://192.168.10.20,页面是Apache的默认欢迎页,没有业务内容,说明这个网站没有把首页文件放在默认路径下,或者网站还没配置。再看8080端口:访问http://192.168.10.20:8080,会看到一个自定义的Web页面,看起来像是一个监控面板或后台登录入口。

这个阶段的思路是:不要被默认页面迷惑,Apache默认页不代表站点是空的,很多时候真实的Web应用藏在自定义目录里。所以下一步就是目录爆破,把Web应用中可能存在的目录和文件枚举出来。

2.2 目录爆破工具选型

目录爆破工具有很多:dirb、gobuster、ffuf、wfuzz都行。我的个人偏好是gobuster,因为它是Go语言编译的,单线程速度就很快,而且支持递归扫描:

gobuster dir -u http://192.168.10.20 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100

字典用的是dirbuster自带的medium列表,默认路径在Kali的wordlists里。如果Kali里没有这个字典,可以用dirb http://192.168.10.20 /usr/share/wordlists/dirb/common.txt先跑一遍。第一次爆破不用追求全面,关键是快速发现目录结构。

80端口跑出来的结果里,比较有价值的是/access这个路径。访问http://192.168.10.20/access,会看到一个后台登录页面,需要输入用户名和密码。到这一步,Web方向已经有一个明确的攻击面了。

再对这个路径本身做一次深度扫描,看看/access下面是否还有子目录或文件:

gobuster dir -u http://192.168.10.20/access -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100

如果爆破出类似/access/config.php之类的内容,先别急着访问,因为大多数情况下这些文件要么是空的,要么就是权限不足直接报错。但如果是后台框架的默认配置文件,可能会暴露数据库连接信息,这类信息在后面的提权阶段很有用。

8080端口的Web页面也可以做一次爆破,不过这个页面的功能相对单一,在后续提权阶段我还会回来利用它,这里先按下不表。

2.3 指纹识别与漏洞初判

Web服务识别还可以借助工具自动完成。比如用whatweb看一下网站的技术栈:

whatweb http://192.168.10.20/access

whatweb会告诉我们网站使用的CMS框架、中间件版本、脚本语言等信息。不过Jarbas这个后台写得比较朴素,看起来就是经典的PHP程序,没有用复杂框架。PHP类的Web应用,弱口令和登录绕过是优先尝试的方向。

3. 弱口令爆破与后台利用

3.1 后台登录的弱口令测试

打开http://192.168.10.20/access,页面是个简单的登录框。先用几个常见的弱口令组合手动试一下:admin/admin、admin/password、admin/123456。如果手测压中了,直接进后台,省去爆破的时间。不过这台靶机的弱口令没有这么“白给”,手动失败后就需要上工具。

Web后台的爆破我用Burp Suite,主要原因是能直接看响应包的大小和状态码,便于筛选。抓一个登录POST请求,把它发送到Intruder模块,设置用户名和密码两个Payload位置。用户名可以固定为admin,密码字典用rockyou.txt的常见密码子集,如果觉得rockyou太大(14G解压后非常大),可以先用/usr/share/wordlists/fasttrack.txt这个小字典,里面都是高频弱口令,对靶机这种场景基本够用。

爆破过程中需要关注的重点是HTTP响应码和响应长度。登录失败时后端通常会返回一个固定的错误页面,响应长度也相对一致;一旦出现不同长度或不同的状态码,很可能就是登录成功了。所以看到异常响应后,先手工验证一下,别急着收工。

3.2 从后台获取渗透关键信息

如果这一步成功登录,后台页面里大概率会有关键信息。以Jarbas为例,登录后会看到一条提示,内容是系统版本信息加上一个“提示”:某些用户名的密码就是用户名本身,或者是常见密码。这个信息为后续SSH爆破提供了精确的用户名字典。

我从后台拿到的关键线索是:系统存在一个用户,用户名是tiago,它使用了弱密码。虽然Web后台没有直接显示密码,但这已经缩小了爆破范围。结合系统版本是CentOS 7一类的主流系统,可以推测用户可能用了“tiago”或“tiago123”这种规律性较强的密码。

3.3 Hydra的SSH爆破

有了明确的用户名,接下来可以直接对SSH做定向爆破。我用的是Hydra:

hydra -l tiago -P /usr/share/wordlists/fasttrack.txt ssh://192.168.10.20 -t 4

这里-l tiago指定用户名,-P指定密码字典,-t 4控制并发线程数。SSH爆破的线程数不宜太高,否则容易触发fail2ban之类的防护机制,而且网络延迟也会影响效率。实测下来,Jarbas的SSH服务没有加防护,几分钟之内就爆出了密码。

爆破成功后,直接SSH登录:

ssh tiago@192.168.10.20

输入密码进入系统。到这里,我们拿到了一个普通的Linux用户权限,接下来就是权限提升阶段。

4. 拿下Shell后的信息收集与权限提升

4.1 登录后的基础命令

进到系统后,先不要乱翻文件,第一件事是确认自己是谁、有什么权限、系统里有什么可用的信息:

id whoami uname -a cat /etc/os-release sudo -l

idwhoami确认当前用户身份;uname -a看内核版本和架构,如果内核有公开漏洞且版本匹配,可以直接用内核提权;sudo -l查看当前用户能否用sudo执行某些命令,这一步非常关键。

Jarbas这台机器上,sudo -l的输出结果里往往会有意外惊喜:某个命令被配置为可以以root身份执行,而且不需要密码。这种情况下直接利用sudo就能提权,不需要摸内核漏洞。

4.2 文件系统中的敏感信息

系统内的敏感文件也是提权的重点方向。先看当前用户目录下的隐藏文件:

ls -la /home/tiago/ cat /home/tiago/.bash_history

.bash_history是宝贝。很多情况下,历史命令里会暴露之前执行过的操作,包括下载过的脚本、解压过的文件、甚至明文密码。Jarbas的靶机里也埋了这类线索,具体路径在其他目录下,需要自己找一下。

再看Web目录权限和配置文件:

ls -la /var/www/html/ cat /var/www/html/access/config.php

如果Web应用有数据库连接配置,config.php或类似文件里通常会有明文数据库账号。Jarbas里这一层用的是默认的root/空密码组合,说明数据库并没有做特别加固。如果拿到数据库的root权限,就可以尝试MySQL的UDF提权,不过这台靶机用不到这么复杂的路径。

4.3 SUID提权实操

提到Linux提权,SUID位是最经典也最优先检查的一环。SUID权限表示某个可执行文件在执行时拥有文件属主的权限。如果一个root拥有的二进制文件设置了SUID位,那么普通用户执行它时就会临时获得root权限。

检查系统里哪些文件设置了SUID位:

find / -perm -4000 -type f 2>/dev/null

输出里除了标准的/usr/bin/passwd/usr/bin/su之外,如果出现了一些不常见的路径,比如/bin/bash/usr/bin/python,那基本就是靶机特意留下的提权入口。

Jarbas这台靶机的解法之一就是利用一个带SUID位的/bin/bash。执行:

bash -p

-p参数让bash不重置有效用户ID,这样就能直接获得root权限的shell。输入id确认一下,显示uid=0(root),提权成功。

如果bash -p的root shell没弹出来,还可以尝试用Python重新绑定SUID位执行,或者检查其他SUID文件。总之SUID枚举是Linux提权绕不开的步骤,很多CTF靶机都会留这个口子。

4.4 利用后台页面实现定时任务提权

Jarbas的第二种提权思路是通过8080端口那个Web控制面板配合定时任务。具体来说,刚才信息收集时发现8080端口上有一个脚本,允许用户提交一个命令并把它写入某个文件,同时系统有一个定时任务会周期性执行该文件。如果这个脚本的执行者是root,攻击者就能通过提交恶意命令实现定时任务投毒,最终拿到root权限。

这条路径虽然比直接SUID提权绕,但它的现实意义很强:很多运维会配置后台管理脚本,为了省事把执行权限设给了root,又被一个弱口令保护,这恰恰是真实环境中的常见漏洞组合。我们在Jarbas上先做SUID提权就把靶机打通了,但如果要多练一种方法,完全可以从8080端口再走一遍命令注入到定时任务投毒的链路。

5. 常见问题与排查技巧

5.1 靶机IP获取不到

遇到靶机开机后无法获得IP的情况,通常有两个原因:网卡模式配置错误,或者DHCP服务没启动。解决方法是手动给靶机配置一个静态IP,或者把虚拟网卡从Bridge切换到NAT后再试。另外,netdiscover扫不出来时,可以看看Kali自身是否拿到了同一网段的地址,如果Kali也没网,优先修Kali的网卡。

5.2 目录爆破结果为空

如果gobuster爆破不出任何目录,先检查字典质量,换个大一点的字典比如directory-list-2.3-big.txt再跑;其次检查目标URL路径,注意大小写和后缀;还有一种情况是WAF或防护模块拦截了扫描流量,这时候用ffuf配合请求头伪装成浏览器访问,或者降低并发速度,往往能绕过过滤。

5.3 SSH爆破不成功

SSH爆破失败的原因可能是用户名字典不对,也可能是密码字典不合适。Jarbas这类靶机虽然装了弱口令,但如果字典里没有对应的密码组合,爆破也会失败。先通过Web后台或社工手段确认用户名,再选择有针对性的密码字典,比盲目跑大字典靠谱得多。

5.4 SUID枚举后无法提权

如果找到了SUID文件但执行后没有效果,先看这个SUID文件是否真的属于root,以及它的执行权限。有些靶机会故意设置一个带SUID的脚本,但脚本本身调用的是系统命令,直接在交互式shell里执行可能因为PATH环境变量的问题失败。调试时可以用ls -l确认权限位,再用file看一下文件类型,如果是脚本就打开看看它执行了哪些命令,再考虑是否需要利用PATH劫持的方式提权。

6. 总结与拓展思路

Jarbas这台靶机虽然难度不高,但它的设计覆盖了一个完整的渗透测试闭环路径。从网络扫描到服务枚举,从Web后台弱口令到SSH爆破,从基础Shell到SUID提权,每一步都对应着渗透测试工程师在日常工作中需要掌握的核心技能。

在整个过程中,值得注意的细节是:信息收集永远是最耗时间也最关键的阶段。很多初学者拿过靶机就急着爆破、急着打漏洞,结果往往因为信息不足而撞墙。Jarbas的Web后台提示、文件系统中的备份文件、SUID可执行文件,这些线索都在信息收集阶段被一步步发现,后续的利用反而水到渠成。

如果不想走SUID提权那一条路,建议把8080端口的命令执行功能拿出来单独研究一下,自己动手验证定时任务投毒的原理。这条路径对理解真实内网环境中的权限维持和横向移动非常有帮助。

最后分享一个小技巧:打完一台靶机后,养成记录自己每一步操作的习惯,包括命令、输出和思考过程。这不仅是为了复盘,也是为了让经验可复用。下次再遇到类似的Web应用或类似版本的Linux系统,这些记录能帮你更快地定位到攻击面。Jarbas之后再往JVIP、HackTheBox的Easy级别刷几台,你会发现自己的渗透思路会越来越清晰。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 21:23:21

GuardAlign:多模态大模型测试时安全对齐机制解析

1. GuardAlign 出现之前,多模态安全对齐到底缺什么看到 GuardAlign 这篇论文标题时,我第一反应不是“又多了一个安全测评”,而是它把 Test-time Safety Alignment 这个关键词顶到了标题中间,并且明确限定在 Multimodal Large Lang…

作者头像 李华
网站建设 2026/9/8 21:23:14

AI Agent科研技能评测:从聊天到163项可验证技能

如果你平时拿大模型去处理文献、写实验方案、整理数据,很快就会有一个感受:它能聊,但在真实的科研问题上经常"假装工作"。让它设计一个对照实验,它交出一份看起来完整、但连样本量和重复次数都没交代的方案;…

作者头像 李华
网站建设 2026/9/8 21:22:26

从构建到满帧:RPCS3 PS3 模拟器五步实操配置指南

从构建到满帧:RPCS3 PS3 模拟器五步实操配置指南 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 面向想在自己电脑上跑 PS3 游戏的玩家,本文按 构建模拟器、装固件、加载游…

作者头像 李华
网站建设 2026/9/8 21:21:41

基于Matlab的分布式光伏配电网集群划分与电压协调控制实现

中午十二点,光伏满发,配电网末端电压冲到1.08 pu,逆变器一片一片地跳闸保护——这是我去年帮朋友调一套分布式光伏并网仿真时遇到的截图场景,也是很多配电网工程师见过无数次的现实。要解决这类电压越限,单纯靠变电站变…

作者头像 李华
网站建设 2026/9/8 21:20:47

多智能体协作平台选型与实战:从AgentScope到Dify的落地指南

上个月接到一个需求,客户开口就说:“帮我搭一个多智能体协作系统。”我听完第一反应不是打开笔记本,而是追问了一句:你说的“多智能体协作”,到底是想解决什么问题?这个问题真的不是抬杠。市面上一眼望去全…

作者头像 李华