CTF训练 ssh私钥泄露
如何从外部进去最终root主机,获取flag
CTF比赛中的两种环境
1.给予在同一局域网的攻击机和靶场机器,以web方式可以访问攻击机,通过攻击机来渗透靶场机器,获取对应的flag值;(一般情况下给于Kali Linux作为攻击机,并且举办方提供计算机)。
2.给予一个网线接口,用户自备工具,直接连接网线,进行渗透靶场机器,获取对应的flag值。
实验环境
1.Kali Linux:192.168.253.12
2.靶场机器:192.168.253.10
目的:获取靶场机器上的flag值
第一步:信息探测
对于只是给定一个对应lP地址的靶场机器,我们需要用对其进行扫描,探测并放的服务。
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限。
-namp -sV 192.168.253.10 挖掘开放服务信息
第二步:分析探测结果
每一个服务对应计算机的一个端口,用来进行通信。计算机实现资源共享和信息通信是通过服务来进行的。常用端0~1023端口,在扫描结果中查找特殊端口。
针刘特殊端口进行探测,尤其对开发大端口的http服务进行排查。
注:探测大端口的信息
对于开放http服务的大端口,可以采取http://ip:port/的形式访问;
查看源代码对应信息;如果没有flag信息,使用工具探测隐藏页面
-dirb http://ip:port/ 对这个服务的隐藏文件进行探测
根目录/robots.txt下存放着不允许搜索引擎探测的文件名和允许被探测的文件名
发现敏感文件taxes
打开ssh,查看内容
第三步:针对隐藏页面分析
直接使用浏览器访问,查看效果、对应源代码可能会获取到flag,或者下一步对应的提示;
挖掘ssh信息,不断访问获取更多泄露的ssh秘钥信息。
对于ssh的认证方式
有一个ID:rsa(私钥),与服务器ID:rsa.pub(公钥)进行加解密对比。对比成功即可登录服务器。
尝试一:是否存在这样一个文件
下载私钥文件
尝试二:下载认证关键字文件
注:不需要下载公钥文件,因为公钥是存储在服务器端的,进行远程访问才需要使用到的。
查看下载的文件
尝试使用私钥文件登录远程服务器
查看私钥的权限
使用认证文件,使用对应的用户名,发现没有对应的用户名。想到之前下载的验证性关键字文件
使用ssh服务端,通过秘钥登录,登录使用用户名和对应的主机名。
收到提示,不能进行连接,需要指纹解锁
ssh登录服务器:ssh -i id_rsa用户名@IP
因为没有赋予权限,所以出现了权限拒绝的提示
重新对私钥进行赋权限
继续远程登录,提示需要填密码
输入simon,提示没有输入正确密码
第四步:解密ssh秘钥信息
使用ssh2john将id_isa秘钥信息转换为john可以识别的信息。
chmod 600 id _isa
ssh2john id_rsa > rsacrack
利用字典解密rsacrack信息
zcat /usr/share/wordlists/rockyou.txt.gz l john --pipe --rules rsacrack
出现了密码文件和密码
ssh登录,输入破解出来的密码,成功远程登录进主机,取得了主机的访问权
查看目录,查看文件
在CTF中要特别注意根目录(root)
说明simon只是普通用户,不是主用户,不能执行root权限
在提升权限前,查看哪些文件需要root权限
-find /-perm -4000 2>/dev/null(从根目录下逐层向下查看具有执行权限的文件,避免错误输出)
读取root权限的文件
尝试溢出,跳转目录