SSRF
SSRF漏洞原理
ssrf是什么

ssrf形成的原因以及攻击方式


ssrf漏洞利用

伪协议
1 | |
File伪协议(查找内网存活主机IP)
file:// 从文件系统中获取文件内容,格式为 file://[文件路径]
1 | |
file://proc/net/arp配合bp的intruder模块寻找内网其他主机

dict伪协议( 查找内网主机开放端口)
也可以使用ftp://但是效率较低
dict://字典服务协议,访问字典资源,如dict://ip:6739/info:
可用于:扫描端口、获取内网信息、爆破密码等
ftp伪协议配合bp的intruder模块查找内网主机开放端口

dict伪协议配合bp集束炸弹攻击查找内网主机开放端口

dict伪协议获取网站信息

HTTP伪协议(目录扫描)
http伪协议

http伪协议配合bp目录扫描获取网站子页面

gopher伪协议(重点)
gopher伪协议
利用范围较广:GET提交、POST提交、redis、Fastcgi、sql
基本格式:
1 | |
web也需要加端口号80
gopher协议默认端口为70
gopher请求不转发第一个字符:
所以需要使用下划线填充首位

gopher伪协议GET提交以及POST提交
GET提交:直接提交就能执行

POST提交:要使用gopher伪协议

gopher伪协议GET提交
需要保留两个头部信息,而且在GET提交头部信息之后必须要加一个换行符
浏览器提交

bp请求包提交

1 | |
注意:
如果要成功提交,需要进行两次url编码,因为ssrf主机会帮我们解码一次,然后再目标内网主机又会解码一次。所以如果要在bp添加gopher伪协议,需要进行两次url编码
如果在浏览器上的话只需要一次,因为浏览器会帮我们编码一次,我们自己编码一次。
gopher伪协议POST提交
需要保留四个头部信息,且长度需要与实际长度对应

在bp重放器里先进行两次url编码,然后再放到gopher伪协议后面然后提交


使用插件HackBar进行POST提交

建议先写好gopher伪协议的固定格式然后抓包,再进行构造头部信息以及编码
1 | |
SSRF之环回地址绕过
比赛中经常限制访问本地网站的某些内容
1 | |
看到REMOTE_ADD地址是127.0.0.1时才会显示
而’127.0.0.1’会被限制
可将’127.0.0.1’变形显示
ip地址

将127.0.0.1替换为其他进制的表达方式来绕过过滤
1 | |
SSRF之302重定向绕过
302重定向主要是绕过针对私网地址被限制的情况
302重定向原理:

具体实现:

我们需要有一台有公网IP的服务器,然后进行域名解析的WEB服务,然后构建302重定向代码,
具体步骤
1 | |
SSRF之添加@绕过
平常我们传入的url是url=http://127.0.0.1,如果 我们传入的url是url=http://quan9i@127.0.0.1,它此时依旧会访问127.0.0.1
1 | |
SSRF之DNS重绑定绕过
针对SSRF漏洞的防御
1 | |
可以有效限制:直接访问内网IP;302跳转;xip.io/xip.name 及短链接变换等URL变形;
畸形URL;iframe攻击;IP进制变换
针对这种防御可以使用DNS Rebinding Attack(DNS重绑定攻击)
DNS重绑定攻击原理
设置A为公网IP,B为私网IP



1 | |
使用SSRF GET提交命令执行
例如:
使用shell.php页面GET方法传值进行命令执行

使用gopher伪协议进行命令执行

构造gopher伪协议命令
1 | |

使用SSRF POST提交命令执行
前期依旧是使用file伪协议和dict伪协议、http伪协议查找内网存活主机IP和内网主机开放端口并且扫描目录,查找可利用的页面
使用gopher伪协议进行POST提交


POST提交命令执行拿到flag,还是注意构造好header poc,长度要对应
1 | |

使用SSRF进行XXE漏洞利用
XXE漏洞实例:


构造payload:

然后使用gopher伪协议进行提交
使用SSRF进行sql注入漏洞
1、使用http伪协议获取信息
2、sql注入
实例:
路径
1 | |
sql注入代码

浏览器直接提交
1 | |
sql注入GET提交

sql注入POST提交


构造payload并使用gopher伪协议提交
替换查找内容,以及字符串长度
使用SSRF进行文件上传漏洞
multipart/form-data的定义

文件上传漏洞实例:
1 | |
先查看源码:

请求头,需要指定边界

构造gohper提交数据

这里分隔符可以自定义。并且最后还需要结束符号
1 | |
使用gopher伪协议提交

使用SSRF进行文件包含漏洞利用
例如
1 | |
gopher伪协议ssrf和之前的几个漏洞差不多
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。