SSRF服务器请求伪造
一、概述
SSRF:服务端请求伪造,其形成的原因是由于服务端提供了从其他服务器应用获取数据,但又没有对目标地址做出严格的过滤与限制。
导致攻击者可以传入任意的地址让后端服务器发起请求,并返回对目标地址的数据请求。
数据流:攻击者---服务器---目标地址
我们可以通过伪造服务器发送请求,从而获取客户端所不能得到的数据
二、SSRF常见函数
file_get_contents()
fsockopen()
curl_exec()
共同点:通过网络协议,远程访问目标服务器上的资源,然后对资源进行处理。
三、SSRF主要危害
- 可以对外网、服务器内网、本地端口扫描,获取一些服务的banner信息
- 攻击运行在内网或本地的应用程序(如 溢出)
- 对内网web应用进行指纹识别,通过访问默认文件实现
- 攻击内外网的web应用,主要使用GET参数就可以实现的攻击(如 struts2 sql注入)
- 利用file,dict,gopher,http,https等协议读取本地文件,访问敏感目标,反弹shell等高危操作
四、SSRF漏洞挖掘技巧
1、从url中寻找
share
wap
url
link
src
source
target
u
3g
display
sourceurl
imageurl
domain
remote
2、从web页面功能寻找
- 分享功能
- 转码服务
- 在线翻译
- 图片下载与加载
- 图片、文章收藏功能
- 未公开的api实现
五、SSRF的判断方法
- 完全回显
- 半回显
- 无回显
无回显解决技巧:
- 可以使用DNSlog来解决无回显的情况
- 时间型盲注
- 查看自己服务器的访问日志
六、绕过技巧
- ip地址转换为十进制
- http://16969440379
- 重构URL地址
- http://www.baidu.com@qq.com
- 短网址绕过
七、SSRF的防御
- 限制协议为http/https,不允许其他协议
- 限制内网ip访问,如192开头
- 统一错误信息
- 禁用重定向操作
- 限制请求的端口
- 禁止远程用户的指定请求,让参数不可控
- 需要认证交互,禁止非正常用户访问服务,杜绝伪造请求