ctf训练 ssh私钥泄露
ctf训练 ssh私钥泄露
CTF比赛中,比赛环境的两种方式
1.给予在同一局域网中的攻击机和靶场机器,以web方式可以访问攻击机,通过攻击机来渗透靶场机器,获取对应的flag值;(一般情况下给于kali linux作为攻击机,并且举办方提供计算机)
⒉给予一个网线接口,用户自备工具,直接连接网线,进行渗透靶场机器,获取对应的flag值;
这里我们做一个小练习
实验准备:一台kail(作为攻击机),一台靶机
靶机镜像:https://pan.baidu.com/s/1Up3kgpwK4Mt3McGklN6rlA 提取码:lc8q
安装打开靶机(使用Oracle VM VirtualBox打开):
接下来发现没法登陆,也没有办法获取ip地址
所以我们在kail下
进入控制台
使用netdiscover命令 netdiscover -r ip/子网掩码 命令来探测靶机,靶机ip为192.168.43.83
本机ip为192.168.43.96
信息探测
对于只是给定一个对应IP地址的靶场机器,我们需要用对其进行扫描,探测开放的服务。
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限
-nmap -sV 靶机ip 挖掘 开放服务信息
分析探测结果
每一个服务对应计算机的一个端口,用来进行通信。常用端0~1023端口,在扫描结果中查找特殊端口
针特殊端口进行探测,尤其对开发大端口的http服务进行排查;
我们可以看到靶场开放的端口和对应的服务,此靶场机器上开启了ssh服务和http服务,
接下来我们分析特殊端口,尤其对开放http服务的大端口(本靶机上31337端口开放了http服务)
探测大端口的信息
对于开放http服务的大端口,可以采取http://ip:port/的形式访问;
在这里访问http://192.168.43.83:31337没有任何有用的信息
查看源代码对应信息;如果没有flag信息,使用工具探测隐藏页面
-dirb http://ip:port/对这个服务的隐藏文件进行探测
访问ssh和robots目录
在taxe1下发现flag
再看ssh目录:
然后可以试着去访问这三个文件名,发现确实是一个文件,然后下载到桌面去
接下来我们就去尝试与靶机建立ssh连接
解密ssh秘钥信息
使用ssh2john将id_isa秘钥信息转换为john可以识别的信息。
chmod 600 id_isa
ssh2john id_isa > isacrack
分析用户名、利用ssh登录服务器
ssh -i id_isa 用户名@ssh靶场机器IP地址
到这里登录到主机,但是并不是root权限?该如何获取呢?深入探测根目录
查找具有root权限的文件
-find / -perm -4000 2>/dev/null
因为这里read_message.c也是root下的,所以可以cat一下来看看
read_message.c的内容如下
:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>// You're getting close! Here's another flag:
// flag2{use_the_source_luke}int main(int argc, char *argv[]) {char program[] = "/usr/local/sbin/message";char buf[20];char authorized[] = "Simon";printf("What is your name?\n");gets(buf);// Only compare first five chars to save precious cycles:if (!strncmp(authorized, buf, 5)) {printf("Hello %s! Here is your message:\n\n", buf);// This is safe as the user can't mess with the binary location:execve(program, NULL, NULL);} else {printf("Sorry %s, you're not %s! The Internet Police have been informed of this violation.\n", buf, authorized);exit(EXIT_FAILURE);}}
审计这段代码 发现
我们要执行readmessage
然后验证数组前5个字符,限定字符数为最多20个 ,前5个为Simon即可。
我们试着输20多个字符使其溢出
输入超过他缓存字符长度的字符 超出的部分为root权限的目录路径
获得root权限,发现flag