CTF—SSH私钥泄露

CTF—SSH私钥泄露

SSH协议:SSH是Secure Shell的缩写,由IETF的网络小组所制定,SSH为建立在应用层基础上的安全协议,目前较为可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露的问题。基于 TCP 22号端口的服务。

SSH协议认证机制

基于口令的安全验证:只要知道自己的账号和口令,就可以远程登陆到主机。所有传输的数据都会被加密,但不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器来冒充真的服务器,也就是受到“中间人”这种方式的攻击

基于密钥的安全验证:需要依靠密钥,必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上,如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用私有密钥进行安全验证。服务器收到请求后,现在该服务器上你的主目录下寻找你的公用密钥,然后把他和你发送过来的私有密钥进行比较,如果两个密钥一致则验证成功,登陆服务器。

id_rsa就是你的私钥,id_rsa.pub则是你的公钥

SSH协议验证机制的弱点

基于口令的安全验证:基于字典的暴力破解,破解对应的用户名和密码,通过SSH客户端连接到远程主机的SSH服务,实现对远程服务器的一定控制。(得到的不一定是root权限)

基于密钥的安全验证:通过对主机信息搜集,获取到泄露的用户名和对应的密钥。

chmod 600 id_rsa

ssh -i id_rsa 用户名@主机地址 登陆服务器。(不一定是root权限)

信息探测、泄露

对于只是给定一个对应ip地址的靶场机器,我们需要对其进行扫描,探测开放的服务。

渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限

nmap -sV 靶机ip 挖掘开放服务信息

nmap -A -v 靶机IP 探测靶场全部信息

nmap -O 靶机IP 探测靶场的操作系统类型和版本

在这里插入图片描述

分析探测结果

每一个服务对应计算机的一个端口,用来进行通信,常用端口0~1023端口,在扫描结果中查找特殊端口

针对特殊端口进行探测,尤其对开发大端口的http服务进行排查;

对于SSH服务的22端口的靶场,首先考虑:

  1. 暴力破解
  2. 私钥泄露(私钥有没有对应的密码、是否可以找到私钥的用户名)

对于开放http服务的80端口或者其他端口的靶场,首先考虑:

  1. 通过浏览器访问对应的靶场的http服务,如http://靶场IP:端口

  2. 使用探测工具对http目录进行探测,如dirb http://靶场IP:服务端口/

    大于1024的端口是特殊端口

挖掘敏感信息,探测大端口信息

挖掘敏感信息:

使用浏览器对靶场IP的http服务探测,对页面中展示的内容也要注意,尤其是联系人等信息(可能是SSH的用户名信息),递归访问,力争访问每一个dirb扫描到的目录

尤其对robots.txt,以及一些目录的访问,挖掘具备利用价值的信息,对于开放SSH服务的靶场,务必注意是否可以寻找到ssh密钥信息(id_rsa);

对于某些靶场,也可使用nikto扫描器来挖掘敏感信息:–nikto -host 靶场IP地址,特别注意config等特殊敏感文件,要细读扫描结果,挖掘可以利用的敏感信息;

对于开放http服务的大端口,可以采取http://ip:port/的形式进行访问;

查看源代码获取对应信息;如果没有flag信息,使用工具探测隐藏页面

dirb http://ip:port/

在这里插入图片描述

打开robots.txt:

在这里插入图片描述

发现敏感文件taxes,浏览器中打开,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

针对隐藏页面分析

直接使用浏览器访问,查看效果、对应源代码,可能会获取flag,或者下一步对应的提示;

挖掘ssh信息,不断访问,获取更多泄露的ssh密钥信息

利用敏感、弱点信息

对挖掘到的ssh密钥利用:

  1. 修改id_rsa的权限

    chmod 600 id_rsa

  2. 利用私钥登录服务器

    ssh -i id_rsa 用户名@靶场IP地址

    注意:如果id_rsa没有解密密码,可以直接使用,如果有,需要进行对应的破解

(扩大战果)

登录服务器之后做以下操作,

  1. 查看当前用户:whoami
  2. id 查看当前用户权限
  3. 查看 根目录 寻找flag文件

如果是root权限,那么表明靶场被拿下。如果不是,就需要提权,一般情况下,flag文件只属于root用户和对应的用户组

cat / etc / passwd 查看所有用户列表

cat / etc / group 查看用户组

find / -user 用户名 查看属于某些用户的文件

/tmp 查看缓冲文件目录

深入挖掘

通过/etc/crontab文件,设置系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务

cat/etc/crontab 挖掘其他用户是否有定时任务,并查看其对应的内容,执行的任务肯定对应靶场中的某个文件

如果在/etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限

如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限

解密ssh密钥信息

使用ssh2John,将id_isa密钥信息转换为john可以识别的信息。

chmod 600 id_isa

ssh2John id_isa > isacrack

利用字典解密isacrack信息:zcat/usr/share/wordlists/rockyou.txt.gz | john --pipe --rules isacrack

分析用户名、利用ssh登录服务器

ssh_i id_isa 用户名@ssh 靶机ip地址

到这里登入到主机,如果不是root权限,深入探测根目录来获取

提升权限之前,需要先查看具有root权限的文件

find /-perm -4000 2>/dev/null

-perm -4000 :具有执行权限

2>/dev/null:避免错误输出

根据代码审计结果,得到flag,以及提升权限

在这里插入图片描述

反弹shell

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值