SSRF原理及漏洞演示

这篇具有很好参考价值的文章主要介绍了SSRF原理及漏洞演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、漏洞简介

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的 一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发 起的,所以它能够请求到与它相连而与外网隔离的内部系统。

1.1 漏洞原理

SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与 限制。 通过控制功能中的发起请求的服务来当作跳板攻击内网中其他服务。比如,通过控制前台的请求远程地 址加载的响应,来让请求数据由远程的URL域名修改为请求本地、或者内网的IP地址及服务,来造成对 内网系统的攻击。

1.2 漏洞危害

1、扫描内网开放服务 2、向内部任意主机的任意端口发送payload来攻击内网服务 3、DOS攻击(请求大文件,始终保持连接Keep-Alive Always) 4、攻击内网的web应用,例如直接SQL注入、XSS攻击等 5、利用file、gopher、dict协议读取本地文件、执行命令等

2、检测与绕过

2.1 漏洞检测

假设一个漏洞场景:某网站有一个在线加载功能可以把指定的远程图片加载到本地,功能链接如下: http://www.xxx.com/image.php?image=http://www.xxc.com/a.jpg 那么网站请求的大概步骤应该是类似以下: 用户输入图片地址->请求发送到服务端解析->服务端请求链接地址的图片数据->获取请求的数据加载到 前台显示。 这个过程中可能出现问题的点就在于请求发送到服务端的时候,系统没有效验前台给定的参数是不是允 许访问的地址域名,例如,如上的链接可以修改为: http://www.xxx.com/image.php?image=http://127.0.0.1:22 如上请求时则可能返回请求的端口banner。如果协议允许,甚至可以使用其他协议来读取和执行相关 命令。例如 http://www.xxx.com/image.php?image=file:///etc/passwd http://www.xxx.com/image.php?image=dict://127.0.0.1:22/data:data2 (dict可以向服务 端口请求data data2) http://www.xxx.com/image.php?image=gopher://127.0.0.1:2233/_test (向2233端口发送数 据test,同样可以发送POST请求) 对于不同语言实现的web系统可以使用的协议也存在不同的差异,其中: php: http、https、file、gopher、phar、dict、ftp、ssh、telnet... java: http、https、file、ftp、jar、netdoc、mailto... 判断漏洞是否存在的重要前提是,请求是服务器发起的,以上链接即使存在并不一定代表这个请求是服 务器发起的。因此前提不满足的情况下,不需要考虑SSRF。 http://www.xxx.com/image.php?image=http://www.xxc.com/a.jpg 前端获取链接后,是由js来获取对应参数交由window.location来处理相关的请求,或者加载到当前的 iframe框架中,此时并不存在SSRF ,因为请求是本地发起,并不能产生攻击服务端内网的需求。

2.2 漏洞出现点

分享 通过url 地址分享文章,例如如下地址: http://share.magedu.com/index.php?url=http://127.0.0.1 通过url参数的获取来实现点击链接的时候跳到指定的分享文章。如果在此功能中没有对目标地址的范围 做过滤与限制则就存在着SSRF漏洞。

图片加载与下载 通过URL地址加载或下载图片 http://image.magedu.com/image.php?image=http://127.0.0.1 图片加载存在于很多的编辑器中,编辑器上传图片处,有的是加载本地图片到服务器内,还有一些采用 加载远程图片的形式,本地文章加载了设定好的远程图片服务器上的图片地址,如果没对加载的参数做 限制可能造成SSRF。

图片、文章收藏功能 http://title.magedu.com/title?title=http://title.magedu.com/as52ps63de 例如title参数是文章的标题地址,代表了一个文章的地址链接,请求后返回文章是否保存、收藏的返回 信息。如果保存、收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF。

利用参数中的关键字来查找 例如以下的关键字: share wap url link

src source target u 3g display sourceURl imageURL domain ...

2.3 漏洞绕过

部分存在漏洞,或者可能产生SSRF的功能中做了白名单或者黑名单的处理,来达到阻止对内网服务和资 源的攻击和访问。因此想要达到SSRF的攻击,需要对请求的参数地址做相关的绕过处理,常见的绕过方 式如下:

场景1:限制为http://www.xxx.com 域名时 可以尝试采用http基本身份认证的方式绕过,http://www.xxx.com@www.xxc.com。 在对@解析域名 中,不同的处理函数存在处理差异,例如: http://www.aaa.com@www.bbb.com@www.ccc.com, 在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com。

场景2:限制请求IP不为内网地址 即限制访问所有内网IP,可采用短网址绕过,短网址转换。 可以使用在线进制转换, 127转换16进制为7f,系统中表示16进制前面要加0x,8进制前加0 可以解析为127.0.0.1采用进制转换,127.0.0.1八进制:0177.0.0.1。十六进制:0x7f.0.0.1。十进制: 2130706433

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

场景3:限制请求只为http协议 采用302跳转,百度短地址,或者使用短地址生成其他

场景4:利用句号绕过 127。0。0。1 >>> 127.0.0.1 其他绕过形式可以查看:https://www.secpulse.com/archives/65832.html

3、查看是否存在SSRF漏洞

  1. 排除法:浏览器F12查看源代码看是否是在本地进行了请求 举例:该资源地址类型为 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞。 2、Dnslog等工具进行测试,查看是否被访问 生成一个域名用于伪造请求,看漏洞服务器是否发起 DNS 解析请求,若成功访问在 http://DNSLog.cn 上就会有解析日志。 3、抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找 存在HTTP服务的内网地址。 4、访问日志检查:伪造请求到自己控制的公网服务器,然后在服务器上查看访问日志是否有来自漏洞 服务器的请求。 5、扫描工具

