SSH–私钥泄露
即如何从外部进入最终获得root主机。
首先,攻击机是我们的kali linux。
同时开启两台虚拟机,两台设置同样的网络模式,我设置的是NAT模式,靶机没有登录密码,需要通过SSH进行远程登录
先登录kali,然后ifconfig查看ip,
用nmap嗅探端口,探测开放服务。
发现开着三个服务,SSH是我们要攻击的服务,31337是特殊端口,打开浏览器,输入IP加端口,并没有发现什么。
那我们探测一下有没有隐藏的文件。用dirb来探测。
这里检查后发现两个对我们有用的敏感文件,我们先看robots.txt这个是为了防止爬虫爬取设置的禁止访问的文件,打开它
发现下面有三个目录,访问taxes,得到第一个flag,经过排查其他两个没有其他的价值了。
然后我们打开第二个敏感文件.ssh
尝试目录下是否存在私钥和认证关键字文件,访问后发现存在,下载后尝试ssh登陆,登陆前需要查看是否可读写,可读写,然后
ssh -i id_rsa用户名@主机名
那么我们怎么得到用户名呢,想到我们下载的认证关键字文件, 打开发现了我们登陆的用户名
然后尝试ssh登陆,提示错误,因为其他权限过高,我们需要修改权限,使用chmod 600 id_rsa修改权限,再尝试登陆,发现需要登陆密码,得到密码后
进入root目录。
ls后发现目录下有flag.txt,但是没有权限打开。说明我们现在不是root权限,需要获取。得到root权限后,
我们通过 find / -perm -4000 2>/dev/null 查看我们能执行的文件
cat read_message.c查看源码,得到第二个flag
c的大概意思是输入一段文字和已知字符串simon进行匹配,匹配成功输出一段文字和message目录下的一个文件。
从c代码中我们可以看出,我们输入的为一个长度20的数组,如果溢出会不会执行?(应该和c中的execve函数有关系)
我们在前面输入simon匹配c,再加入十五个字符,之后再接/bin/sh提升下权限
成功提权后,然后我们用提权后的用户去访问之前的flag.txt,拿到第三个flag。