一、SSRF简介
SSRF,英文全称Server-Side Request Forgery,服务器端请求伪造。通俗来说,是坏家伙通过构造的一串特殊话术,哄骗站点背后的服务器,发起特殊请求的一种漏洞。
一句话总结:利用一个可以发起网络请求的服务,利用服务背后的服务器当跳板,实现各种公积。
二、SSRF基本原理
在辽阔的互联网上搜寻了一圈,大家翻来覆去都是同一句话,“由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。”
这句话说的倒也没错,我个人的理解是,服务端可以根据用户输入的需求去其他地方拿东西,但是并没对用户的需求进行过滤和限制,用户的所有需求,不论是合理还是不合理的,都去实现,这就导致了漏洞的存在。
三、SSRF的危害
上文提到,服务端未经辨别,在服务器本身直接实施,大概可以约等于拿到了内网服务器的权限,可以在内网进行各种操作,比如:
1、扫描内网,探测内网资产;
2、向内网任意主机的任意端口发送payload,实现不可告人的操作;
3、请求超级大文件,让服务器始终保持连接状态,实现DOS;
4、对内网的web站点,实现公积(比如struts2)
5、结合file协议,获取服务器本地文件;
这么说可能不太直观,说个真实的案例。曾经有这么一个坏家伙,通过SSRF拿到了服务器端的源代码,然后开始代码审计,巧的是竟然让他发现了一个SQL注入漏洞,然后利用SSRF发起对内网的SQL注入,成功提了权,换句话就是,可以为所欲为了。
四、如何防范SSRF
SSRF本身来源于业务本身的正常功能,比如图片的请求等,有的人动了坏心思,于是有了这么一出。有攻就有防,目前主要有以下几个手段:白名单、协议限制和过滤返回信息等。
1、白名单
设置用户提交的url白名单,比如,用户在访问www.scwipe.com时,提交的url只允许是来自scwipe.com的
2、协议限制
限制只能使用http、https请求,可以避免如file:///、ftp://等情况带来的文件泄露;
3、过滤返回信息
针对服务端返回的信息进行过滤,比如服务本身是去获取jpg格式的图片,那么返回其他的内容,就是不符合标准的,可以进行友好报错处理。
当然,方法不止这么一点,欢迎大家提供其他的思路~
五、写在最后
突破自己、打破边界、冲破压力,才能成为真正的强者,立于高手之林!祝贺EDG!