SSRF服务器端请求伪造学习

SSRF (Server-Side Request Forgery,服务器端请求伪造)

是一种由攻击者构造请求,由服务端发起请求的安全漏洞。

一般情况,SSRF攻击的目标是外网无法访问的内部系统。

由于请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统。

SSRF漏洞原理

SSRF漏洞的形成大多是因为服务端提供了从其他服务器应用获取数据的功能,即服务端程序需要从其他服务器应用中获取数据,且没有对目标地址做过滤与限制, 导致攻击者可以利用此缺陷请求任意服务器资源。

例如
攻击者操作服务端从指定的 url 地址获取页面文本内容,加载指定地址的图片,利用的是服务端的请求伪造。
SSRF利用存在的 web 应用作为代理攻击远程和本地的服务器。

主要攻击方式(危害)
1. 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息。
2. 攻击运行在内网或本地的应用程序。
3. 对内网 web 应用进行指纹识别,识别企业内部的资产信息。
4. 攻击者内外网的 web 应用,主要是使用 HTTP GET 请求就可以实现的攻击。(如 sqli 等)
5. 利用file协议读取本地文件(内网资源)等。
6. 利用 Redis 未授权访问,HTTP CRLF 注入达到 getshell(取得权限)。
7. 进行跳板。
8. 无视cdn。
9. 使用特点协议攻击应用。(gopher、dict、FTP等)

注:

  • banner是指广告大图,就是横幅,一般也被称之为网幅广告、旗帜广告、横幅广告以及大标题广告等等。一般是指一种特殊类型的在线广告资源或广告图片,或者广告小图,banner主要用到网站页面的顶部、电商平台顶部、报纸上面部分、各种宣传大图。它可以是静态的图形,也可以是动画的图像。

  • redis 是一个 key-value 存储系统,即为一个数据库,一般在内网。

  • CRLF 代表回车换行, CR代表回车,LF代表换行。 (Carriage Return可以翻译为机器滑动的部分回到开始处,简写即为CR;
    Line Feed有行满的意思,简称LF)

  • CDN (Content Delivery Network,即内容分发网络):
    尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

PHP中下面函数的使用不当会导致SSRF漏洞:

file_get_contents()
fsockopen()
curl_exec()

SSRF 漏洞一般出现在有调用外部资源的场景中,如社交服务分享功能、图片识别功能、网站采集功能、远程资源请求(如 wordpress xmlrpc.php)、文件处理服务(如XML解析)等。

在对 SSRF 漏洞进行测试时,可以尝试一些常见的协议
file://:
从文件系统中获取文件内容,如 file:///etc/passwd
dict://:
字典服务器协议,让客户能够访问更多字典源。可以在 SSRF 中获取服务器上运行的服务器版本等信息。如 dict://127.0.0.1/info
gohpher://:
分布式的文档传递服务。使用 Gopher 协议时,通过控制访问的 url 可实现向指定的服务器发送任意内容,如 http 请求、MySQL请求等。

SSRF漏洞的修复

限制请求的端口只能为 web 端口,只允许访问 http 和 https 的请求。
限制不能访问内网的 IP,以防止对内网进行攻击。
屏蔽返回的详细信息。

下面通过 pikachu 靶场对 SSRF 漏洞的两种类型进行测试。
——
——

SSRF(curl)

进入界面,有一行字可以点击,点击之后返回了一首诗,并且 url 上有一个 get 请求传递了一个链接给后台。
在这里插入图片描述
尝试修改 url 的内容,把链接改为 www.baidu.com,看到了一个不一样的百度界面。
页面能够获取 get 参数 url ,然后将 url 的内容返回到网页上。
在这里插入图片描述
当设置参数 url 为内网时,就会泄露内网信息,如输入输入:127.0.0.2:3306
页面显示了 MySQL 的版本信息,也说明存在 MySQL 服务。
在这里插入图片描述
再看看用 file 协议读取本地文件。可以看到 win.ini 文件里的内容回显了出来。
在这里插入图片描述
附上根目录里的源代码。
在这里插入图片描述
——
——

SSRF(file_get_content)

file_get_content可以对本地和远程的文件进行读取。
和前面一样,点击之后 url 上向后台传递了一个链接。
在这里插入图片描述
也可以用前面的 file 协议:file:///C:/Windows/win.ini 读取到本地文件。
再尝试读取靶场源码,可以看到经过编码的源代码。

http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64encode/resource=ssrf.phpphp://filter/read=convert.base64-encode/resource=ssrf.php

附上根目录里的源代码。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值