如何识别和防范利用SSRF漏洞进行网络攻击的技巧与策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1567个文字,预计阅读时间需要7分钟。
SSRF漏洞解析及成因总结:
SSRF(Server-side Request Forgery,服务器端请求伪造)是一种攻击方式,攻击者通过服务器端应用程序,利用其向其他系统或服务发送恶意请求,以达到攻击目的。以下是对SSRF漏洞的简要解析及成因总结:
1. 原理及成因: - 原理:攻击者利用服务器端应用程序的漏洞,如文件上传、URL重定向、参数传递等,构造恶意请求,使服务器端代为发起请求,从而攻击其他系统或服务。 - 成因: - 缺乏输入验证:服务器端对用户输入未进行严格验证,导致攻击者可以构造恶意请求。 - 信任不安全的第三方服务:服务器端调用第三方服务时,未对其安全性进行充分验证。 - 使用不安全的API接口:服务器端使用的API接口存在漏洞,攻击者可以利用这些漏洞进行攻击。
2. 常见利用方法: - 文件上传漏洞:攻击者利用文件上传功能,上传恶意文件到服务器,进而获取服务器权限。 - URL重定向漏洞:攻击者构造恶意URL,使服务器端进行重定向,进而访问攻击者控制的网站。 - 参数传递漏洞:攻击者修改参数传递方式,使服务器端执行恶意操作。
3. 总结: - 知识来源:学习相关安全知识,了解SSRF漏洞的原理及成因。 - 避免非法用途:遵守法律法规,不利用SSRF漏洞进行非法攻击。
自述:由于篇幅限制,本文仅对SSRF漏洞进行简要解析及成因总结,具体内容请参考相关安全资料。
SSRF服务端请求伪造漏洞,原理及成因常见利用方法总结文中知识仅供学习参考,禁止非法用途。否则后果自负
SSRF漏洞整理
什么是SSRF?
SSRF(Sever-side Request Forge) 是 服务端请求伪造漏洞
SSRF主要是构造恶意载荷(payload)攻击脚本,并诱导服务器发起请求,让目标服务器执行非本意的操作
SSRF常被用于,探测攻击者无法访问到的网络区域,比如服务器所在的内网,或是受防火墙访问的主机。
当程序执行逻辑代码时,没有经过严格的过滤。比如没有限制可以构建恶意访问的敏感协议头或内网访问资源权限时。攻击者可以构造恶意语句,向服务端发送包含恶意URL链接的请求,此时借由服务端去访问构建的恶意URL,以成功获取目标服务端中受保护网络内的资源的一种安全漏洞。
1.SSRF是服务端请求伪造,SSRF是诱导服务器访问,欺骗的是服务端(服务器)
2.CSRF是跨站请求伪造,CSRF是通过诱导用户点击,欺骗的是客户端(浏览器)
假设是一台存在远程代码执行漏洞的内网机器,借助SSRF漏洞,可以绕过WAF、策略等限制,且可以直接获取目标的最高权限。哪怕是通过外网隔离的内网机器,借由SSRF也无法保证内网机器的绝对安全
可能造成的危害:
- 内网探测:对内网服务器办公机器进行端口扫描 资产扫描 漏洞扫描
- 窃取本地和内网敏感数据(访问和下载内网的敏感数据):利用file协议
- 攻击服务器本地或内网应用:利用发现的漏洞,可以进一步发起攻击利用
- 跳板攻击: 利用SSRF漏洞,对内或对外发起攻击,以隐藏自己的真实IP(肉鸡)
- 绕过安全防御: 比如防火墙 CDN
当危险函数(PHP)在攻击者层面是可控的,即可能存在SSRF漏洞。
一般在白盒测试、代码审计中去发现
-
file_get_contents():
将整个文件或一个URL指向的文件,以字符串的性质展示给用户 -
fsockopen():
用于打开一个网络连接,该函数会使用socket跟服务器建立TCP连接,进行传输原始数据 -
curl_exec():
对远程的URL发起请求访问,并将请求的结果返回至前端页面
##SSRF漏洞挖掘 SSRF漏洞特点:访问一个URL。如下图所示,一般通过构造URL来判断该网站是否存在SSRF
-
白盒测试:
寻找可能构成SSRF漏洞的危险函数 -
黑盒测试:
(1)观察攻击web 应用程序的集成平台(burpsuite)的网站请求消息报文中是否存在URL,并对该URL进行构造payload进行测试
(2)DNS外带(常用于测试没有回显的网站)
DNSlog平台 测试
1. 设置协议头的白名单或黑名单,过滤除了HTTP和HTTPS之外的所有协议头
2. 设置URL的白名单或黑名单(比如百度翻译:不允许访问DNSlog和bbc)
3. 设置访问IP的白名单或黑名单,过滤访问的IP(看需求)
##SSRF漏洞常见利用方法
####1. 伪协议,读取敏感的文件的信息
(1)file:///etc/passwd Linux用户基本配置信息
(2)file:///c:/windows/win.ini windows系统基本配置信息
(3)file:///etc/shadow Linux用户密码等敏感信息(一般需要root用户才能查看 web服务的一般权限是apache)
2.内网服务探测(dict伪协议)web服务
(1)dict://127.0.0.1:3360 (探测MySQL服务)
(2)dict://127.0.0.1:22 (探测SSH服务)
(3)dict://127.0.0.1:6379 (探测redis服务)
(4)dict://127.0.0.1:1433 (探测SQL server服务)
3.攻击内网服务(gopher伪协议)
gopher作用:发送TCP数据 默认端口70
所有的WEB服务中间件都支持gopher协议,gopher可以发送任何的TCP数据包
gopher常用于攻击redis服务(内存数据库——拿到该服务即是最高权限)
使用规范:gopher://ip/_+数据
HTTP协议与gopher协议的区别:
www.baidu.com
gopher://%0D%0AGET%20/%20HTTP/1.1%0D%0AHOST:www.baidu.com%0D%0A
利用gopher发起请求的一般步骤:
1.构造HTTP的请求消息
2.对请求消息进行URL编码
3.对编码后的%0a替换成%0D%0a
4.将替换后的数据再进行一次URL编码(双重URL编码)
5.拼接协议头
本文共计1567个文字,预计阅读时间需要7分钟。
SSRF漏洞解析及成因总结:
SSRF(Server-side Request Forgery,服务器端请求伪造)是一种攻击方式,攻击者通过服务器端应用程序,利用其向其他系统或服务发送恶意请求,以达到攻击目的。以下是对SSRF漏洞的简要解析及成因总结:
1. 原理及成因: - 原理:攻击者利用服务器端应用程序的漏洞,如文件上传、URL重定向、参数传递等,构造恶意请求,使服务器端代为发起请求,从而攻击其他系统或服务。 - 成因: - 缺乏输入验证:服务器端对用户输入未进行严格验证,导致攻击者可以构造恶意请求。 - 信任不安全的第三方服务:服务器端调用第三方服务时,未对其安全性进行充分验证。 - 使用不安全的API接口:服务器端使用的API接口存在漏洞,攻击者可以利用这些漏洞进行攻击。
2. 常见利用方法: - 文件上传漏洞:攻击者利用文件上传功能,上传恶意文件到服务器,进而获取服务器权限。 - URL重定向漏洞:攻击者构造恶意URL,使服务器端进行重定向,进而访问攻击者控制的网站。 - 参数传递漏洞:攻击者修改参数传递方式,使服务器端执行恶意操作。
3. 总结: - 知识来源:学习相关安全知识,了解SSRF漏洞的原理及成因。 - 避免非法用途:遵守法律法规,不利用SSRF漏洞进行非法攻击。
自述:由于篇幅限制,本文仅对SSRF漏洞进行简要解析及成因总结,具体内容请参考相关安全资料。
SSRF服务端请求伪造漏洞,原理及成因常见利用方法总结文中知识仅供学习参考,禁止非法用途。否则后果自负
SSRF漏洞整理
什么是SSRF?
SSRF(Sever-side Request Forge) 是 服务端请求伪造漏洞
SSRF主要是构造恶意载荷(payload)攻击脚本,并诱导服务器发起请求,让目标服务器执行非本意的操作
SSRF常被用于,探测攻击者无法访问到的网络区域,比如服务器所在的内网,或是受防火墙访问的主机。
当程序执行逻辑代码时,没有经过严格的过滤。比如没有限制可以构建恶意访问的敏感协议头或内网访问资源权限时。攻击者可以构造恶意语句,向服务端发送包含恶意URL链接的请求,此时借由服务端去访问构建的恶意URL,以成功获取目标服务端中受保护网络内的资源的一种安全漏洞。
1.SSRF是服务端请求伪造,SSRF是诱导服务器访问,欺骗的是服务端(服务器)
2.CSRF是跨站请求伪造,CSRF是通过诱导用户点击,欺骗的是客户端(浏览器)
假设是一台存在远程代码执行漏洞的内网机器,借助SSRF漏洞,可以绕过WAF、策略等限制,且可以直接获取目标的最高权限。哪怕是通过外网隔离的内网机器,借由SSRF也无法保证内网机器的绝对安全
可能造成的危害:
- 内网探测:对内网服务器办公机器进行端口扫描 资产扫描 漏洞扫描
- 窃取本地和内网敏感数据(访问和下载内网的敏感数据):利用file协议
- 攻击服务器本地或内网应用:利用发现的漏洞,可以进一步发起攻击利用
- 跳板攻击: 利用SSRF漏洞,对内或对外发起攻击,以隐藏自己的真实IP(肉鸡)
- 绕过安全防御: 比如防火墙 CDN
当危险函数(PHP)在攻击者层面是可控的,即可能存在SSRF漏洞。
一般在白盒测试、代码审计中去发现
-
file_get_contents():
将整个文件或一个URL指向的文件,以字符串的性质展示给用户 -
fsockopen():
用于打开一个网络连接,该函数会使用socket跟服务器建立TCP连接,进行传输原始数据 -
curl_exec():
对远程的URL发起请求访问,并将请求的结果返回至前端页面
##SSRF漏洞挖掘 SSRF漏洞特点:访问一个URL。如下图所示,一般通过构造URL来判断该网站是否存在SSRF
-
白盒测试:
寻找可能构成SSRF漏洞的危险函数 -
黑盒测试:
(1)观察攻击web 应用程序的集成平台(burpsuite)的网站请求消息报文中是否存在URL,并对该URL进行构造payload进行测试
(2)DNS外带(常用于测试没有回显的网站)
DNSlog平台 测试
1. 设置协议头的白名单或黑名单,过滤除了HTTP和HTTPS之外的所有协议头
2. 设置URL的白名单或黑名单(比如百度翻译:不允许访问DNSlog和bbc)
3. 设置访问IP的白名单或黑名单,过滤访问的IP(看需求)
##SSRF漏洞常见利用方法
####1. 伪协议,读取敏感的文件的信息
(1)file:///etc/passwd Linux用户基本配置信息
(2)file:///c:/windows/win.ini windows系统基本配置信息
(3)file:///etc/shadow Linux用户密码等敏感信息(一般需要root用户才能查看 web服务的一般权限是apache)
2.内网服务探测(dict伪协议)web服务
(1)dict://127.0.0.1:3360 (探测MySQL服务)
(2)dict://127.0.0.1:22 (探测SSH服务)
(3)dict://127.0.0.1:6379 (探测redis服务)
(4)dict://127.0.0.1:1433 (探测SQL server服务)
3.攻击内网服务(gopher伪协议)
gopher作用:发送TCP数据 默认端口70
所有的WEB服务中间件都支持gopher协议,gopher可以发送任何的TCP数据包
gopher常用于攻击redis服务(内存数据库——拿到该服务即是最高权限)
使用规范:gopher://ip/_+数据
HTTP协议与gopher协议的区别:
www.baidu.com
gopher://%0D%0AGET%20/%20HTTP/1.1%0D%0AHOST:www.baidu.com%0D%0A
利用gopher发起请求的一般步骤:
1.构造HTTP的请求消息
2.对请求消息进行URL编码
3.对编码后的%0a替换成%0D%0a
4.将替换后的数据再进行一次URL编码(双重URL编码)
5.拼接协议头

