简介
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)
漏洞原理
大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
产生方法
PHP中下面函数的使用不当会导致SSRF:
file_get_contents() fsockopen() curl_exec()
漏洞危害
1、让服务端去访问相应的网址
2、让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
3、可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
4、攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
5、攻击内网应用程序(利用跨协议通信技术)
6、判断内网主机是否存活:方法是访问看是否有端口开放
7、DOS攻击(请求大文件,始终保持连接keep-alive always)
漏洞位置
1.分享:通过URL地址分享网页内容
2.转码服务
3.在线翻译
4.图片加载与下载:通过URL地址加载或下载图片
5.图片、文章收藏功能
6.未公开的api实现以及其他调用URL的功能
7.从URL关键字中寻找
share
wap
url
link
src
source
target
display
sourceURl
imageURL
domain
验证方法
1.因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞。
2.在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.xxx.com/xxx.php?image=(地址)的就可能存在SSRF漏洞。
漏洞防护
1.过滤返回信息,验证远程服务器对请求的相应,如果 Web 应用获取某种已知类型的文件,那么可以在把返回结果展示给用户之前先验证返回信息是否符合标准
2.统一错误信息,避免用户根据错误信息来判断远程服务器端口状态
3.限制请求的端口为 HTTP 常用端口,比如 80、443、8080、8090
4.黑名单内网 IP,避免应用被用来获取内网数据,攻击内网
5.禁用不需要的协议。仅仅允许 HTTP 和 HTTPS 请求。可以防止类似于file://、gopher://和ftp://等引起的问题
6.禁止302跳转。
SSRF
curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件,同时支持HTTPS等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。
file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
来源:freebuf.com 2021-03-11 17:10:07 by: 可乐kele
请登录后发表评论
注册