CTF比赛是什么东东呢?
- 给与在同一个局域网中的攻击机和靶场机器,以web方式可以访问攻击,通过攻击机来渗透靶场靶场机器,获取对应的flag值
- 给予一个网线接口,用户自备工具,直接连接网线,进行渗透靶场机器,获取对应的flag值
SSH私钥泄露
信息探测
对于只是给定一个对应的IP地址的靶场机器,我们需要对其进行扫描,探测开放的服务。
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限。
首先需要知道攻击机的IP地址:
之后需要知道靶场机器的IP地址:
也可以使用另一种方式进行扫描:终端输入指令:
netdiscover -r 192.168.56.1/24
这样我们就知道了攻击机和靶场的IP地址。
分析探测结果
每一个服务对应计算机的一个端口,用来进行通信。常用的端口0~1023端口,在扫描结果中查找特殊端口,针对特殊端口进行探测,尤其对开发大端口的http服务进行排查。
进行信息探测:
发现开放了一个大端口,探测大端口信息,对于开放http服务采用浏览器进行访问
使用浏览器打开之后,查看源代码来获取信息:
如果没有flag信息,使用工具探测隐藏页面,在这次探测结果中我们发现了两个重要的URL,就是.ssh 以及robots.txt
首先我们打开 http://192.168.56.103:31337/robots.txt
里面存放了允许打开以及不允许打开的文件名字。
接下来我们按照每个试一下,我们成功取得了第一flag,其余的两个自己可以试一试,有没有有用的信息:
挖掘ssh信息
我们可以不断访问获取更多泄露的ssh秘钥信息
'id_rsa’私钥 ‘id_rsa.pub’ 服务器上的公钥两者进行对比 进行加解密操作
接下来我们要下载文件,公钥是不需要下载,它是存储在服务器端的用于进行远程访问使用到的。
http://192.168.56.103:31337/.ssh/id_rsa
http://192.168.56.103:31337/.ssh/authorized_keys
下载完之后,我们可以在把其移动到桌面上,方便操作。
接下来我们就要开始不断地进行访问,来获取更多的信息,我们想通过下载的私钥进行ssh远程连接,但是问题来了此时我们并不知道用户名,这可怎么办,我们可以使用另一个我们下载的文件,进行查看发现里面告诉我了我们用户名:simon,接下来就是SSH远程进行连接。
问题又来了我们并不知道这个密码是多少,还是无法登陆。(如果在这步骤出现了别的错误,可能是下载私钥的权限不够,需要赋予可读可写的权限 chmod 600 id_rsa 赋予权限之后,再次尝试即可)
解密SSH私钥信息
使用ssh2john 将id_rsa密钥信息转换为john可以识别的信息。但是我们可能会遇到这样的错误信息:
我们这时候就需要换个命令方式(网上可以找到一样的解决办法,这里我就不展开说了):
这样我们就可以完成相应的操作。
利用字典解密isacrack信息
使用如下命令,进行破解:
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules isacrack
这样我们就可以知道相应的密码。
再次使用ssh登陆输入密码即可:
ok,我们成功登陆了。
提权工作
进入之后pwd 查看自己所在的位置
cd /root 切换到root用户中
cat flag.txt
发现自己查看不了 这个时候就需要提升root权限了
接下来我们需要扫描一下文件:
发现read_message的文件可能藏有关键信息。
接下来,我们进行简单的代码审计(这个代码使用C写的,很好分析,在这里就不多说了):
但是在看代码的时候,我们发现注释的地方,有flag,ok,拿到一个。
代码审计,使用代码的漏洞提权
执行read_message,利用漏洞:
提权成功,查看flag.txt.文件内容:
OK!!!本次靶场的3flag全部找到了。
这是我第一次写博客,如果那里有错误,请指正,谢谢各位大佬给小白指路。orz。
继续加油!!!