CTF特训营:技术详解、解题方法与竞赛技巧
上QQ阅读APP看书,第一时间看更新

4.1 如何形成

SSRF形成的原因大都是由于服务端提供了从其他服务器或应用中获取数据的功能,但没有对目标地址做出有效的过滤与限制造成的。

比如,一个正常的Web应用本应该从指定URL获取网页文本内容或加载指定地址的图片,而攻击者利用漏洞伪造服务器端发起请求,从而突破了客户端获取不到数据的限制,如内网资源、服务器本地资源等。

为了方便读者理解,下面举例说明,请考虑如下代码:


<?php
    $url = $_GET['url'];
    echo file_get_contents($url);
?>

这段代码使用file_get_contents函数从用户指定的URL获取图片并展示给用户。此时如果攻击者提交如下Payload,就可以获取到内网主机HTTP服务8000端口的开放情况(http://example.com/ssrf.php?url=http://192.168.252.1:8000/)。

图4-1所示的就是一个SSRF攻击的示例。

图4-1 SSRF攻击示例