ctf训练 ssh私钥泄露
1-2 环境搭建
ssh私钥泄露是要在VM虚拟机中进行的。首先安装好VM虚拟机(我的另一个博客详细介绍VM的安装)
(1)打开虚拟机和打开ssh私钥泄露靶场
并且本虚拟机和靶场的网络连接都要相同
(2)接下来打开本虚拟机的终端,并找到自己虚拟机的IP(是虚拟机的IP地址)在终端上输入“ifconfig”这个是找虚拟机的ip地址代码,然后找到自己虚拟机的IP地址,如图:
(3)接下来我们使用netdiscover命令 netdiscover -r ip/子网掩码
然后扫描出192.168.157这个网段的存活主机。
第二章 SSH服务
2-1 SSH私匙泄露
首先对靶场机器进行探测,我们使用nmap命令 nmap -sV ip
这里我们可以看到靶场机器开放的端口和对应的服务,此靶场机器上开启了ssh服务和两个http服务。
接下来我们分析特殊端口,尤其对开放http服务的大端口(本靶机上31337端口开放了http服务)
怎么探测http端口信息?我们可以使用虚拟机内的浏览器来浏览http服务的信息
这里并没有信息,那这里有没有隐藏文件?我们使用dirb命令来探测隐藏文件
成功探测到五个隐藏文件(隐藏起来的肯定有问题)
这里有两个敏感目录robots.txt和.ssh,我们打开robots.txt看看它把什么藏住了。
这里有三个目录,taxes是英文单词?打开获得第一个flag
我们打开ssh时:
这目录中有私钥和公钥,运行服务时私钥公钥进行对比,对比成功则运行服务。
我们发现访问id_rsa(私钥)和authorized_keys(认证关键字)文件可以进行下载(公钥不用下载)下载好后把文件移到桌面,
这里就存在私钥泄露。
接下来我们先切换到桌面
对私钥进行赋读写权限,ls -alh查看权限,chmod 600 文件名
有了私钥,我们就可以尝试使用ssh命令对靶机进行远程登录(ssh -i 私匙 用户名/id 用户名在认证关键字中泄露)
我们登录时提示我们要输入密码,
我们有了私钥文件就可以从私钥文件中把密码解出来,使用ssh2john和zcat进行解密。
上一条命令对私钥信息进行转换,转换成john可以识别的信息;
后一条命令用zcat命令,使用字典。。。管道。。规则。。什么什么的进行解密,得到一个密码 starwars
成功远程登录!pwd查看下当前目录,ls查看下当前目录文件。
发现并没有我们想要的,这时候我们应该想到去访问root目录,在ctf比赛中根目录root都是有重要信息的
这条命令是从根目录开始查找,看有哪些命令是具有执行权限的。其中2>/dev/null用于防止错误信息。
发现有一条命令是read_message,而我们目录下刚好有个c代码叫做read_message.c,查看一下,发现第二个flag和一段c代码。
c的大概意思是输入一段文字和已知字符串simon进行匹配,匹配成功输出一段文字和message目录下的一个文件。
从c代码中我们可以看出,我们输入的为一个长度20的数组,如果溢出会不会执行?(应该和c中的execve函数有关系)
我们在前面输入simon匹配c,再加入十五个字符,之后再接/bin/sh提升下权限?
成功提权,然后我们用提权后的用户去访问之前的flag.txt,拿到第三个flag。