2021-11-24
什么是SSRF
SSRF (Server-Side Request Forgery:服务器端请求伪造) 攻击者通过服务器来伪造服务器向内网或外网发送请求,对内网进行攻击或扫描内网结构
可能存在SSRF的位置
在线翻译、指纹识别、IP查询、在线转PDF等
SSRF 的利用
1.伪协议
https://www.php.net/manual/zh/wrappers.php
- file:// — 访问本地文件系统
- http:// — 访问 HTTP(s) 网址
- ftp:// — 访问 FTP(s) URLs
- php:// — 访问各个输入/输出流(I/O streams)
- zlib:// — 压缩流
- data:// — 数据(RFC 2397)
- glob:// — 查找匹配的文件路径模式
- phar:// — PHP 归档
- ssh2:// — Secure Shell 2
- rar:// — RAR
- ogg:// — 音频流
- expect:// — 处理交互式的流
2.内网服务
Apache Hadoop远程命令执行、docker API远程命令执行、dict、LDAP等
3.redis利用
写shell、写公钥、计划任务、主从复制加载 .so 文件、启动项
4.云主机
通过访问云环境的元数据API或管理API,在部分情况下可以实现敏感信息等效果。
危害
1.Getshell
2.执行命令
3.读取文件
4.探测端口
5.探测内网IP
防御
- 过滤返回信息
- 统一错误信息
- 限制请求端口
- 禁止不常用的端口
- 对DNS Rebinding,考虑使用DNS缓存或者Host白名单
绕过
1.更改IP写法
特殊字符的数字、进制转换
2.使用解析到内网的域名
127.0.0.1.xip.io
3.利用解析url所出现的问题
https://test.com@127.0.0.1/
4.利用跳转
http://httpbin.org/redirect-to?url=http://192.168.0.1
5.通过各种非HTTP协议
gopher、file
6.利用IPv6
[::] 0000::1或ipv6的内网IP
7.利用IDN
国际化域名,也称特殊字符域名。指部分或完全使用特殊的文字或字母组成的互联网域名。