当前位置: 首页 > news >正文

【web安全】ssrf漏洞的原理与使用

前言

菜某对ssrf漏洞的总结。

ssrf的作用

主要作用:访问外界无法访问的内网进行信息收集。

1.进行端口扫描,资源访问

2.指纹信息识别,访问相应的默认文件

3.利用漏洞或者和payload进一步运行其他程序

4.get类型漏洞利用,传参数实现攻击

5.post型漏洞利用,用gopher协议进行参数构造

6.拒绝服务攻击(访问大文件占用资源)

ssrf的原理

当网站有一个功能,能去访问网络上的其他资源时,我们可以更改他要访问的url地址,使其指向我们想让他访问的位置。

服务器处于一个内外网交界的位置,我们无法访问他们的内网,所以我们就可以利用ssrf漏洞,以他作为跳板去访问正常访问不到的内网的内容。

ssrf常出现的场景

任何服务器访问其他资源的地方,都可能有。

常常出现在:

1.通过URL地址进行页面分享

2.转码服务,通过URL把原文件地址的页面进行页面转换格式

3.在线翻译,一键翻译相应URL地址中的英文

4.图片加载与下载,通过URL进行图片获取的。

5.未公开的api实现以及其他调用URL的功能

6.设备后台管理进行存活测试,(测试开启状态时会访问)

7.远程图片访问或者加载

8.远程头像加载

10.打包附件或者内容编辑导出

ssrf漏洞的判定

1.回显变化,根据页面的回显情况进行判断

2.让他访问自己的服务器,然后看日志他是否访问过

3.从时间判断,有些外国网站明显访问速度应该比国内网站慢,有过有这种情况则存在

4.    DNS 请求检测:自己搭建 DNS 服务器,或者利用网上的 DNSLog

服务(比如http://www.dnslog.cn/),生成一个域名(l08bgh.dnslog.cn)用于伪造请求,看漏洞服务器是否发起DNS 解析请求,若成功访问在 DNSLog.cn 上就会有解析日志。

ssrf常用的攻击协议

http(s),file,dict,gopher

--http协议:最常用的ssrf漏洞利用协议

  例:http://xxx.com?url=http://1.1.1.1/xxx

--file协议:可以读取服务器文件

  例:http://xxx.com?url=file://1.1.1.1/xxx

--dict协议:可以利用此协议进行端口开放测试

  例:http://xxx.com?url=dict://1.1.1.1/xxx

--gopher协议:支持发送get,post请求,可进行复杂漏洞利用。

但是支持的范围比较小

不同语言对于协议的支持情况

ssrf常用的绕过方法

开发人员常见的过滤手法:对域名和IP进行白名单或者黑名单的限制。

绕过方法

@字符:xxx.com@10.10.10.10访问10.10.10.10(对抗白名单)

后加xip.io:10.10.10.10.xip.io被解析成10.10.10.10

数字IP地址:127.0.0.1的十进制:2130706433

进制转换:127.0.0.1的八进制:0177.0.0.1。十六进制:0x7f.0.0.1

封闭式的字母数字:有些手机上打出来开的数字外面套着圈的也能被识别

DNS重绑定:使用此方法可以实现域名解析为内网IP

协议限制绕过:禁用了部分协议之后可以换用其他协议。

[::]绕过localhost:http://[::]:80/

ssrf案例

均在本地搭建简易漏洞

案例一

端口扫描敏感信息

因为mysql的端口在3306,当我们访问3306时得到了mysql的版本

案例2

利用get形式的其他漏洞

我同时装了xss-labs靶场,用这个端口可以去请求xss的第一关实现xss利用。

当然这个是对本机进行的,也可以对内网的其他机器进行。

(实战中通常是用内网中一些get型的软件漏洞进行攻击)

输入的内容

http://127.0.0.1/xss/level1.php?name=test<script>alert(1)</script>

案例三

查看文件

在对应的目录下,还有一个lookme的文件,可以用这个读取。

这里是看的本机的,如果把IP换成内网的就可以访问内网的了。

相关文章:

  • mysql pxc高可用离线部署(三)
  • [跑代码-遇到问题-报错3]BK-SDM. KeyError: ‘up_blocks.0‘
  • 【ArcGIS Pro】探索性插值无法覆盖所需shp范围
  • 使用极限网关助力 ES 集群无缝升级、迁移上/下云
  • SQL-分页查询offset的用法
  • AWS攻略——Peering连接VPC
  • 机器连接和工业边缘计算
  • JavaScript 基础
  • 学习Pinia
  • dockerdesktop推送镜像到dockerhub
  • pip命令的使用-超详细使用方法
  • 第四期丨酷雷曼无人机技能培训
  • 阿里云环境下的配置DNS和SLB的几种实践示例
  • 3.2.1.0 发布!时间转换函数+BI 集成+视图正式上线!
  • 测试---UI自动化测试介绍
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【知识碎片】第三方登录弹窗效果
  • 2017 年终总结 —— 在路上
  • Create React App 使用
  • JavaScript DOM 10 - 滚动
  • Java反射-动态类加载和重新加载
  • Rancher-k8s加速安装文档
  • VUE es6技巧写法(持续更新中~~~)
  • Vue UI框架库开发介绍
  • Vultr 教程目录
  • 软件开发学习的5大技巧,你知道吗?
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • # include “ “ 和 # include < >两者的区别
  • #php的pecl工具#
  • #传输# #传输数据判断#
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (C++17) optional的使用
  • (C语言)共用体union的用法举例
  • (二)Linux——Linux常用指令
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)memcache、redis缓存
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET 使用 XPath 来读写 XML 文件
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /etc/shadow字段详解
  • [7] CUDA之常量内存与纹理内存
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C/C++随笔] char与unsigned char区别
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [CentOs7]iptables防火墙安装与设置
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [fsevents@^2.1.2] optional install error: Package require os(darwin) not compatible with your platfo
  • [Godot] 3D拾取
  • [Hive] CTE 通用表达式 WITH关键字
  • [iphone-cocos2d]关于Loading的若干处理和讨论
  • [leetcode] 66. 加一
  • [luogu P1527]矩阵乘法(矩形k小)