SSRF的原理和防范
背景
最近做的安全测评主要是SSRF,发现自己在这一块有挺大知识盲点,抓紧补一下。
1.介绍
SSRF(Server-Side Request Forgery:服务器端请求伪造),是一种攻击者利用服务端发起请求的安全漏洞。攻击者能够诱使服务端应用程序向攻击者选择的域发出HTTP请求。
SSRF针对的目标通常是从外部无法访问的内网系统。正因为它是由服务端发起的,所以它能请求到与它相通而与外部隔离的内网系统,可被用于作为代理来实施内网(或者远程服务器)的攻击。
2.成因
- 大都是由于服务端提供了从其他服务器应用获取数据的功能,而没有对目标地址进行严格过滤与限制,一旦被发现,攻击者可以构造恶意请求实施攻击。
3.危害与防范
3.1 危害
- 成功的SSRF攻击常用会导致黑客在易受攻击的应用程序本身或应用程序与之通信的其他后端系统执行未授权(恶意)操作,和对组织内数据的访问。特殊情况下,SSRF漏洞可能允许攻击者执行任意命令。
- SSRF可能的攻击方式和危害如下:
- 让服务端去访问内网的一些WEB应用指纹文件来判断是否存在相应的CMS,从而收集内网CMS信息
- 可以使用file、dict、gopher、ftp协议进行请求访问相应的文件,可能造成文件任意读取,导致敏感信息泄漏
- 攻击内网web应用,可以向内部任意主机的任意端口发送精心构造的数据包,如果应用本身存在漏洞,可能造成远程命令执行
- 攻击内网应用程序(利用跨协议通信技术)
- 内网端口扫描,通过访问看是否有端口开放,从而获取内网端口开放信息
- 拒绝服务攻击,请求大文件,始终保持链接keep-alive alway,导致拒绝服务
3.2 防范
- 禁止服务端跳转,防止以跳转方式绕过HTTP协议限制
- 对于SSRF,回显是能够成功利用的重要条件,所以过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果WEB应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
- 禁用不需要的协议,仅仅允许HTTP和HTTPS请求。可以防止类似于
file://、gopher://、ftp://等引起的问题 - 设置URL白名单或者限制内网IP,避免应用被用来获取内网数据,攻击内网
- 限制请求的端口为HTTP常用的端口,例如80、443、8080、8090
- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态
SSRF的原理和防范的更多相关文章
- Atitit.图片木马的原理与防范 attilax 总结
Atitit.图片木马的原理与防范 attilax 总结 1.1. 像图片的木马桌面程序1 1.2. Web 服务端图片木马1 1.3. 利用了Windows的漏洞1 1.4. 这些漏洞不止Windo ...
- UDP反射DDoS攻击原理和防范
东南大学:UDP反射DDoS攻击原理和防范 2015-04-17 中国教育网络 李刚 丁伟 反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素.因此,防范可以从配 ...
- 网络XSS攻击和CSRF攻击原理及防范
网络XSS攻击和CSRF攻击原理及防范 原文地址:http://www.freebuf.com/articles/web/39234.html 随着Web2.0.社交网络.微博等等一系列新型的互联网产 ...
- 分布式拒绝服务攻击(DDoS)原理及防范【转】
DDoS攻击概念 DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应. DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击 ...
- CC攻击原理及防范方法和如何防范CC攻击
一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...
- CC攻击原理及防范方法
一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...
- web安全防范之SQL注入攻击、攻击原理和防范措施
SQL注入 攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击包括可以通过SQL语句做的任何事 ...
- CSRF的原理和防范措施
a)攻击原理: i.用户C访问正常网站A时进行登录,浏览器保存A的cookie ii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参 ...
- Sync 攻击原理及防范技术
据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法.相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN攻击,有些网络蠕虫病毒配合SY ...
随机推荐
- Java中的函数式编程(五)Java集合框架中的高阶函数
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程. 本文的 ...
- CQL和SQL的CRUD操作比较
数据进行CRUD操作时,CQL语句和SQL语句的异同之处. 1.建表 2.CRUD语句比较 3.总结 1.建表 在此之前先分别创建两张表,插入数据,用来测试然后进行比较 在SQL数据库里面创建表 在C ...
- 【数据结构与算法Python版学习笔记】树——利用二叉堆实现优先级队列
概念 队列有一个重要的变体,叫作优先级队列. 和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的. 优先级最高的元素在最前,优先级最低的元素在最后. 实现优先级队列的经典方法是使 ...
- Netty学习笔记(1)NIO三大组件
1. Channel channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前 ...
- Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑
----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...
- 最长子序列(线性DP)学习笔记
子序列和子串不一样.子串要求必须连续,而子序列不需要连续. 比如说\(\{a_1,a_2\dots a_n\}\),他的子串就是\(\{a_i,a_{i+1},\dots, a_j|1\leq i\l ...
- 最短路计数(SPFA× Dijkstra√)
题目描述 给出一个n个顶点m条边的无向无权图,顶点编号为1−n.问从顶点1开始,到其他每个点的最短路有几条. 输入格式 第一行包含2个正整数n,m,为图的顶点数与边数. 接下来M行,每行2个正整数x, ...
- hdu 1027 Ignatius and the Princess II(正、逆康托)
题意: 给N和M. 输出1,2,...,N的第M大全排列. 思路: 将M逆康托,求出a1,a2,...aN. 看代码. 代码: int const MAXM=10000; int fac[15]; i ...
- i love dingning
"如果你爱一个人,不是下课给人家买买水,不是短信发来发去,也不是周末一起出来唱唱歌聊聊天吃吃饭,而是做一个出色的人.以后的以后,可能还有别的人爱她,你要做的,是把别人都比下去.你要变得优秀, ...
- 【java设计模式】(10)---模版方法模式(案例解析)
一.概念 1.概念 模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式. 它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 ...