CTF训练笔记(一)- SSH私钥泄露

CTF训练笔记系列 - 快速导航



一、环境搭建

1.攻击机

VMware环境下的kali linux虚拟机(本次渗透测试使用kali-linux-2020.4-vmware-amd64版本,初始用户名、密码均为:kali)

2.靶机

VirtualBox环境下的SSH-私钥泄露.ova虚拟机(链接: https://pan.baidu.com/s/1lcBhSvgYvr0KpXQArmuXPQ 提取码: c8f4)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.网络配置

攻击机与靶机桥接于同一网卡上,便于查找靶机ip地址

①VMware(攻击机)网络配置:

攻击机网络配置
②VirtualBox(靶机)网络配置:

在这里插入图片描述
在这里插入图片描述

二、信息收集

获取靶机ip
在攻击机的终端中使用“ifconfig”指令获取攻击机的网络地址(此时靶机也在同一网段,因为刚才桥接在了同一网卡上),

ifconfig

利用得到的ip地址与子网掩码可构造网段:192.168.2.0/24作为参数,使用netdiscover工具搜索同一网段内所有主机(若主机较多则等待时间可能较长),

netdiscover -r 192.168.2.0/24

在这里插入图片描述
结果如下,其中"PCS Systemtechnik GmbH"一行即为靶机信息,靶机ip为192.168.2.192。
在这里插入图片描述

三、信息探测

1.挖掘开放服务信息

使用nmap工具扫描靶机所有开放端口,发现特殊端口31337开放并提供http服务(警觉.jpg)

nmap -sV 192.168.2.192 

在这里插入图片描述

2.寻找隐藏起来的后台文件

直接访问192.168.2.192:31337无有效信息,源码也无有效信息。故使用dirb工具探测此服务的隐藏文件

dirb http://192.168.2.192:31337/

在这里插入图片描述
发现服务器后台有5个文件,进一步查看发现前三个没什么有价值的信息。

但发现第5个文件robots.txt中规定禁止爬虫访问三个文件,其中两个文件已查看过,但taxes文件首次出现,遂查看该文件(访问http://192.168.2.192:31337/taxes/),
得到第一个flag

发现第4个文件“.ssh”中可能包含私钥(id_rsa)、认证关键字(authorized_keys)、公钥(id_rsa.pub)三个文件,分别尝试访问:

http://192.168.2.192:31337/.ssh/id_rsa
http://192.168.2.192:31337/.ssh/authorized_keys

并下载文件。

3.获取服务器登录密码


打开authorized_keys文件,发现一个用户simon,
在这里插入图片描述
于是尝试使用私钥文件直接访问ssh,在id_rsa所在目录中执行ssh指令

ssh -i id_rsa simon@192.168.2.192

?
被要求输入密码,可目前不知道密码,卡住,于是另开一个终端想办法搞到密码。

想到使用ssh2john工具将id_rsa秘钥信息转换为John the Ripper工具可以识别的信息并保存在rsacrack文件中,进而利用john自带的字典解密其中的信息

ssh2john id_rsa > rsacrack

但出现了异常,提示无法找到ssh2john工具,
在这里插入图片描述
于是先确定ssh2john工具位置,再直接使用python命令执行,于是当前文件夹下成功生成rsacrack文件。

locate ssh2john
python /usr/share/john/ssh2john.py id_rsa > rsacrack

在这里插入图片描述

使用zcat指令加载john自带的rockyou.txt字典(zcat可以不真正解压缩文件,就能显示压缩包中文件的内容),
将结果用管道传递给john工具(“ | ”符号叫做管道符号,可以把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入),
最后使用john工具在已知密文的情况下尝试破解出明文

zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack

在这里插入图片描述
得到密码:starwars,返回上一个终端输入密码即可远程登录到这台主机上。
在这里插入图片描述

4.提权与获取flag

一些linux基础知识
使用pwd指令可立刻得知目前所在的工作目录的绝对路径名称,
使用ls指令可列出目前工作目录所含之文件及子目录,
使用cd指令可打开指定文件夹,
使用cat指令可用于连接文件并打印到标准输出设备上(打开文件),
/root是系统管理员(也叫超级用户)的主目录。

进入/root目录后,发现特殊文件flag.txt,但访问被拒绝,于是想要提权以便打开该文件。
在这里插入图片描述

从根目录“/”开始查找整个系统所有文件中拥有suid特殊权限的文件,并忽略错误以防打断查找。

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

在这里插入图片描述
发现同名文件read_message,于是尝试访问。其中read_message文件中无有效信息,故仔细阅读read_message.c文件。
在这里插入图片描述
审计read_message.c中代码
在这里插入图片描述
结论:
Ⅰ.得到第二个flag
Ⅱ.发现固定大小的数组,想能否制造内存溢出
Ⅲ.若要正确执行程序,则输入的前五个字符应为“Simon”

执行read_message.c文件:
Ⅰ.尝试输入Simon
在这里插入图片描述
Ⅱ.尝试输入SimonAAA
在这里插入图片描述
我们惊奇的发现输入Simon与SimonAAA竟然有同样的输出!这说明read_message代码只关注前五个字符而不关注buf数组中其他字符。

Ⅲ.尝试输入Simon111111111111111/bin/sh
在这里插入图片描述
成功通过Simon111111111111111占满了buf数组的20个空位,并通过内存溢出部分的“/bin/sh”指令get到此服务器shell同时拿到了root权限。
此时再次尝试访问刚刚无权访问的flag.txt文件,发现可以访问了。
在这里插入图片描述
得到第三个flag


四、总结

细节非常重要,flag往往会藏在意想不到的地方,不要放过任何可疑文件,根据提示逐步挖掘所需信息。

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值