安全矩阵

 找回密码
 立即注册
搜索
查看: 4694|回复: 0

SSRF漏洞浅析

[复制链接]

98

主题

207

帖子

955

积分

高级会员

Rank: 4

积分
955
发表于 2020-8-15 08:01:28 | 显示全部楼层 |阅读模式


微信公众号:计算机与网络安全
ID:Computer-network

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。

1、SSRF漏洞原理

SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。

主要攻击方式如下所示。

● 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。

● 攻击运行在内网或本地的应用程序。

● 对内网Web应用进行指纹识别,识别企业内部的资产信息。

● 攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如struts2、SQli等)。

● 利用file协议读取本地文件等。

2、SSRF漏洞利用

SSRF漏洞利用的测试地址:http://127.0.0.1/ssrf.php?url=http://127.0.0.1/2.php

页面ssrf.php实现的功能是获取GET参数URL,然后将URL的内容返回网页上。如果将请求的网址篡改为http://www.baidu.com,则页面会显示http://www.baidu.com的网页内容,如图1所示。

图1  篡改URL网址

但是,当设置参数URL为内网地址时,则会泄露内网信息,例如,当url=192.168.0.2:3306时,页面返回“当前地址不允许连接到MySQL服务器”,说明192.168.0.2存在MySQL服务,如图2所示。

图2  篡改URL网址为内网资源

访问ssrf.php?url=file:///C:/Windows/win.ini即可读取本地文件,如图3所示。

图3  篡改URL网址为本地文件

3、SSRF漏洞代码分析

在页面SSRF.php中,程序获取GET参数URL,通过curl_init()初始化curl组件后,将参数URL带入curl_setopt($ch,CURLOPT_URL,$url),然后调用所以curl-exec请求该URL。由于服务端会将banner信息返回客户端,所以可以根据banner判断主机是否存在某些服务,代码如下。



4、SSRF漏洞修复建议

针对SSRF漏洞的修复,给出以下这几点建议。

● 限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS的请求。

● 限制不能访问内网的IP,以防止对内网进行攻击。

● 屏蔽返回的详细信息。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 05:26 , Processed in 0.015777 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表