CTF2-SSH服务渗透

SSH服务渗透

ssh协议

SSH为Secure Shell 的缩写,由IETF 的网络小组(Network Working Group)所制定; SSH为建立在应用层基础上的安全协议。

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台一包括HP-UX、 Linux、 AIX、 Solaris、 Digital UNIX、lrix,以及其他平台,都可运行SSH。基于TCP 22号端口的服务。

ssh协议认证机制

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

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

ssh协议认证机制的弱点

基于口令的安全验证
基于字典的暴力破解,破解对应用户名和密码,通过SSH客户端连接到远程主机的SSH服务,
实现对服务器的一定控制。(但是不一定是root权限)
基于密钥的安全验证
通过对主机信息收集,获取到泄露的用户名和对应的密钥。
即可以使用一下方式:
chmod 600 id_ rsa
此行代码用于赋予该文件可读可写的权限;

ls -alh
查看私钥文件是否可读可写;

ssh -i id_ rsa 用户名@主机IP地址
登陆服务器。(但是也不一 定是roo权限)

具体方法

一般使用kali linux作为攻击机,在同一局域网中攻击机和靶场机以web方式访问攻击机来攻击靶场机。利用攻击机攻击靶场机器,获取靶场机器的flag值。

信息探测

对于给定IP地址的靶场机器,对其进行渗透测试,首先需要考虑靶场机器开放的服务。

探测靶场开放的服务与服务的版本

– nmap -sV 靶场IP地址
在这里插入图片描述

探测靶场全部信息
–nmap -A -v 靶场IP地址
在这里插入图片描述

探测靶场的操作系统类型与版本
–nmap -O 靶场IP地址
在这里插入图片描述

分析探测结果

对于SSH服务的22端口的靶场
首先考虑
1、暴力破解
2、私钥泄露(私钥有没有对应的密码、是否可以找到私钥的用户名)

对于开放http服务的80端口或者其他端口的靶场
首先考虑
1、通过浏览器访问对应的靶场http服务,如 http://靶场IP地址:http服务端口
2、使用探测工具对http的目录进行探测,如 dirb http:/ /靶场IP地址:http服务端口/

每一个服务对应一个端口,一般常用的端口号为0~1023端口,要特别注意特殊端口(大于1024的端口)

挖掘敏感信息

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

  2. 尤其对robots.txt(这是允许或者不允许搜索引擎探测的文件)、以及一些目录进行访问,挖掘具备利用价值的信息。对于开放ssh(这是用于实现远程计算机对服务器进行的远程操作)服务的靶场,务必要注意是否可以寻找到ssh私钥信息(id_rsa);

  3. 对于某些靶场,也可以使用nikto扫描器来挖掘敏感信息,具体方式如下。
    – nikto -host 靶场IP地址

特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息。
所挖掘的信息示例
当挖掘到有用的信息后,就可以尝试继续下一步处理。如下图是RSA中的密钥。
在这里插入图片描述

利用敏感、弱点信息

对挖掘到的ssh密钥利用
1、修改id_ rsa的权限
可以使用以下代码语句:
chmod 600 id_ rsa
2、利用私钥登陆服务器
ssh -i id_ rsa 用户名@靶场IP地址
注意:如果id_ rsa没有解密密码,可以直接使用。但是如果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执行监听获取对应用户的权限。

如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限。
在这里插入图片描述

暴力破解

  1. 在万不得已的时候只能对ssh服务进行暴力破解。破解最后一个用户名。破解工具如hydra、medusa等;
    利用cupp创建字典
    –git clone https://github.com/jeanphorn/commom-password.git
    – chmod +x cupp.py
    – ./cupp.py-i 以交互的方式创建字典

  2. 使用metasploit破解SSH
    在终端中输入
    msfconsole
    – msf > use auxiliary/scanner/ssh/ssh_login
    – msf auxiliary(ssh_ login) > set rhosts 192.168.1.137
    – msf auxiliary(ssh_ login) > set username hadi
    – msf auxiliary(ssh_ login) > set pass_ file hadi.txt
    – msf auxiliary(ssh_ login) > run
    优化会话
    python -c “import pty; pty.spawn(’ /bin/bash’)”
    su - root

  3. 获取Flag
    提升到root权限之后,切换目录寻找flag文件。一般情况下,flag文件是在root目录下的。

cat flag文件名(一般情况是flag.txt文件)获取。

总结

在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器,个别情况进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。

在CTF中要特别注意 /tmp 数据缓冲目录以及 /etc/crontab 设置定时执行的文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值