文章目录
一,CTF比赛中,比赛环境的两种方式
- 给予在同一局域网中的攻击机和靶机机器,以web方式可以访问攻击机,通过攻击机来泄露靶机场机器,获取对应的flag值,(一般情况下给予kail Linux作为攻击机,并举办方提供计算机)。
- 给予一个网线接口,用户自备工具,直接连接网线,进行渗透靶机机器,获取flag值。
二,SHH协议介绍
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。基于TCP 22号端口的服务。
(一)SSH协议的认证机制
基于口令的安全验证
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
基于密匙的安全验证
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
注:id_rsa就是你的私钥,而id_rsa.pub则是你的公钥。
(二)SSH协议验证机制的弱点
基于口令的安全验证
基于字典的暴力破解,破解对应用户名和密码,通过ssh客户端连接到远程主机的ssh服务,实现对服务器的一定控制。(不一定是root权限)
基于秘钥的安全验证
通过对主机信息收集,获取到泄露的用户名和对应的秘钥。
chmod 600 id_rsa
ssh -i id_rsa 用户名@主机地址 登录服务器。(不一定是root权限)
三,实验
(一)实验环境
1.kail linux 192.168.253.12
2.靶场机器 192.168.253.10
接下来该做什么?
目的:获取靶场机器上的flag值。
(二)信息探测
-
对于只是给定一个对应IP地址的靶场机器,我们需要用对其进行扫描,探测开放的服务。
-
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限。
-
nmap -sV 192.168.253.10 :挖掘开放服务信息
(三)分析探测结果
- 每个服务对应计算机的一个端口,用来进行通信。常用端口0~1023端口,在扫描结果中查找特殊端口。
- 针对特殊端口进行探测,尤其对于开发大端口的http服务进行排查。
(四)探测大端口的信息
-
对于开发http服务的大端口,可以采取http://ip:port/的形式访问。
-
查看源码获取对应信息,如果没有flag信息,使用工具探测隐藏页面。
-
dirb http://ip:port/ 对于这个服务的隐藏文件进行探测
(五)针对隐藏页面分析
- 直接使用浏览器访问,查看效果、对应源代码,可能会获取到flag,或者下一步对应的提示。
- 挖掘ssh信息,不断访问获取更多泄露的ssh秘钥信息。
(六)解密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
根据代码审计结果,得到flag,以及提升权限