4、Pikachu演示

4.1 SSRF(curl)

首先我们大概了解一下在PHP中curl函数是用来干什么的。curl是一个库,能让你通过URL和许多不同种 的服务器进行交流,并且还支持许多协议,重点是可以用来请求Web服务器。curl可以支持https认证、 http post、ftp上传、代理、cookies、简单口令认证等等功能。

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

观察URL,发现它传递了一个URL给后 台

我们可以把 url 中的内容改为百度 http://127.0.0.1/vul/ssrf/ssrf_fgc.php?url=https://www.baidu.com

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

还可以利用file协议读取本地文件

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

http://10.0.0.7:81/vul/ssrf/ssrf_curl.php?url=file:///etc/passwd

4.2 SSRF(file_get_content)

file_get_contents() 函数把整个文件读入一个字符串中,是用于将文件的内容读入到一个字符串中的首 选方法。如果操作系统支持,还会使用内存映射技术来增强性能。 php://filter:是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 对于一体式(all-in-one)的 文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(),在数据流内容读取之前没有机会应 用其他过滤器。 php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用 这些参数可以参考具体范例。 PHP: php:// - Manual

file_get_contents里面带有php://filter 我们用这个就可以来读取php源码,所以我们来构造URL:

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

直接使用 resource 指定 ssrf.php 文件,可以看到访问成功

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

但是php文件被解析了,我们希望拿到网站的源代码,那么我们需要对代码做一层编码,不让他解析, 拿到之后我们再进行解码,这样就拿到了网站的源代码;在read参数中加入 convert.base64-encode PHP: 转换过滤器 - Manual

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

然后网页出现了base64编码的代码

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

利用解码工具或hackbar:

ssrf漏洞原理,网络安全,安全,web安全,网络安全,网络攻击模型,服务器,Powered by 金山文档

5、漏洞修复

1、设置URL白名单或者黑名单内网IP; 2、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类 型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准; 3、禁用不需要的协议,仅仅允许http和https请求,可以防止类似于file:///,gopher://,ftp:// 等引起的问 题。 文章来源地址https://www.toymoban.com/news/detail-763477.html

到了这里,关于SSRF原理及漏洞演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web漏洞之SSRF(服务器端请求伪造)

    服务器会根据用户提交的URL 发送一个HTTP 请求。使用用户指定的URL,Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL 和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造”的缺陷。“请求伪造”,顾名思义,

    2024年02月04日
    浏览(30)
  • Web网络安全-----Log4j高危漏洞原理及修复

    Web网络安全-----红蓝攻防之信息收集 Log4j 即 log for java(java的日志) ,是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;

    2024年02月10日
    浏览(38)
  • API安全——SSRF服务端请求伪造的原理以及防范

    SSRF全称Server-Side Request Forgery,服务端请求伪造。 在最新的2023 OWASP中API 安全的Top10榜单中,ssrf排第7。 我们在开发过程中,通常使用API 获取远程时出现服务器端请求伪造 (SSRF) 缺陷 资源,而不验证用户提供的 URL。它使攻击者能够 强制应用程序将精心编制的请求发送到意外

    2024年02月12日
    浏览(28)
  • 【burpsuite安全练兵场-服务端9】服务端请求伪造SSRF漏洞-7个实验(全)

       博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:

    2024年02月02日
    浏览(32)
  • Weblogic SSRF漏洞

    2.1bp抓包,测试该漏洞。通过测试端口,查看哪个端口能够进行具体得操作 2.2注入HTTP头,利用Redis反弹shell

    2024年02月07日
    浏览(25)
  • SSRF漏洞拓展

    目录 SSRF漏洞拓展 curl_exec函数 一、ssrf配合gopher协议反弹shell 二、ssrf配合gopher协议写马 三、ssrf配合gopher协议ssh免密登录 四、ssrf配合dict协议反弹shell 实验环境: 1、利用定时任务构造反弹shell 2、进行URL编码 3、然后把%0a换成%0d%0a,最后再加上%0d%0a,再进行一次url编码 4、对参

    2024年02月09日
    浏览(27)
  • SSRF漏洞

    SSRF(Server-Side Request Forgery:服务器端请求伪造) 严正声明:本文仅限于技术讨论,严禁用于其他用途。 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞 SSRF漏洞形成的原因主要是 服务端提供了从其他服务器应用获取数据的功能,并且未对客户端所传输过来的URL参数进

    2024年02月03日
    浏览(29)
  • PHP代码审计8—SSRF 漏洞

    1、漏洞原理与防御方法 1) 漏洞原理 SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能,并且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。 2)防御方法 过滤返

    2024年02月09日
    浏览(29)
  • SSRF+redis未授权漏洞复现

    1.SSRF 漏洞简介 SSRF(Server-Side Request Forgery)即服务器端请求伪造,是一种由攻击者构造攻击链传给服务器,服务器执行并发起请求造成安全问题的漏洞,一般用来在外网探测或攻击内网服务。当网站需要调用指定URL地址的资源,但是没有对这个URL做好过滤,就会导致可以访问

    2024年02月07日
    浏览(39)
  • 新后端漏洞之----SSRF漏洞(服务端请求伪造)

    这几天各种技术面试接踵而至,压得我喘不过气了!然后面试官问了我这个SSRF漏洞原理和利用方式以及防御手段,当然同时还问了好几个Top10漏洞! 危害:一个不符合预期的请求就可能导致整个内网沦陷 全名 :Server Side Request Forgery 基本原理:攻击者构造恶意的URL,由服务器

    2024年02月11日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包