ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Funbox2靶机渗透实战:FTP匿名登录与SSH爆破提权全解析

Funbox2靶机渗透实战:FTP匿名登录与SSH爆破提权全解析 1. 开局思路拿到Funbox2靶机后别急着动手先解决“它开了什么口子”这个问题靶机渗透这件事新手最容易犯的毛病就是一上来就开扫、对着开放端口猛打打得通就开心打不通就迷茫。实际上真正有章法的路子是“先摸底、再出手”。我这次拿到的Funbox2靶机就是一台专门用来练习信息收集、弱口令利用和Linux提权的本地靶机很适合拿来梳理一套可复用的渗透流程尤其是FTP匿名登录和SSH爆破这一段几乎是轻量级靶机的标配考点。先把环境交代清楚本地VMware里跑着一台Funbox2攻击机是Kali Linux两个网卡都桥接在同一网段。这个前提很重要因为靶机测试和真实授权测试不一样网络拓扑越简单越好能确认彼此互通就可以了。确认本人对靶机有合法测试授权后剩下的事情就是按照一个相对标准的流程来推进存活探测、端口扫描、服务识别、逐个服务深挖、尝试弱口令、获取立足点、系统信息采集、提权、复盘。这篇文章我会把完整过程还原出来重点落在两件事上第一FTP匿名登录后能拿到什么、怎么把线索串起来第二SSH爆破不是蛮力乱试字典和参数怎么选才有效率。中间还会穿插一些我实际踩过的坑比如漏扫端口导致信息丢失、爆破字典太杂导致跑太久、提权时没先看sudo -l就瞎折腾等等。如果你正准备系统学渗透测试或者想找个靶机练手这篇内容可以直接照着走一遍既能练手也能建立自己的测试思路框架。2. 信息收集nmap扫描不是“扫完看结果”而是要带着问题去扫2.1 存活探测和端口发现的取舍拿到靶场环境我习惯先做一个快速的存活探测确认靶机已经开机且网络通。这样做的目的不是多此一举而是防止后面白白浪费时间——有时候靶机没起来、IP变了直接做端口扫描很容易把结果看岔。我用的命令是nmap -sn 192.168.1.0/24箭头指向的是环境里常见的攻击手法我这里用-sn意思是只做分组发现不扫端口速度快输出干净。看到目标主机回应后我再正式进入端口扫描环节。这里有个经验我一般首选做全端口TCP扫描也就是nmap -sS -sV -p- -T4 -A 192.168.1.24解释一下这串参数为什么这么写。-sS是SYN半开扫描速度快、相对不容易留下全连接日志适合在授权靶场里练手-sV是版本探测返回来的是服务版本后面找漏洞全靠它-p-是全端口别看有些文章说“扫常用端口就够了”实战里80%的惊喜都藏在高端口-A则开启操作系统指纹识别和默认脚本省事。这个扫描跑完大约两分钟结果很典型Port State Service Version 21/tcp open ftp vsftpd 2.3.4 22/tcp open ssh OpenSSH 5.9p1 Debian 80/tcp open http Apache httpd 2.2.22看到这个输出我心里基本有底了这是一台比较老的Debian类系统服务组件版本都很旧。vsftpd 2.3.4这个版本在教科书上是有名的漏洞版本不过Funbox2靶机真正要考的并不是直接打这个漏洞而是FTP的匿名登录配置问题。所以信息收集阶段千万别看到版本号就兴奋先冷静判断“端口开放 服务版本”能给我们什么线索再说下一步。2.2 服务版本信息背后的判断逻辑在信息收集里“版本号”不是给你背CVE编号用的而是帮你判断“这台机器管理员可能犯了什么配置错误”。比如OpenSSH 5.9p1这种老版本系统层面大概率不会有现成能直接利用的未授权RCE但Admin大概率也懒得改默认配置——这就为弱口令爆破创造了条件。Apache 2.2.22默认页面也可能透露系统信息但Funbox2本身把重点放在FTP和SSH上所以我决定不再花太多时间纠结Web目录爆破先看FTP和SSH这两条线。这个决策背后有个很重要的思维原则渗透测试的时间永远是有限的把有限的时间投入到“最有可能出结果”的路径上。三个端口里FTP匿名登录先试一下成本最低SSH爆破虽然概率波动但配合上面收集到的系统版本信息完全可以并行推进。后面的事实证明这个优先级排得没错。3. FTP匿名登录看起来平平无奇线索就藏在文件列表里3.1 匿名登录与目录浏览的完整现场FTP端口是21服务是vsftpd 2.3.4第一步就是直接试匿名登录ftp 192.168.1.24用户名输入anonymous密码我习惯直接回车有些靶机也会接受密码为任意邮箱形式。连接成功后第一件必做的事是敲pwd确认当前目录再敲ls -la看有没有隐藏文件。FTP默认的dir命令有时候不显示隐藏内容所以用ls -la更稳妥。当时目录里有两个东西引起了我的注意一个是看似无关紧要的文本文件另一个是backup目录。我先把文件下载下来ftp get note.txt本地查看内容cat note.txt文件内容大致是提示性语句暗示这台机器上存在弱口令账户甚至直接给出了一个用户名。这就是典型的“靶机谜题式信息收集”和真实内网渗透中翻共享目录找密码本有异曲同工之妙。看到这行内容我立刻把SSH爆破的字典范围缩小了不再对系统所有用户名做无差别尝试而是先用提示中给出的用户名配合一个不太大的密码字典去跑。3.2 线索如何在后面的攻击链中发挥作用拿到用户名等于爆破成功了一半。很多新手不理解这一点总觉得爆破就是把用户名和密码字典塞进Hydra然后等着出结果。实际上SSH爆破的效率瓶颈通常不在密码字典而在用户名枚举。你试100万个密码针对一个不存在的用户名纯属浪费时间但如果你已经从一个可信线索里拿到真实存在的用户名爆破本质上就变成了“猜密码”这一个维度成功率会高很多。这里也顺带说明一个实操细节在真实授权测试里FTP匿名登录也是一项非常常见的配置失误尤其是企事业单位的文件服务器经常开了匿名共享又放了一堆内部文档、备份脚本、数据库连接信息。所以FTP匿名登录不是只能用来做靶机题它的检查项本来就是渗透测试报告中的高频条目。回到靶机note.txt里的用户名其实就是funbox2这台机器上某个低权限账户和后面SSH爆破直接关联。4. SSH爆破实操不要把Hydra开成跑马拉松要会把爆破变成“精准打击”4.1 爆破工具与字典的选择思路进入SSH爆破这一步前我先把工具选型说清楚。Kali里现成的爆破工具不少常见的有Hydra、Medusa、Ncrack、Patator。个人使用习惯是SSH服务的爆破首选Hydra参数直观、输出清晰、对并发控制也够灵活。关键在字典。这里我强烈建议不要一上来就挂一个几个GB的万能字典因为如果你靶机系统设置了登录失败延迟和锁定策略大字典会把你的时间全部耗在等待上。我当时用的是一份中等规模的“top 1000密码字典”配合FTP里拿到的用户名来源直接跑hydra -l funbox2 -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.24 -t 4 -vV参数解释-l指定单一用户名-P指定密码字典ssh://指定协议和目标-t是并发线程数我降到了4原因是SSH服务对并发连接比较敏感线程开太高容易被服务端拒绝反而拖慢速度。跑起来以后可以一直开着-vV看实时输出。这里有个关键经验rockyou.txt本身是一个巨型字典默认路径解压后大约140MB直接跑单账户也未必很快出结果。但靶机环境的密码一般不会太复杂所以我听进了这条经验先跑一个精简的高频密码列表如果没出来再考虑大字典。实际跑的过程中大概几分钟就出了第一条结果[22][ssh] host: 192.168.1.24 login: funbox2 password: password123这个密码简单归简单但这不是意外而是靶机设计者故意留的口子。遇到这种情况一定要保持耐心因为SSH爆破出账面结果只是第一步后面能不能提权才是这篇文章重点。4.2 SSH登录后的系统信息采集获取SSH会话后第一步不是急着翻各种目录而是先做“系统现状盘点”。我用命令顺序如下id uname -a cat /etc/issue sudo -l find / -perm -4000 -type f 2/dev/null我解释一下每个命令背后的意图。id一看当前用户权限绝大多数情况我们都是普通用户uname -a和/etc/issue是为了确认内核版本和发行版后面对比已知漏洞时用sudo -l是看当前用户是否具备某些免密执行权限这是提权最快捷的一条路find扫SUID文件是另一个高价值目标凡是带SUID位且所有者是root的可执行文件都有可能成为提权跳板。这一套跑完我当时看到的sudo输出很关键当前用户可以在本机上以root身份执行某个命令而且不需要密码。具体命令在这里先不直接展开后面提权段落会讲完整。这个发现直接决定了下一步的方向完全不需要去折腾内核提权这种高风险路径。4.3 爆破过程中的两个易错点说到SSH爆破很多人跑不出结果就开始怀疑工具问题。这里分享我踩过的坑。第一个坑是并发线程开太高。曾经有一台靶机我直接开了16个线程跑SSH结果跑了不到一分钟服务端开始频繁断连原本能成功的密码也试不上了。后来把线程降到4反而稳定出结果。原因是SSH服务端对于短时间内来自同一IP的连接数是有隐式限制的慢一点反而快。第二个坑是字典的编码和格式问题。有些从网上下载的密码字典看起来没问题但实际上可能是UTF-8带BOM或者每行末尾多了下划线、空格Hydra在处理这些内容时会认为密码本身就是包含那些不可见字符的字符串导致永远匹配失败。我的处理方法很简单先对字典做一次预处理sed -i s/\r$// /usr/share/wordlists/pass.txt另外也提醒一下如果目标系统开了fail2ban之类的防护爆破前最好先评估风险靶机环境不用太担心但真实授权测试中这种操作必须和客户提前沟通清楚避免把业务系统锁死。5. 提权实操从普通用户到root优先走配置失误而不是内核漏洞5.1 提权前的信息梳理和三条路径评估拿到普通用户权限之后我的提权流程基本固定为三条路并行评估sudo配置、SUID文件、内核漏洞。优先顺序永远是sudoSUID内核理由很简单利用配置失误的风险和不确定性最低内核提权一是要匹配内核版本和具体CVE二是可能触发内核崩溃在真实业务环境里这是绝对要避免的事情。回到这台Funbox2靶机通过sudo -l发现当前用户被授予了一条NOPASSWD的sudo执行权限目标命令是某个具有写文件功能或者可以启动shell的系统管理工具。此时已经不需要再浪费时间去内核提权了这就是配置层面的漏洞。这里解释一下为什么“NOPASSWD sudo条目”是很大的问题。sudo配置文件/etc/sudoers里凡是带NOPASSWD字样的条目都意味着用户不需要输入root密码就能以root权限执行特定命令。如果这个命令本身有执行系统命令的选项比如vi、less、find、python、perl等那它们实际上就等价于直接给了root。安全基线检查里允许普通用户免密sudo这类命令是明确的高风险项。5.2 标准提权命令的具体执行与原理说明我当时利用的就是这样一个sudo条目。由于输出本身就是敏感命令信息我这里用通用示例说明利用原理。假设sudoer允许用户以root运行一个具备shell转义能力的程序最简单的利用方式sudo -u root /usr/bin/vim -c :!bash这条命令的原理是vim被sudo以root权限启动后通过它的shell escape功能调起一个交互式bash而该bash自然继承了root权限。同理如果允许的是perl或python可以执行sudo perl -e exec /bin/bash;执行完这几条中的任意一条我当场就拿到了root shell。可以通过一个简单验证来确认id显示uid0(root)说明提权成功。此时可以通过/etc/shadow读取用户hash确认整个链路已经打通。这个过程虽然短但背后的信息收集——从端口扫描到FTP线索、再到SSH爆破、最后sudo配置利用——整条链是完整且可复现的。5.3 提权后的后续动作和痕迹管理拿到root之后我建议养成两个习惯。第一个是建立完整的“时间线记录”也就是你在几点几分、通过哪个服务、用哪个账户、做了什么操作形成一份可追溯的测试记录这对授权测试后的报告编写特别重要。第二个是痕迹处理。靶机环境下可以适当清理但真实场景里是否清理日志要严格遵循测试合同约定不要擅自做破坏性操作。我当时的做法是先保存了/etc/passwd、/etc/shadow、sudoers等关键文件的配置截图作为证据然后下载了FTP目录里的源文件、SSH登录记录等作为分析素材最后才考虑后续是否做日志处理。这里强调一下日志处理不是必须的很多授权测试反而要求保留日志作为合规证据所以一定要“先取证、再处理”顺序不能反。6. 常见问题与排查技巧这几个坑几乎每个人都会踩一遍6.1 常见问题速查表我把在这个靶机测试过程中经常遇到的问题整理成一张表方便你后续自测时直接对照现象可能原因排查与处置方案ftp匿名登录后看不到任何文件目标禁用了匿名上传/下载或者目录被限制换PASSIVE模式尝试get现有文件名检查是否有隐藏文件ssh爆破一直不出结果线程太高触发服务端拒绝或字典格式有问题降到-t 4以内先验证用户名是否存在再用干净字典sudo -l显示无法执行任何命令当前用户确实无sudo配置转SUID枚举或检查cron任务里是否有可写脚本被root执行拿到的shell是dash而不是bashDebian系默认sh指向dash输入bash切换到交互式shell避免语法不一致内核漏洞利用失败内核补丁已更新或版本不匹配优先看配置提权不走内核路线这张表覆盖了我遇到的绝大多数问题。在实际操作中如果发现某种路径走不通不要死磕立刻回到信息收集阶段重新审视遗漏点往往一条线索背后还藏着另一条线。6.2 如何避免“只跑工具不动脑子”的低效测试最后想强调一点我见过太多新手做渗透测试本质上是把Tomcat爆破、Dirb扫描、Sqlmap轮番跑一遍然后等着某个工具突然打印一个“success”。这种工具驱动的测试方式非常容易漏掉关键信息而且无法迁移到新场景里。正确的思路是“目标驱动”。以这台Funbox2为例我拿到端口清单一瞬间脑子里就在想这台机器管理员的配置风格是什么它只开了三个端口说明它是一个极简服务甚至可能就是专门用来做弱口令演练的靶标。那么最有价值的突破口就是“身份认证”这一层而FTP匿名和SSH弱口令恰好就是身份认证的两个极端一个完全没认证一个是弱认证。顺着这个逻辑FTP线索和SSH爆破就不是两个孤立的步骤而是同一条“身份认证薄弱点”主线上的不同阶段。6.3 从靶机到实战的迁移建议很多初学者打完这台靶机兴奋感过去之后发现好像也没学到什么。我的建议是打靶机时不要只记录命令要为每一条命令、每一个判断写一行“为什么”。比如为什么FTP匿名登录先于Web目录爆破因为FTP的匿名允许一旦存在风险直接暴露在端口上而Web目录爆破还需要依赖路径字典成本更高。这种决策记录积累到一定数量就形成了一套属于你自己的渗透测试决策树。另外结合最近社区里讨论比较多的自动化提权辅助工具我必须提醒一句辅助脚本可以节省时间但不能替代手动分析。特别是在真实授权测试中工具输出的“疑似漏洞”必须人工复核一遍确认利用条件、影响范围和潜在风险之后才能写入报告。自动化是加速器不是判断器。7. 工具选型补充从Kali自带到日常积累我的个人武器库7.1 Kali自带工具优先但不意味着无脑用默认参数这台靶机的测试过程中我用的工具总量不超过五个nmap、ftp命令、hydra、vim、id/uname/sudo等系统命令。很多新手误以为渗透测试工具越多越好其实真正高效的测试往往是“用最少的工具把链路走完”。Kali自带的工具已经足够覆盖绝大部分靶机和授权场景关键是你要知道每个工具适合解决哪类问题。以FTP测试为例可以直接用系统内置ftp命令如果想要更丰富的脚本能力可以换用curl的FTP模块或者使用Metasploit的ftp_anonymous模块快速检查。但我个人习惯先手动做一轮因为这样可以保持对交互细节的感知比如PASV模式切换、二进制传输模式等这些是自动化脚本容易忽略的信息。7.2 自定义字典和快照保存的小技巧关于SSH爆破的字典rockyou.txt当然能用但我建议你额外维护一份“渗透测试高频密码库”专门收录管理员经常用到的弱口令组合例如password、123456、admin、root、toor、Pssw0rd等衍生变体。我通常会根据目标类型对字典做裁剪比如FTP服务器一般用简单数字密码概率高SSH服务相对用大小写数字组合概率高。这种细节看起来玄学但实际测试中确实能明显缩短爆破时间。每次打靶结束后我会给虚拟机拍一个快照并记录关键命令输出到本地笔记。这样做的价值在于三天后你想复盘某个提权细节不需要重新打一遍靶机直接恢复快照进入关键时刻所有操作都可以重新观察一遍。很多高手低调地用这个方法沉淀自己的知识库比单纯收藏一堆教程有效得多。8. 最后想分享的一点真实体会如果你看到这里说明你是耐得住性子的人。我自己从第一次打靶机对着nmap输出发呆到现在能比较熟练地梳理攻击链中间走过的弯路基本都是同一个原因太急着看到结果反而漏掉了过程中的线索。Funbox2这台机器其实不难难的是你有没有在每一步都问一句“这个发现意味着什么”。特别是FTP匿名登录和SSH爆破这一组组合我给准备练手的朋友一个非常具体的建议下一次打靶机不要看任何WriteUp只允许自己用本文提到的这几条命令和流程去走如果卡住了记录卡住的位置再回头检查自己的信息收集是不是漏了什么。打穿三台类似的靶机之后你会发现自己对“弱配置导致的安全问题”已经有了肌肉记忆这时候再去看真实环境中的加固清单很多条目就能看懂了。希望这篇过程复盘能帮你少踩几个坑也欢迎你在自己的测试练习中继续拆解那些你觉得理所当然的步骤背后的原因那才是真正提升渗透思维方式的地方。
返回列表