What's SSRF
什么是SSRF?
SSRF是Server-Side Request Forgery的缩写。这是一个漏洞,允许恶意用户导致Web服务器向攻击者选择的资源发出附加或编辑的HTTP请求。
SSRF有哪些类型?
SSRF有两种类型
- 常规SSRF,其中数据返回到攻击者的屏幕
- Blind SSRF漏洞,其中SSRF发生,但没有信息返回到攻击者的屏幕。
SSRF可以干嘛?有啥用吗?
- 进入未经授权的区域。
- 访问客户/组织数据。
- 扩展到内部网络的能力。
- 显示身份验证令牌/凭据。
SSRF的例子
我们直接实战一下SSRF。
在SSRF的实战中,我们有这几种方法来测试SSRF
第一种:
我们可以直接将URL部分替换成我们想要查看的链接。
第二种:
我们可以通过文件包含漏洞的思路来玩,我们使用../的,这是一个向上移动目录的写法,服务器会删除现在这个目录,就比如说图片里面的这个/socket,从而转换成我们的API。
第三种:
我们在末尾加上&x=,这个可以将剩余路径转换为查询字符串中的参数 (?x=)。
例题:
我们知道上面的这几种方法之后,我们来试试这个题目:
在经过黑盒测试后,我们可以发现,上面三种方法,可以使用第三种来解决这个题目
如何找到SSRF
我们在找SSRF的时候,需要注意这四个地方,可能会出洞。
第一种:
在地址栏中使用完整的URL的时候,比如:
1 | https://www.example.com/from?url=https://www.example.com/ |
像这种情况下可能存在SSRF和URL跳转,都可以去尝试测试测试。
第二种:
表单中的隐藏字段,我们可以在页面代码中看到这样的字段
第三种:
在地址栏中,有一些部分是这样的,可能也存在SSRF
1 | https://website.thm/form?server=api |
像这种,我们可以去修改这里的api的值为我们想要的api或者链接。
第四种:
在地址栏中,url中带有路径的,也可能造成SSRF和文件包含
1 | https://website.com/from?dst=/forms/contact |
那我们现在放四个链接,让我们看看哪个更容易受到SSRF的攻击
1 | 1. https://website.thm/index.php |
SSRF实战
内容:
在Acme IT Support网站的内容发现练习中,我们遇到了两个新端点 。第一个是 /private,它给我们一个错误消息,解释内容不能从我们的IP地址查看。第二个是新版本的客户帐户页面,位于 /customers/new-account-page ,具有新功能,允许客户为他们的帐户选择头像。
我们访问这个地址,然后来到这个页面:
我们选择一个头像,然后右键Update avate,然后检查代码。
1 | <input type="radio" name="avatar" value="assets/avatars/1.png"> |
我们修改这里的value的值为x/../private,然后我们点击Update avate。
然后我们在源代码页面可以看到这个地方,我们去解base64码,然后就可以拿到flag
解码后的结果: