第1步先看自己是谁ifconfig / ip addr你打开Kali第一件事不是急着扫全网而是先敲ifconfig或者ip addr想的是什么我现在在哪段网络我拿到的IP是什么网关大概在哪报告里的线索你看到inet 192.168.100.100掩码255.255.255.0说明你在192.168.100.0/24 这个C段。目的后面所有扫描范围都基于这个结论来定不会瞎扫整个B段浪费时间。第2步网段存活探测nmap -sn接下来你才做主机发现而不是直接扫端口nmap -sn 192.168.100.0/24为什么不用-p-全端口先扫惯性思维坑点很多新手一上来就nmap -A流量大、慢还容易触发IDS/防火墙。正确思路先用ARP Ping同网段或ICMP Ping跨网段确认「谁活着」。你看到的结果192.168.100.100 → 是你自己192.168.100.200 → 是新发现的目标这时候你心里要有数接下来所有操作目标IP就是192.168.100.200。 补充技巧如果-sn没扫到机器别急着放弃可以换思路试试nmap -Pn 192.168.100.0/24跳过Ping直接扫端口或者换时间策略nmap -T4 -sn避免被限速。阶段二端口与服务识别 —— 找「能打进去的门」核心思维端口 入口服务 攻击面。第3步扫目标端口nmap -sV针对上一步发现的192.168.100.200nmap -sV -p 1-1000 192.168.100.200为什么先扫1-100090%的常见服务都在前1024个端口里效率高。你期待看到什么22 → SSH80/443 → Web3306 → MySQL445 → SMB推理动作如果有80端口下一步就去浏览器访问看是不是老版本CMS比如WordPress、Discuz。如果有22端口记录版本后面可以查有没有EXP。如果啥都没开说明可能只开了高位端口再补一个nmap -p-。⚠️ 惯性思维提醒很多同学看到「没开常见端口」就放弃了其实可以试nmap -sS -p 10000-65535 192.168.100.200第一步处理干扰信息清理 Nmap 警告你看到的mass_dns: warning: Unable to open /etc/resolv.conf...虽然不影响这次扫描结果但会干扰视线甚至在后续需要反向解析域名时出问题。思考逻辑在做渗透测试时保持输出界面的干净整洁非常重要这能让你一眼看到关键信息不被警告淹没。动作# 备份并重建 resolv.conf 文件 echo nameserver 8.8.8.8 /etc/resolv.conf(补充这是为了告诉系统用谷歌的 DNS避免后续操作因为找不到 DNS 服务器而弹警告。)第二步深度解读图一的核心情报思考链看着终端里这三行结果21/tcp open ftp vsftpd 3.0.322/tcp open ssh OpenSSH 9.2p1 ...80/tcp open http Apache httpd 2.4.65你的思考路径应该是这样的看 22 端口 (SSH)版本是 OpenSSH 9.2p1。想法OpenSSH 9.x 版本目前相对较新公开的未授权访问或 RCE远程代码执行漏洞极少。结论暂时放弃 SSH除非有弱口令。看 21 端口 (FTP)版本是vsftpd 3.0.3。想法vsftpd 是一个经典的 FTP 服务。版本号3.0.3​ 是一个非常关键的情报在渗透测试中版本号就是武器。我的大脑会立刻检索“vsftpd 3.0.3 有没有历史漏洞”补充知识vsftpd 2.3.4 有个著名的笑脸后门Backdoor但 3.0.3 没有那个后门。不过它依然可能存在其他漏洞或者配置不当比如允许匿名登录。结论这是一个重点怀疑对象。看 80 端口 (HTTP)Apache 2.4.65。想法这是 Web 服务通常是信息量最大、突破口最多的地方。Linux 上的 Apache 2.4.x 本身漏洞不多但网站程序CMS可能会有漏洞。惯性思维如果我扫了端口没看到明显的漏洞利用点我通常会习惯性地访问http://192.168.100.200看看长什么样。结论必看而且是下一步的首要动作。第三步下一步的具体动作按优先级排序根据上述分析你的下一步动作应该是动作 A浏览器访问 Web 服务最高优先级目的确认 Web 应用的内容。也许是个开源 CMSWordPress、Drupal也许是自定义页面也许有 robots.txt。操作在 Kali 的 Firefox 浏览器里输入http://192.168.100.200预期与后续如果看到一个登录框 - 尝试默认密码或 SQL 注入。如果看到一个首页 - 右键查看源码找注释、路径、技术栈比如有没有wp-content目录。如果看到 403 - 可能需要目录爆破。动作 B检查 FTP 服务状态vsftpd 3.0.3目的确认 FTP 是否允许匿名登录或者是否存在已知 CVE。操作# 1. 尝试匿名登录 ftp 192.168.100.200 # 用户名输入 anonymous密码留空或随便输预期与后续如果登录成功 - 直接拖文件下来或者上传 Webshell如果有权限的话。如果失败 - 记下这个服务继续往下走。FTP 21端口死胡同你尝试登录 FTP (ftp 192.168.100.200)输入用户名kali失败。系统提示530 This FTP server is anonymous only.这个FTP只允许匿名登录。动作 C目录爆破DirBusting—— 针对 80 端口的深度挖掘思考逻辑人眼浏览网页只能看到表面机器可以帮你找隐藏的目录如/admin,/backup,/phpmyadmin。操作等你访问完网页对网站有个大致印象后做dirb http://192.168.100.200 /usr/share/wordlists/dirb/common.txtWeb 80端口撞南墙你运行了dirb进行目录扫描。结果只扫出了两个东西index.html首页大小10701这是正常的。server-status状态码403Forbidden禁止访问。关键点server-status是 Apache 的一个状态页面用来给管理员看服务器负载的。你访问它会显示 403说明你没有权限看。但这暴露了一个重要信息目标的 Web 服务运行在 Apache 上而且开启了这个模块。现在的情报板是这样的端口服务状态思考权重80​Apache 2.4只有 index.html高Web 是最大入口21​vsftpd 3.0.3只允许匿名中看看能不能下载配置文件22​OpenSSH 9.2无漏洞低除非有弱口令思考结论正面强攻Exploit不行因为没有现成的 RCE 漏洞。那我们要走“曲线救国”路线信息泄露 弱口令 配置错误现在先登录浏览器看网站信息这个页面叫做Apache2 Debian Default PageApache2 的默认测试页。在渗透测试中“默认页面”通常等于“无效页面”或“占位符”。但这并不代表没有信息相反这种页面往往能提供关于目标环境的关键线索。让我们像侦探一样从这张图里榨取真正有用的情报1. 核心信息确认 Web 应用状态现象页面显示 “It works!”。解读服务器的 Apache 服务是正常运行的。推论这是一个纯粹的静态页面目标机器的 Web 服务目前没有挂载任何自定义的网站程序比如 WordPress、DVWA、或者公司业务系统。这意味着你无法通过寻找特定 CMS 的漏洞来直接突破比如没有登录框没有插件路径。2. 路径线索/var/www/html/注意看这段文字replace this file (located at/var/www/html/index.html)这是整页文字里最有价值的一句话。解读它直接告诉你当前这个页面的物理存放位置在服务器的/var/www/html/目录下。渗透思维下一步动作在 Linux 系统中/var/www/html/是 Web 根目录。如果我能找到办法上传文件或者存在其他漏洞如文件包含这个路径就是我写入 Webshell 的目标地址。同时这也暗示了服务器的文件系统结构为后续提权时的路径猜测做准备。3. 配置文件线索/etc/apache2/再看这段话Configuration layout .../etc/apache2/解读它列出了 Apache 的配置文件夹。渗透思维虽然你作为访客无法直接读取这些文件但在后续的“本地文件包含 (LFI)”或“路径穿越”攻击中如果目标存在漏洞你可以尝试去读取这些配置文件。例如读取/etc/apache2/apache2.conf可能会泄露服务器的一些全局配置甚至有时能找到数据库连接字符串。4. 排除法没有隐藏目录现象DIRB 扫出来的结果是index.html和server-status。解读server-status是 Apache 自带的状态页不需要密码就能访问但这里返回了 403说明被管理员禁用了。推论除了这个默认首页目前没有发现其他隐藏的管理后台、上传页面或 API 接口。总结这个页面告诉你什么坏消息目标没有复杂的 Web 应用没有现成的登录框没有插件漏洞可挖。好消息你拿到了服务器的真实物理路径​ (/var/www/html/)这是一个极好的锚点。下一步的“思维跳跃”老师给你的建议既然 Web 页面是个空的你有两个大方向可以走方向 A回到 FTP (21端口)既然 Web 没戏就去搞 FTP。还记得那个anonymous only吗动作尝试ftp 192.168.100.200用户名输入anonymous密码随便填或直接回车。目的看看匿名用户能不能下载文件。如果能下载也许能下载到这个/var/www/html/目录下的备份文件比如.bak或.sql里面可能有密码。方向 B尝试“目录回退”或“子域名”有时候 Web 服务配置了多个站点或者默认页面只是个伪装。动作在浏览器里访问http://192.168.100.200/.git/或http://192.168.100.200/backup/。目的测试是否存在目录遍历或备份文件泄露。方向 C检查 80 端口的其他服务Apache 默认是 80 端口有没有可能 8080 或其他端口也有服务动作重新扫一下端口nmap -sV -p 1-65535 192.168.100.200看看有没有漏掉的 HTTP 服务。老师的最终建议现在你的“武器库”里没有直接的 Exploit漏洞利用所以“信息收集”要更细致。先搞定 FTP 的匿名登录这是目前看起来最实在的突破口。如果 FTP 也没东西再考虑用Nikto​ 或Wpscan​ 对 80 端口做一次更深度的扫描虽然它是默认页但工具能发现一些 DIRB 看不到的 Header 信息或备份文件。登录成功看看里面有什么下一步把它下载下来现在你需要把这个文件“搬”到你的 Kali 机器上。在ftp提示符后面输入下面这个命令并回车get bitacora-01.txt回到你的 Kali 终端后输入下面这个命令来查看文件里写了什么尝试 SSH 登录最有可能既然有了疑似用户名tripulante7我们可以试试能不能通过 SSH远程登录进去。在 Kali 终端输入ssh tripulante7192.168.100.200密码可能是什么试试空密码直接回车。试试常见的密码password,123456,tripulante,admin。或者密码可能就在那篇日记里比如NoSoyAlone之类的虽然这篇日记没写明显密码但有时其他日志里有SSH 的“拒绝”是什么意思你看到的Permission denied意味着系统里有tripulante7这个用户。但是这个账户的密码不是​tripulante7也不是​tripulanteX更不是空密码。作者并没有打算让你通过“猜密码”的方式直接进入系统。3. 真正的突破口在哪里你之前在 FTP 里遇到了550 Failed to open file错误这说明 FTP 匿名用户无法读取/etc/apache2/apache2.conf。结合 SSH 登录失败的现状解题逻辑通常是这样的你需要提升权限既然普通用户进不去你需要找漏洞。回到 Web 服务HTTP你最开始是在浏览器里访问了192.168.100.200。还记得你之前下载的apache2.conf吗虽然 FTP 拿不到但如果你能通过 Web 服务器比如利用目录遍历漏洞、或者文件包含漏洞把apache2.conf下载下来里面可能会有数据库的密码、其他用户的密码哈希或者是网站的配置漏洞。检查是否有其他端口在 Kali 终端输入nmap -sV 192.168.100.200看看除了 21 (FTP) 和 22 (SSH)还有没有其他开放的端口比如 80, 443, 8080, 3306 等。总结别再纠结密码了tripulante7这个账户现在是个死胡同。回到前面的端口扫描尝试“子域名”爆破如果上面都不行有时候漏洞不在根目录而在子域名。试试ffuf -w /usr/share/wordlists/seclists/discovery/dns/subdomains-top1million-110000.txt -u http://FUZZ.192.168.100.200发现不行尝试ssh爆破阶段三拿到权限 —— 从「能看见」到「能控制」第一步建立 SSH 连接直接在终端输入以下命令登录虽然你刚才用 Hydra 测出来了但正式登录建议不加-v参数界面更干净ssh tripulanteX192.168.100.200系统提示Are you sure you want to continue connecting (yes/no)?时输入yes。提示输入密码时输入你刚刚破解出来的candy1输入时屏幕不会显示字符输完直接回车。第二步初步信息收集Reconnaissance登录成功后你的命令行提示符会变成类似tripulanteXorca:~$的样子。这时候千万别乱动先按部就班地收集情报。输入以下命令把结果记下来1. 查看当前用户是谁以及有哪些特权id看uid是不是 0root以及有没有加入一些奇怪的组比如sudo,docker,adm。2. 查看当前目录下有什么找隐藏文件ls -la重点看有没有.txt,.sh,.py结尾的文件或者名字叫flag,user.txt,proof的文件。3. 重点突破检查.logs-sombrios目录名字就很可疑目录名字翻译过来是“黑暗日志”或“隐秘日志”这通常是出题人藏线索的地方。操作cd .logs-sombrios ls -la cat *预期​ 里面可能有密码、下一个用户的 SSH 密钥、或者提示你去某个特定端口/文件找东西cat /etc/passwd找找除了tripulanteX之外还有没有其他看起来像人名的用户比如orca,admin,secundario等。成功收集信息