服务器端请求伪造(SSRF)漏洞解析
免责申明
本文仅是用于学习检测自己搭建的靶场环境有关SSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国家地区相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 如您继续阅读该文章即表明您默认遵守该内容。
一、SSRF介绍
1.1、SSRF简介
SSRF(Server-Side Request Forgery【服务器端请求伪造】)是一种 Web 安全漏洞,它允许攻击者引导服务器端web程序发起一些意外的请求内容。
典型的SSRF攻击目标是从外网无法访问的内部系统(也就是说,SSRF攻击是通过连接外网的Web服务器与它相连而与外网隔离的内部服务器或系统)。
1.2、SSRF产生原理
SSRF形成的原因大部分是由于该连通外网的服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。利用该连通外网服务器端存在缺陷的web程序作为代理攻击远程和本地的服务器。
二、SSRF漏洞
2.1、SSRF漏洞产生的位置
1、内容分享链接
2、图片、文章、视频的收藏功能
图片、文章、视频收藏中的内容就类似于分享功能中获取URL地址中title以及文本的内容作为显示,目的还是为了更好的用户体验。
3、从URL关键字中寻找
# 可利用浏览器查找如下这些常见的SSRF关键字
share
wap
url
link
src
source
target
u
display
sourceURl
imageURL
domain
总结起来就是:所有目标服务器会从自身发起请求的功能点,且我们可以控制地址的参数,都可能造成SSRF漏洞。
2.2、产生SSRF漏洞的函数以PHP为例
任何语言编写的应用都可能存在SSRF漏洞,本文以PHP为例进行说明:
序号 | php中可能存在SSRF漏洞的函数 | 说明 |
1 | file_get_contents | 将整个文件读入一个字符串中 |
2 | file_put_contents | 将数据写入指定路径的文件中保存 |
3 | fsockopen | 获取用户指定的url数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据 |
4 | curl_exec | curl一个用于发送和接收 HTTP 请求的库。它支持各种协议和功能,比如HTTP、HTTPS、FTP、SMTP等。利用 cURL 可以实现与 Web 服务器进行通信、获取远程数据等操作【curl_exec()函数用于执行一个 cURL 请求,并返回请求的结果】 |
2.3、SSRF漏洞的危害
SSRF主要是用来进行内网信息收集(如:内网有哪些主机是存活的,有哪些端口是开放的,运行了哪些应用和服务)。
序号 | SSRF漏洞的危害 |
1 |