SSRF-服务端请求伪造
1.SSRF是什么?
SSRF(Server-side Request Forge, 服务端请求伪造)。由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。
2.SSRF可以做什么?
- 扫内网。
- 向内部任意主机的任意端口发送精心构造的Payload 。
- DOS攻击(请求大文件,始终保持连接Keep-Alive Always)。
- 攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)。
- 利用file协议读取本地文件等。
- 加载外部的恶意木马文件执行。
- 加载内部的敏感文件程序自身的敏感文件。
- 来访问内网进行内网端口的扫描、获取内网设备信息、枚举内网服务等。
3.攻击原理。
由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤和限制.例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造,SSRF利用存在缺陷的WEB应用作为代理攻击远程和本地的服务器。
4.防御SSRF攻击。
- 过滤返回信息,验证远程服务器队请求的响应是比较容易的方法,如果web应用是去获取某一种类型的文件。那么再把返回的结果展示给用户之前先验证返回的信息是否符合标准。
- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
- 闲置请求的端口为http常用的端口,比如:80、443、8080、8090。
- 黑名单内网IP,避免应用被用来获取内网数据,攻击内网。
- 禁用不需要的协议,仅允许http和https的请求。