Web安全原理(4)——SSRF
1.SSRF简介
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。
2.SSRF原理
(1) 成因:由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
(2)理解:假设A网站为所有用户均可访问的外网网站,而B网站是A网站所在内网中的一个网站,只有内网用户能够访问。现在用户向A发送服务请求,A收到请求后便会响应用户请求。假设此时攻击者恶意构造一个URL,URL里面包含了B网站的域名相关信息。那么A收到请求后,若对请求参数没有进行过滤限制,那么A便会向B再发送请求,最终将B的相关数据响应给内网外的用户。
(3)攻击方式:
- 可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;
- 攻击运行在内网或本地的应用程序(比如溢出);
- 对内网Web应用进行指纹识别,通过访问默认文件实现;
- 利用 file 协议读取本地文件等;
3.实战演示
(1)ssrf.php功能是根据URL中的参数,将URL内容返回到页面上。测试URL:localhost/ssrf.php?url=www.baidu.com,可见将百度的内容显示了出来。

(2)修改URL中的url参数为服务器所在内网的某个计算机地址,例如url=192.168.110.2:3306,尝试通过3306端口访问MySQL服务。我们可以看到返回显示禁止连接到MySQL服务器,,说明存在MySQL服务。

(3)访问url=file:///c:/windows/win.ini,尝试读取本地文件。

4.SSRF漏洞修复建议
- 限制访问端口只能为web端口,限制服务器只响应http和https请求;
- 对服务器所能访问的内网IP进行限制;
- 屏蔽返回的详细信息。
SSRF(服务器端请求伪造)是一种安全漏洞,允许攻击者通过构造请求,使服务器对内部系统发起请求。文章介绍了SSRF的成因、原理,包括攻击方式如端口扫描、内网应用攻击和文件读取,并通过实战演示展示了如何利用SSRF攻击。最后,提出了限制访问端口、限定内网IP和屏蔽返回信息等修复建议。
848

被折叠的 条评论
为什么被折叠?



