抱着踏踏实实学到哪,弄明白哪的心态完成了老师的作业::>_<::

前置工作

知识

SSH 是 Secure Shell 的缩写,是一种加密的网络协议,用于在不安全的网络中安全地远程访问和管理计算机系统。主要作用是远程登录执行命令、安全传输。

默认端口是22

认证方式

  • 密码认证:输入远程用户的密码。
  • 密钥认证(更安全):使用公私钥对,避免每次输入密码。

所以拥有私钥就能无密码直接登录所有配了对应公钥的服务器,即系统只认钥匙不认人。

准备

首先在网上找靶场,下载下来,导入到VMware Workstation Pro中

image-20250919092212595

开启虚拟机,可以看到我们是无法登陆的,因为没有密码

image-20250919123557295

信息搜集

首先,打开kali用arp-scan -l来探测同一网段中的ip

可以发现扫描出了靶场的ip

image-20250919133737686

知道了ip之后,扫描一下看看开放了哪些端口,有些什么服务

可以发现有80、22,两个http服务一个ssh服务

image-20250919134832905

还有一个31337,应该是一个后门吧,访问一下

但是并没有什么有用的东西,查看一下源代码,也没什么

image-20250919140731885

服务探测

对这个端口的服务进行扫描一下,有很多目录

image-20250919142813306

我是都访问了一下,前面的有很多都是下载了文件,直到.ssh

image-20250919144207246

再访问一下三个文件,发现三个文件都下载了下来,其中.pub文件内容是这样的

其它的文件应该是不能直接打开看见文件内容的

1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDzG6cWl499ZGW0PV+tRaOLguT8+lso8zbSLCzgiBYkX/xnoZx0fneSfi93gdh4ynVjs2sgZ2HaRWA05EGR7e3IetSP53NTxk5QrLHEGZQFLId3QMMi74ebGBpPkKg/QzwRxCrKgqL1b2+EYz68Y9InRAZoq8wYTLdoUVa2wOiJv0PfrlQ4e9nh29J7yPgXmVAsy5ZvmpBp5FL76y1lUblGUuftCfddh2IahevizLlVipuSQGFqRZOdA5xnxbsNO4QbFUhjIlA5RrAs814LuA9t2CiAzHXxjsVW8/R/eD8K22TO7XEQscQjaSl/R4Cr1kNtUwCljpmpjt/Q4DJmExOR simon@covfefe

继续访问在robots.txt下发现了东西

image-20250919142909373

一个个都访问一下,终于在最后一个里面找到flag1{make_america_great_again}

image-20250919142955605

私钥泄漏

回到刚刚拿到的两个文件,没太明白ai了一下

大概意思就是白名单里面公布了用户,然后用这个用户使用私钥去ssh连接,所以我们先把文件放到虚拟机上,然后试一试

image-20250919145830226

ssh连接发现需要密钥验证,接下来就解密钥

image-20250919151217885

利用字典解一下密钥,命令如下,得到密钥 starwars,并且成功登陆

1
2
3
4
5
chmod 600 '/root/桌面/id_rsa'
python3 /usr/share/john/ssh2john.py '/root/桌面/id_rsa' > rsa_hash.txt
cat rsa_hash.txt
gzip -d /usr/share/wordlists/rockyou.txt.gz
john --wordlist=/usr/share/wordlists/rockyou.txt rsa_hash.txt

image-20250919153155084

登录成功后发现现在所处的是simon,ls命令之后没有什么东西,我们到root下查看有什么文件

有一个flag.txt,但是我们没有权限查看

还有一个read_message.c,查看一下里面有flag2{use_the_source_luke}

image-20250919154243643

漏洞利用

读懂了程序,最主要的是gets函数,一个不会检查输入长度的函数,经典的栈溢出漏洞

所以说只要我的输入前5个是Simon中间再多输入,凑够了20,最后加上**/bin/sh**,就能拿到root权限

试一下,得到flag3{das_bof_meister}

image-20250919155905091

问题及解决方案

网络连接

我的netdiscover命令找不出靶场的ip,但是我看网上的教程这个命令是可行的。

image-20250919132108083

后来将靶场的网络连接改成nat连接才成功

因为ARP 只在一个二层广播域生效。

桥接和 NAT 把 VM 分到两个域,ARP 请求跨不过去,所以扫不到。

所以要把两个都放在同一个域中。

arp-scan -l和netdiscover二者都是基于 ARP 协议 的二层发现工具,核心目标一样:“把局域网里在线设备的 IP ↔ MAC 映射快速扒出来”。

但是netdiscover多了被动模式,可以长期检测

ssh连接

ssh连接的时候id_rsa权限不能过高,需要用命令修改权限

1
chmod 600 '/root/桌面/id_rsa'

SSH 对私钥文件有强制性的权限检查,防止用户不小心把私钥暴露出去

image-20250919160621297