ssh私钥泄漏靶场
抱着踏踏实实学到哪,弄明白哪的心态完成了老师的作业::>_<::
前置工作
知识
SSH 是 Secure Shell 的缩写,是一种加密的网络协议,用于在不安全的网络中安全地远程访问和管理计算机系统。主要作用是远程登录执行命令、安全传输。
默认端口是22
认证方式
- 密码认证:输入远程用户的密码。
- 密钥认证(更安全):使用公私钥对,避免每次输入密码。
所以拥有私钥就能无密码直接登录所有配了对应公钥的服务器,即系统只认钥匙不认人。
准备
首先在网上找靶场,下载下来,导入到VMware Workstation Pro中
开启虚拟机,可以看到我们是无法登陆的,因为没有密码
信息搜集
首先,打开kali用arp-scan -l来探测同一网段中的ip
可以发现扫描出了靶场的ip
知道了ip之后,扫描一下看看开放了哪些端口,有些什么服务
可以发现有80、22,两个http服务一个ssh服务
还有一个31337,应该是一个后门吧,访问一下
但是并没有什么有用的东西,查看一下源代码,也没什么
服务探测
对这个端口的服务进行扫描一下,有很多目录
我是都访问了一下,前面的有很多都是下载了文件,直到.ssh
再访问一下三个文件,发现三个文件都下载了下来,其中.pub文件内容是这样的
其它的文件应该是不能直接打开看见文件内容的
1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDzG6cWl499ZGW0PV+tRaOLguT8+lso8zbSLCzgiBYkX/xnoZx0fneSfi93gdh4ynVjs2sgZ2HaRWA05EGR7e3IetSP53NTxk5QrLHEGZQFLId3QMMi74ebGBpPkKg/QzwRxCrKgqL1b2+EYz68Y9InRAZoq8wYTLdoUVa2wOiJv0PfrlQ4e9nh29J7yPgXmVAsy5ZvmpBp5FL76y1lUblGUuftCfddh2IahevizLlVipuSQGFqRZOdA5xnxbsNO4QbFUhjIlA5RrAs814LuA9t2CiAzHXxjsVW8/R/eD8K22TO7XEQscQjaSl/R4Cr1kNtUwCljpmpjt/Q4DJmExOR simon@covfefe |
继续访问在robots.txt下发现了东西
一个个都访问一下,终于在最后一个里面找到flag1{make_america_great_again}
私钥泄漏
回到刚刚拿到的两个文件,没太明白ai了一下
大概意思就是白名单里面公布了用户,然后用这个用户使用私钥去ssh连接,所以我们先把文件放到虚拟机上,然后试一试
ssh连接发现需要密钥验证,接下来就解密钥
利用字典解一下密钥,命令如下,得到密钥 starwars,并且成功登陆
1 | chmod 600 '/root/桌面/id_rsa' |
登录成功后发现现在所处的是simon,ls命令之后没有什么东西,我们到root下查看有什么文件
有一个flag.txt,但是我们没有权限查看
还有一个read_message.c,查看一下里面有flag2{use_the_source_luke}
漏洞利用
读懂了程序,最主要的是gets函数,一个不会检查输入长度的函数,经典的栈溢出漏洞
所以说只要我的输入前5个是Simon中间再多输入,凑够了20,最后加上**/bin/sh
**,就能拿到root权限
试一下,得到flag3{das_bof_meister}
问题及解决方案
网络连接
我的netdiscover命令找不出靶场的ip,但是我看网上的教程这个命令是可行的。
后来将靶场的网络连接改成nat连接才成功
因为ARP 只在一个二层广播域生效。
桥接和 NAT 把 VM 分到两个域,ARP 请求跨不过去,所以扫不到。
所以要把两个都放在同一个域中。
arp-scan -l和netdiscover二者都是基于 ARP 协议 的二层发现工具,核心目标一样:“把局域网里在线设备的 IP ↔ MAC 映射快速扒出来”。
但是netdiscover多了被动模式,可以长期检测
ssh连接
ssh连接的时候id_rsa权限不能过高,需要用命令修改权限
1 | chmod 600 '/root/桌面/id_rsa' |
SSH 对私钥文件有强制性的权限检查,防止用户不小心把私钥暴露出去