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

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

程声明:该课程是教学使用,视频内涉及漏洞利用方法,请勿在互联网环境中使用;维护互联网安全,人人有责。实验所需环境:vmware;kali虚拟机一台;windows server一台;有docker环境的Linux虚拟机环境下载地址在购买课程后单独发送 【课程配套资源】1、Python脚本(Margin老师自研,不光能学漏洞,还能学Python,实在是划算)2、与Margin老师实时互动3、免费的CISP-PTE考试技巧指导(Margin老师与CISP-PTE的负责人很熟的,非常多的一手消息^o^)4、Margin老师的内部直播可以优先参加5、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战   【课程主要解决问题】1、CSRF、SSRF搞不清楚?2、SSRF原理是什么?危害大小?如何利用SSRF获取主机权限?如果使用Python提高挖洞效率?3、Gopher协议、Dict协议?完全没听过啊,没关系,看完课程后你门清。4、SSRF渗透Redis数据库,Redis客户端和服务器端怎么通信?通信报文是怎么样的?看这里就行。5、SSRF渗透Struts2总是失败?不知道如何编码?不知道如何使用Gopher协议?来这里。6、SSRF表面简单,实则有无数坑,通过视频提高学习效率吧。 【CISP-PTE介绍】1、CISP-PTE是进入网络安全行业的TOP1认证,能帮你梳理完整的网络安全知识体系2、有PTE证书在网络安全公司是免技术笔试的,怎么样?是不是很棒。3、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战本课程属于CISP-PTE渗透测试工程师认证体系的课程,但内容更加丰富。CISP-PTE是国内第一个以动手实操为主的网络安全认证,该注册考试是为了锻炼考生世界解决网络安全问题的能力,持续增强我国的网络安全水平和防御能力,促进国内网络防御能力的不断提高。考试内容从多个层面进行,考点和网络安全动态相结合,真实的反应出真实的网络环境中发现的各种问题。如果要考取CISP-PTE证书需要掌握以下内容:1、Web安全基础,注入漏洞、上传漏洞、跨站脚本漏洞、访问控制漏洞、会话管理漏洞哦等。2、中间件的安全知识,如:Apache,IIS,Tomcat,以及 JAVA 开发的中间件 Weblogic,Jboss, Websphere 等,且要了解中间件加固方法,在攻与防的能力上不断提升。3、操作系统安全,包含Windows和Linux操作系统,从账户管理、文件系统权限、日志审计等方面讲解,了解常见的漏洞方式和加固方法。4、数据库安全,包含MSSQL、MYSQL、ORACLE、REDIS数据,了解常用的数据库漏洞和题全方法,保证数据库的安全性。 【关于Margin老师】· Margin/教育系统网络安全保障人员认证首批讲师/高级讲师· 擅长CTF/Web安全/渗透测试 /系统安全· 3年研发/擅长Java/Python/某银行现金循环机业务系统开发者· 曾参与开发网络安全认证教材· 知乎专栏/CISP-PTE渗透测试工程师学习· 4年线下网络安全讲师/2000+线下学员/100000+线上学员
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Goodric

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

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

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

打赏作者

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

抵扣说明:

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

余额充值