首页 > 其他分享 >全面解读SSRF

全面解读SSRF

时间:2023-08-27 10:11:54浏览次数:39  
标签:xip SSRF 10.0 URL gopher 解读 全面 解析

一、简介:

​ SSRF (Server-Side Request Forgery)服务器端请求伪造,是一种由攻击者构造,由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。

1.1、漏洞产生原理:

​ SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能没有对目标地址做过滤与限制。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等。

二、常见利用:

2.1、漏洞产生函数:

file_get_contents()、readfile()、fsockopen()、curl_exec()、fopen()、
2.1.1、file_get_contents()与readfile():

file_get_contents这一函数是把 传入的参数(变量)写入字符串,将文件的内容读入到一个字符串中,导致了任意文件读取,也就是信息泄露的一种。一般这种攻击也与目录遍历相结合。

<?php
$url = $_GET['url'];
echo file_get_contents($url);
?>
2.1.2、fsockopen():

​ fsockopen — 打开 Internet 或者 Unix 套接字连接。

​ fscokopen默认使用TCP进行连接hostname,也可以在hostname前加UDP://实现UDP连接.

fsockopen($hostname,$port,$errno,$errstr,$timeout)

​ 例子:

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>
2.1.3:curl_exec:

​ curl_exec — 执行 cURL 会话

<?php
// 创建新的 cURL 资源
$ch = curl_init();

// 设置 URL 和相应的选项

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取 URL 并把它传递给浏览器
curl_exec($ch);

// 关闭 cURL 资源,并且释放系统资源
curl_close($ch);
?>

2.2、漏洞利用危险协议:

file、gopher、dict、http
2.2.1、file 协议

​ 在有回显的情况下,利用 file 协议可以读取任意内容

image-20230826151947322

2.2.2、gopher 协议

​ gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。

​ gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。

​ gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell

gopher格式: 
    URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
		gopher://192.168.12.41:2333/_abcd
[ps: gopher协议在gopher-path的第一个字符会丢失,所以构建任意字符在第一位]

​ 示例:调用kali的nc接收来自gopher请求的abc

<?php
    $url = $_GET['url'];
    $curlobj = curl_init($url);
    echo curl_exec($curlobj);
?>

image-20230826154742309

image-20230826154821075

2.2.3、dict 协议

​ dict 协议是一个在线网络字典协议,这个协议是用来架设一个字典服务的。

​ dict协议可以获取本地数据库如redis服务配置信息

2.2.4、http 协议

​ 使用http协议扫描内网存货主机

image-20230826155005572

三、漏洞验证方式:

3.1.排除法:

​ 浏览器f12查看源代码看是否是在本地进行了请求

​ 比如:该资源地址类型为 http://www.xxx.com/a.php?image=URL,URL参数若是其他服务器地址就可能存在SSRF漏洞

3.2.dnslog等工具进行测试

​ 看是否被访问(可以在盲打后台,用例中将当前准备请求的url和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求)

3.3.抓包分析

​ 查看发送的请求是不是通过服务器发送的,如果不是客户端发出的请求,则有可能是存在漏洞。接着找存在HTTP服务的内网地址

  • 从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址
  • 通过二级域名暴力猜解工具模糊猜测内网地址
  • 通过file协议读取内网信息获取相关地址

3.4.直接返回的Banner、title、content等信息

3.5.布尔型SSRF

​ 通过判断两次不同请求结果的差异来判断是否存在SSRF,类似布尔型sql盲注方法。

四、SSRF漏洞点挖掘

4.1、 社交分享功能:

​ 获取超链接的标题等内容进行显示

4.2、 转码服务:

​ 通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

4.3、 在线翻译:

​ 给网址翻译对应网页的内容

4.4、 图片加载/下载:

​ 例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片

4.5、 图片/文章收藏功能:

​ 主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验

4.6、 云服务厂商:

​ 它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试

4.7、 网站采集,网站抓取的地方:

​ 一些网站会针对你输入的url进行一些信息采集工作

4.8、 数据库内置功能:

​ 数据库的比如mongodb的copyDatabase函数

4.9、 邮件系统:

