一、SSRF漏洞原理
ssrf:服务器端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
一般情况下,ssrf攻击的目标是从外网无法访问的内部系统(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)产生原因是由于服务端提供了从其它服务器应用获取数据的功能并且没有对目标地址做限制和过滤。
典型的ssrf:我们传参服务器替代我们去访问目标站点
二、SSRF的危害
- 攻击运行在内网或本地的应用程序
- 利用协议读取本地文件
- 端口存活探测
- 访问内网(外紧内松)
- 隐藏攻击者(当做跳板机来躲避追踪)
- 对内网web应用进行指纹识别(通过访问默认文件实现)
三、SSRF相关协议
- file:/// 从文件系统中获取文件内容
使用file协议进行的任意文件读取算是ssrf最简单的利用方式了,列如使用以下地址读取目录的文件
url=file:///var/www/xxx/index.php
-
redis未授权访问
Redis 默认情况下,默认运行在6379端口,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空),会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据 -
dict:// 字典服务器协议,访问字典资源
-
sftp:// SSH文件传输协议或安全文件传输协议
-
ldap:// 轻量级目录访问协议
-
tftp:// 简单文件传输协议
-
gopher:// 分布式文档传递服务
四、SSFR挖掘
所有目标服务器会从自身发起请求的功能点,且我们可以控制地址的参数,都可能造成SSRF漏洞
传参中带有url或者http可以尝试让它去访问别的外网网站如果能成功很大可能存在漏洞也可直接让其访问内网地址 访问不到外网的情况下只能进行内网地址强行扫描
从web地址上寻找
- share
- wap
- url
- link
- src
- source
- target
- 3g
- display
- sourceURl
- imageURL
- domain
从web功能上寻找 - 分享:通过url地址分享网页内容
- 转码服务:通过url地址把原地址的网页内容调优使其适应收集屏幕浏览
- 在线翻译:通过url地址翻译网页对应内容
- 图片加载与下载
- 图片、文章收藏功能
五、SSFR靶场案例
此处服务端存在访问外部地址功能
利用访问内网进行端口探测 访问127.0.0.1:81 并未显示内容 查看网页源代码
六、SSRF防御
- 禁用不需要的协议
- 统一错误信息,避免用户可以根据错误信息来判断服务器的端口状态
- 限制请求的端口为http常用的端口,比如,80,443,8080,8090
- 黑名单内网ip,避免获取内网信息
- 过滤返回信息,敏感内容过滤