什么是SSRF?

SSRF是Server-Side Request Forgery的缩写。这是一个漏洞,允许恶意用户导致Web服务器向攻击者选择的资源发出附加或编辑的HTTP请求。

SSRF有哪些类型?

SSRF有两种类型

  1. 常规SSRF,其中数据返回到攻击者的屏幕
  2. Blind SSRF漏洞,其中SSRF发生,但没有信息返回到攻击者的屏幕。

SSRF可以干嘛?有啥用吗?

  1. 进入未经授权的区域。
  2. 访问客户/组织数据。
  3. 扩展到内部网络的能力。
  4. 显示身份验证令牌/凭据。

SSRF的例子

我们直接实战一下SSRF。

在SSRF的实战中,我们有这几种方法来测试SSRF

第一种:

alt text

我们可以直接将URL部分替换成我们想要查看的链接。

第二种:

alt text

我们可以通过文件包含漏洞的思路来玩,我们使用../的,这是一个向上移动目录的写法,服务器会删除现在这个目录,就比如说图片里面的这个/socket,从而转换成我们的API。

第三种:

alt text

我们在末尾加上&x=,这个可以将剩余路径转换为查询字符串中的参数 (?x=)。

例题:

我们知道上面的这几种方法之后,我们来试试这个题目:

alt text

在经过黑盒测试后,我们可以发现,上面三种方法,可以使用第三种来解决这个题目

alt text

如何找到SSRF

我们在找SSRF的时候,需要注意这四个地方,可能会出洞。

第一种:

在地址栏中使用完整的URL的时候,比如:

1
https://www.example.com/from?url=https://www.example.com/

像这种情况下可能存在SSRF和URL跳转,都可以去尝试测试测试。

第二种:

表单中的隐藏字段,我们可以在页面代码中看到这样的字段

alt text

第三种:

在地址栏中,有一些部分是这样的,可能也存在SSRF

1
https://website.thm/form?server=api

像这种,我们可以去修改这里的api的值为我们想要的api或者链接。

第四种:

在地址栏中,url中带有路径的,也可能造成SSRF和文件包含

1
https://website.com/from?dst=/forms/contact

那我们现在放四个链接,让我们看看哪个更容易受到SSRF的攻击

1
2
3
4
1. https://website.thm/index.php
2. https://website.thm/list-products.php?categoryId=5325
3. https://website.thm/fetch-file.php?fname=242533.pdf&srv=filestorage.cloud.thm&port=8001
4. https://website.thm/buy-item.php?itemId=213&price=100&q=2

SSRF实战

内容:

在Acme IT Support网站的内容发现练习中,我们遇到了两个新端点 。第一个是 /private,它给我们一个错误消息,解释内容不能从我们的IP地址查看。第二个是新版本的客户帐户页面,位于 /customers/new-account-page ,具有新功能,允许客户为他们的帐户选择头像。

我们访问这个地址,然后来到这个页面:

alt text

我们选择一个头像,然后右键Update avate,然后检查代码。

1
<input type="radio" name="avatar" value="assets/avatars/1.png">

我们修改这里的value的值为x/../private,然后我们点击Update avate。

alt text

然后我们在源代码页面可以看到这个地方,我们去解base64码,然后就可以拿到flag

alt text

解码后的结果:

alt text

alt text