​ 比如接收邮件服务器地址

4.10、 编码处理, 属性信息处理,文件处理:

​ 比如ffpmg,ImageMagick,docx,pdf,xml处理器等

4.11、URL关键字:

Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain

五、SSRF常见绕过:

5.1、@绕过:

5.1.1、URL完整格式:

<协议>://<用户名>:<密码>@<主机域名或者ip地址>:<端口号>/<路径>;<参数>?<查询>#<片段>
http://joe:[email protected]:80/main/index.html;type=a;color=b?name=bob&id=123#main

用户名和密码为了安全性通常不放在URL里;

5.1.2、绕过:

http://[email protected]  ------> http://10.10.10.10  请求是相同的
ip前面加上@后www.baidu.com被URL标准认定为账号密码格式

image-20230826161337822

5.2、编码绕过:

ip:
字符串:       10.0.0.3
二进制:       00001010 . 00000000 . 00000000 . 00000011
十六进制:     0A.00.00.03
整数:         167772163
字符串转整数:4位十进制点分字符串转换为24位二进制字符串,二进制字符串转换为十进制整数

5.3、短链接转换:

​ 将原链接转换为短链接,绕过过滤

image-20230826163042491

image-20230826163106640

5.4、"。"代替".":

	127。0。0。1 ----> 127.0.0.1

5.5、xip.io和xip.name绕过:

  • 泛域名解析,无需配置,将自定义的任何域名解析到指定的IP地址。假设你的IP地址是10.0.0.1,你只需使用前缀域名+IP地址+xip.io即可完成相应自定义域名解析。
10.0.0.1.xip.io # 解析到 10.0.0.1 
www.10.0.0.2.xip.io # www 子域解析到 10.0.0.2 
mysite.10.0.0.3.xip.io # mysite 子域解析到 10.0.0.3 
foo.bar.10.0.0.4.xip.io # foo.bar 子域解析到 10.0.0.4

xip.name 在使用上与xip.io一致

10.0.0.1.xip.name # 解析到 10.0.0.1 
www.10.0.0.2.xip.name # www 子域解析到 10.0.0.2 mysite.10.0.0.3.xip.name # mysite 子域解析到 10.0.0.3 foo.bar.10.0.0.4.xip.name # foo.bar 子域解析到 10.0.0.4

5.5、DNS重绑定:

在这里插入图片描述

​ 当我们输入URL地址时,服务器后端会首先在本地的DNS服务器里进行第一次DNS解析,如果没有该域名则在外网DNS服务器解析。

​ 服务器进行一个内网地址检验,如果第一次解析域名返回的IP为内网IP则判断不合法,当判断通过时再去解析一次输入的URL地址,这时第二次DNS解析。

​ 当攻击者将一个域名绑定了多个IP,且TTL为0(DNS解析记录缓存存活时间为0,无法将解析记录缓存再本地,每次解析域名都需要重新请求DNS服务器),服务器每次解析该域名都是从该域名的IP池里重新取,就存在第一次解析为外网IP第二次解析为内网IP的可能性。

六、SSRF常见防御措施:

6.1、禁用不需要的协议,

​ 只允许业务需要的协议请求,如果业务只需要进行URL跳转,只开放http和https协议,可以有效地防止攻击者调换协议进行如file://,fopher://,ftp://等协议进行访问内网资源

6.2、服务端认证交互

​ 禁止非正常用户访问服务;

6.3、过滤输入信息

​ 对用户输入的信息进行转义或者正则替换。

6.4、过滤返回信息

验证远程服务器对请求的响应是比较容易的方法,如果web应用是去获取某一种类型的文件。那么在把返* 回结果展示给用户之前先验证返回的信息是否符合标准。

6.5、统一错误信息

避免用户可以根据错误信息来判断远端服务器的端口状态。

6.6、禁止30x跳转

6.7、设置URL白名单或限制内网IP

参考资料:

SSRF漏洞(原理、挖掘点、漏洞利用、修复建议) - Saint_Michael - 博客园 (cnblogs.com)
从0到1完全掌握 SSRF - FreeBuf网络安全行业门户

