欢迎回来,我的新手黑客
今天没有故事也没有酒,今天给大家带来的是关于CTF方面的SSH私钥泄露,这个内容其实并不新鲜,但是我还是选择用文字把它记录下来,方便需要的人很快的找到它
环境搭建:下载对应的镜像,使Kali和靶机处于同一个网段即可
镜像下载地址:https://pan.baidu.com/s/1vWe2SMVslPEOCbkLgvcTRw
提取码:xxz6
开始我们的正文
Step1:这一步肯定是先进行内网的扫描,既能确定内网的存活主机,又可以大概知道每台主机上面运行的服务信息,说到扫描,肯定会想到一个工具,那就是Nmap,来到Kali上面打开终端,输入以下命令
nmap -Pn -T4 192.168.83.0/24
从输出信息中看出,我们的目标主机IP地址为192.168.83.131,该主机上开放了以下端口:22,80,31337
接下来我们更加仔细地去探测该目标主机
nmap -sV -T4 192.168.83.131
从上面的输出信息可以看出具体某个端口上面运行的服务以及服务的版本信息,可以注意到有一个31337的大端口,上面运行的也是http服务,使用浏览器打开看看
什么东西都没有看到,F12看看
也没有看什么flag相关信息,换一种思路,使用扫描软件扫描看看有没有什么发现
nikto --host http://192.168.83.131:31337/
从该输出信息中我们可以看到,找到了图片中红色线条框起来的文件
Step2:接下来我们来访问看看会不会发现什么重要的信息
先来查看一下robots.txt
接着继续查看这个文件,发现.bashrc是一个二进制文件
当我们访问到taxes时,发现了一个flag
我们接着继续探测,当我们访问到192.168.83.31337/.ssh时,页面回显以下内容
看到这些信息,联想到可能与SSH服务有关系,那什么是SSH呢?
引用维基百科的说法:Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令
简而言之,就是利用客户端上面的私钥和服务器端上面的公钥进行加解密操作,如果一致则可以登录,如果不一致就不能登录,这里指的客户端上面的私钥就是图片中的id_rsa,服务器端上面的公钥就是图片中的id_rsa.pub
Step3:这个时候联想到能不能获取到私钥信息呢?我们抱着尝试的想法在当前路径后面加上id_rsa
这个时候我们发现,请求得到了回应,是一个下载页面,先下载下来,用记事本打开看看会不会发现什么
这个时候我们发现是得到了私钥信息,但是我们要如何利用私钥呢?我们可以直接利用私钥登录
ssh -i id_rsa username@ip_address
命令输到一半,才发现那username是什么呢?好像也没有在哪里有看到什么username信息
回到刚才的浏览器页面,我们接着往下看,刚才下载了一个id_rsa是私钥信息,那authorized_keys是什么东西呢?一样把综合尝试的心态在当前的URL后面加上authorized_keys看看会不会得到些什么
一样是一个下载文件,先下载下来看看是什么东西
图片中框起来的好像就是username,这样子所有的信息都收集好了
Step4:接下来尝试登陆
ssh -i id_rsa simon@192.168.83.131
显示你想要继续连接吗?输入yes
无法登录,但是从报错信息中,我们知道了一些信息,是id_rsa的文件权限设置不正确
还算有收获,修改一下权限试试看
chmod 600 id_rsa
按着提示信息修改权限,修改完成之后继续尝试登录
很好,提示输入密码
一阵欢喜过后,问题又来了,密码是什么啊?
Step5:接下来使用工具从私钥中提取密码,但是我们首先需要将私钥转换成工具可以识别的格式
ssh2john id_rsa > ssh
接下来我们使用工具来提取密码,敲下回车的同时就看到了密码
得到密码之后,继续尝试登录
输入正确的密码之后发现登录成功,接下来寻找flag信息
Step6:flag信息一般放在root用户的家目录下面,切换目录,寻找flag
切换到用户家目录下面之后,发现有两个文件,先查看flag
权限不足,无法查看,说明当前用户只是普通用户,没有root权限,顺手看一下C语言源程序
在输出中看到了一个flag信息,大概看出是一个比较字符串,输入正确回显 一段话,并执行一个目录,输入不正确的话回显另一段消息
接下来查看一下具有root权限的文件
这个时候我们发现有一个东西似曾相似bin目录下的read_message,那就来执行一下看看
输入root之后回显,不是Simon,那就将输入的名字改成Simon试试看
这次的回显不一样,也验证了前面的说法,但是好像也没有什么想法了,再回头看看那一段代码
看到这里就想起会不会有堆栈溢出
通过输入使其堆栈溢出之后,跳转到另一个路径,间接提升了权限,看到#感觉可能是root权限
这个时候该用户拥有了root权限,再来查看flag
到这里就拿下了root权限,并且查看到了最后一个flag
如果你支持我的文章,麻烦点一下右下角的“在看”,谢谢你啦
原文始发于微信公众号(Kali渗透测试教程):CTF入门之SSH私钥泄露
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论