前言
CTF-SSH 私钥泄露,如何从外部进入最终获得root主机。
靶场链接:文章底部可下载
话不多说直接开始
首先攻击机kali linux。
开启两台机器,两台设置同样的网络模式,靶机无登陆密码,需要通过ssh远程登陆
kali
登陆,ifconfig
查看ip,然后使用netdiscover -r ip/mask
,我这里的ip是192.168.71.129
,探测同网段ip地址,找到靶机的地址,然后ping测试连通性
用nmap嗅探端口,探测开放服务。
nmap -sV 192.168.71.129,发现开着三个服务,ssh是我们要攻击的服务,31337是特殊端口,常用端口为0~1023,针对特殊端口进行探测,尤其对开发大端口的http服务进行排查
打开浏览器,输入ip+端口,我这里是192.168.71.129:31337
发现没有东西,查看源码后也没有收获,那么我们扫描目录,探测隐藏文件
用dirb
来探测,输入
dirb http://ip:port/
这里检查后发现两个对我们有用的敏感文件,我们先看robots.txt
这个是为了防止爬虫爬取设置的禁止访问的文件,打开它
发现下面有三个目录,访问taxes,得到第一个flag,经过排查其他两个没有其他的价值了。
然后我们打开第二个敏感文件.ssh
尝试目录下是否存在私钥和认证关键字文件,访问后发现存在,下载后尝试ssh登陆,登陆前需要查看是否可读写
ls -alh
发现可读写,然后
ssh -i id_rsa用户名@主机名
那么我们怎么得到用户名呢,想到我们下载的认证关键字文件, 打开发现了我们登陆的用户名
然后尝试ssh登陆,提示错误,因为其他权限过高,我们需要修改权限,使用chmod 600 id_rsa修改权限,再尝试登陆,发现需要登陆密码
这里我们对私钥信息进行破解,首先使用ssh2john将id_isa密钥信息转换成john可识别的信息 ssh2john id_isa > isacrack
然后利用字典进行逐步解密,这时候用zcat 来将字典读取通过管道符 传入john 来解密
输入
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules isacrack
发现得到一条密码记录,然后取输入密码登陆,登陆成功后,进入root目录。
ls后发现目录下有flag.txt,但是没有权限打开。说明我们现在不是root权限,需要获取。
我们通过 find / -perm -4000 2>/dev/null 查看我们能执行的文件
这里 find / -pern -4000是查找能够执行的文件 2>/dev/null是将错误信息重定向到null文件中
执行后发现可执行的文件中有一个文件存在root目录下
cat read_message.c查看源码,得到第二个flag
通过分析,发现完全不懂,问了下逆向室友,知道这是一个pwn的题,原理就是因为gets(buf)没有限制读取的长度,但是buf[]这个数组只能储存20个字符,那么超过20个字符的就会存入缓冲区,将后面的内容覆盖。然后当执行到execve的时候原来要执行program[]内的字符,被覆盖后就可以利用了。所以只要输入SimonAAAAAAAAAAAAAAA/bin/sh,即可进入root的shell
就得到了root权限啦,然后cat flag.txt就能得到第三个flag了。
111
111
佬,百度网盘链接失效了
1
1
1
靶机靶机靶机
靶机靶机靶机靶机靶机靶机
Thanks♪(・ω・)ノ