标签:xip,SSRF,10.0,URL,gopher,解读,全面,解析
From: https://www.cnblogs.com/Zxixi3/p/17659900.html

相关文章

  • 论文解读(TAMEPT)《A Two-Stage Framework with Self-Supervised Distillation For Cros
     论文信息论文标题:ATwo-StageFrameworkwithSelf-SupervisedDistillationForCross-DomainTextClassification论文作者:YunlongFeng,BohanLi,LiboQin,XiaoXu,WanxiangChe论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1介绍 动......
  • OpenJDK17.0.8字节码解读样例
    因为JDK17将会成为未来5至10年里Java应用的主流JDK,刚好闲着没事,就想着将《深入理解Java虚拟机》一书中关于字节码的解读样例在OpenJDK17.0.8上看看变化有多大!先把实验环境说明一下:OS:Windows10专业版 22H2JDK:openjdkversion"17.0.8"2023-07-18LTS源......
  • AI是什么软件?带你全面了解人工智能
    随着科技的快速发展,人工智能(AI)已经逐渐成为当今社会的热门话题。许多人都在谈论AI,但是究竟什么是AI呢?它又是由哪些软件构成的呢?本文将为你详细解答这些问题,带你全面了解人工智能。一、人工智能是什么?人工智能是一种模拟人类智能的计算机技术。它使机器能够像人一样学习、推理、......
  • Java8 新特性全面介绍,强烈建议收藏
    阅读大约10分钟,实用性非常高,建议收藏PC阅读移步文末前言Java8已经公布有一段时间了,种种迹象表明Java8是一个有重大改变的发行版。在JavaCodeGeeks上已经有很多介绍Java8新特性的文章,例如PlayingwithJava8–LambdasandConcurrency、Java8DateTimeAPITu......
  • 【论文解读】基于图的自监督学习联合嵌入预测架构
    一、简要介绍 本文演示了一种学习高度语义的图像表示的方法,而不依赖于手工制作的数据增强。论文介绍了基于图像的联合嵌入预测架构(I-JEPA),这是一种用于从图像中进行自监督学习的非生成性方法。I-JEPA背后的idea很简单:从单个上下文块中,预测同一图像中不同目标块的表示。指导I-JEP......
  • 改革企业治理结构,建立国有企业全面预算管理制度
    随着我国市场经济的推广,国有企业进入到改革发展的必经之路上,企业应当结合自身实际情况加强成本管控,提高管理效率,为企业的发展提供有力保障。近年来,全面预算管理的理念在国有企业实施范围内不断扩大,加强全面预算管理体系的建设是完善企业治理结构的有效手段。全面预算管理作为一种管......
  • 论文解读 | ScanNet:室内场景的丰富注释3D重建
    原创|文BFT机器人大型的、有标记的数据集的可用性是为了利用做有监督的深度学习方法的一个关键要求。但是在RGB-D场景理解的背景下,可用的数据非常少,通常是当前的数据集覆盖了一小范围的场景视图,并且具有有限的语义注释。为了解决这个问题,本文介绍了一个ScanNet的大规模室内场景......
  • Forrester首次面向中国的开源报告:阿里云在云原生领域开源布局最全面
    Forrester于近期发布了《NavigateTheCloud-NativeEcosystemInChina,2023》,报告概述了中国云原生领域的开源项目对构建云原生生态的促进作用,这些开源项目正深刻影响着企业的技术决策者以何种策略拥抱云原生这一现代IT基础设施的核心。报告表明,中国超过80%的云决策者表......
  • @Value注解读取yml中的map/list配置
    读取map1、配置文件写法common:map:'{"username":"lisi","password":"123456"}'2、java代码的写法@Value("#{${common.map}}")privateMap<String,Object>map;读取list1、配置文件写法common:list:1,2,32、ja......
  • 论文解读(MetaAdapt)《MetaAdapt: Domain Adaptive Few-Shot Misinformation Detection
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:MetaAdapt:DomainAdaptiveFew-ShotMisinformationDetectionvia MetaLearning论文作者:ZhenruiYue、HuiminZeng、YangZhang、LanyuShang、DongWang论文来源:2023ACL论文地址:download 论文代码:download......