今天开始学SSH私钥泄露
上一篇文章就说到怎么找到靶机的IP,现在知道靶机IP之后,就要去找这个靶机的信息了
我这个靶机是SSH私钥泄露的,有人想要或者感兴趣的话,可以私信我找我拿
先说一下SSH是干嘛的吧,就是远程客户端访问本地电脑或者是服务器,一般是22端口
而SSH私钥泄露简单来说就是通过私钥进入到root主机,然后拿到Flag, 通俗易懂来讲就是一个房间,你要找到这个房间门的钥匙,打开进入到里面拿到想要的东西
一般渗透流程一开始都是信息收集
先使用:
nmap -sV IP #挖掘开放的服务信息
我这IP是192.168.43.189
也就是 nmap -sV 192.168.43.189
记住一点是要进入root模式
就得到了这个靶机开放的信息,其中就看到了开放了SSH端口
对于开放的HTTP服务的大端口,可以采用浏览器:http://ip:port/形式访问
就是http://IP:端口号/
我这里是 http://192.168.43.189:31337/
打开来并没有显示什么东西
顺便看看页面的源代码有没有问题
从上面的页面中没有看到什么可以用的信息,这时候就深度探测一下这个服务下的隐藏文件
dirb http://IP:port/ 公式
dirb http://192.168.43.189:31337/
从探测结果来看,这个端口服务下隐藏了一个robots.txt文件和.ssh服务
先打开robots.txt文件看看
得到了以下信息,其中有一个taxes样式的文件,打开进去看看
在这里可以看到找到了第一个flag,在看到robots.txt里的flag时,robots.txt里的信息就已经利用完了.
接下来就看上面的.ssh的网址信息
这三个分别是私钥,认证关键字,公钥.
注:这里说一下SSH就是远程登入服务器,就是你的私钥和服务器里的公钥做对比,看是否一样,一样就能登入,否则反之
看到他给的三个信息之后,就要确定私钥和认证关键字,是不是存在的
回车之后就弹出了一个下载文件认证也是一样的尝试看看有没有这个文件
公钥是服务器端的,所以没必要去下载
下载好了之后就是这两个文件
在使用私钥之前先查看文件的权限
ls -alh :查看当前目录下文件的权限
因为我是把文件放到了桌面,所以进入到桌面下操作
日常小知识:
一共有十位数,其中:最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)拥有的权限
然后那三个 r-- 代表的是组群(group)拥有的权限
最后那三个 r-- 代表的是其他人(other)拥有的权限
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话
这时候就要登入SSH了
使用ssh -1 密钥 用户名
这里我已经有密钥了,但缺少个用户名,所以可以去一同下载的认证关键字文件里看看
打开之后就是这样,中间一堆看不懂的代码,但是可以知道,私钥通过了这串代码,连接到了一个simon账号,这时候可以试着去登入一下看看,
可以看到是需要密码的,输入一下用户名试试看,结果发现不是,这时候就需要更深入的解密
这时候需要使用到ssh2john 将id_isa密钥信息转换为John可以识别的信息
先赋予文件可读写的权限:
chmod 600 文件名
我这里是 chmod 600 id_isa
再转换:ssh2john 需要转的文件名 > 转出来的文件名
我这里是 python /usr/share/john/ssh2john.py id_rsa > rsacrack
因为ssh2john是个python文件,所以我这里是要这样子访问,如果你的可以直接转,那还是直接转
桌面上就出现了一个名为isacrack的文件,之后利用字典解密文件信息
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe – rules rsacrack
就是通过zcat工具使用/usr/shaare/wordlists/rockyou.txt.gz这个字典通过john 在通过–pipe 在通过 --rules 规则来进行解密
可以看到左边有条一排下来的字母是对应着密钥,所以推测这个可能是密码,先去试试
然后成功了,确定了 starwars 是密码,账号是simon
进入到了这个账户中,我已经远程访问到了主机
这里可以看到在root文件夹下面有一个flag文件,但是我没有这个权限打开,这是只是一个普通账户,然后就是提权.
可以先查找一下,那些是具有root权限的文件.
使用命令为:
find / -perm -4000 2>/dev/null
使用find命令从根目录下,逐渐查找有root权限的文件, -perm -4000 是具有执行权限, 2>/dev/null是为了避免查看的时候错误
可以看到root目录下有一个read_message.c文件,而且和有root权限的read_message相识,那我们就来看这个文件里有什么
查看文件: cat 文件名
这里就是考验看代码的时候了,通常来讲,一般能看懂就行,但是如果会就更好了,从上面的图片上来讲,已经看到flag2
下面是一个if判断语句
上面一个圈起来的是具有root权限的文件.下面是判断语句,从下面语句中可以判断条件得出条件
上面红圈里是判定是对会输出什么,中间的是输入错误的,下面的是输入正确的名字,但是他多出来了一些东西,那可能后面还有东西,可以看看能不能利用一下溢出,上面就已经设置了溢出限制
二十个字符,也就是说,前二十个字符都是被管控的,那就把要打的命令放在溢出后面
想进bin目录下,成功了,那个bin/sh,后面的sh是shell的脚本文件,这时候就已经进入到root权限了,
然打开flag.txt可以得到flag的值