SSRF服务器端请求伪造
2021-12-08 02:32:46 0 举报
AI智能生成
ssrf
作者其他创作
大纲/内容
基础知识
简介
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务器端发起请求的安全漏洞,本质上是属于信息泄露漏洞。ssrf攻击的目标是从外网无法访问的内部系统(正是因为他是有服务器端发起的,所以他能够请求到与他相连而与外网隔离的内部系统)
产生原因
SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源
造成危害
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息
2.攻击运行在内网或本地的应用程序(比如溢出)
3.对内网web应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5.利用file协议读取本地文件等
漏洞出没位置(所有调外部资源的参数都有可能存在ssrf漏洞)
1 分享:通过URL地址分享网页内容
2 转码服务
3 在线翻译
4 图片加载与下载:通过URL地址加载或下载图片
5 图片、文章收藏功能
6 未公开的api实现以及其他调用URL的功能
7 从URL关键字中寻找
share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
绕过方法(黑名单)
更改IP地址写法(例如192.168.0.1)
8进制
0300.0250.0.1
10进制
3232235521
16进制
0xC0.0xA8.0.1
16进制整数格式
0xC0A80001
特殊省略模式
例如10.0.0.1这个IP可以写成10.1
利用解析URL 所出现的问题
当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.oldboyedu.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.oldboyedu.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容
攻防实验
端口探测
windows
页面响应时间判断
http/dict/https://127.0.0.1:端口
linux
页面回显信息判断
http/dict//192.168.x.x:端口
任意地址访问
内网访问
windows
页面响应时间判断
http/dict/https://ip地址
linux
页面响应时间判断
http/dict/https://ip地址
文件内容读取
file://
内网攻击
redis
防御方法
黑名单过滤
过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、localhost私有地址、IPv6地址
过滤file:///、dict://、gopher://、ftp:// http:// https:// php:///危险schema
内网服务开启鉴权(Memcached, Redis, Elasticsearch and MongoDB)
白名单过滤
使用地址白名单
需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致
对返回的内容进行识别
常见问题出现函数
file_get_contents()
支持协议: PHP ,
curl_exec()
支持协议: FTP , FTPS , HTTP, HTTPS, GOPHER, TELNET, DICT ,FILE ,LDAP
ftp:文件传输协议,提供一种在服务器和客户机之间上传和下载文件的有效方式;是基于TCP的传输,FTP采用双TCP连接方式;支持授权与认证机制,提供目录列表功能
FTPS: 是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。
HTTPS: 是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
http:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
gopher:gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样变可以解决漏洞点不在GET参数的问题了
telnet:Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。
dict: dict协议是一个字典服务器协议,通常用于让客户端使用过程中能够访问更多的字典源,但是在SSRF中如果可以使用dict协议那么就可以轻易的获取目标服务器端口上运行的服务版本等信息
如请求http://192.168.163.150/test.php?url=dict://192.168.163.1:3306/info 可以获取目标主机的3306端口上运行着mysq-l5.5.55版本的应用。
file:本地文件传输协议
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议
fsockopen()
分支主题
分支主题
0 条评论
下一页