[10期]浅谈SSRF安全漏洞
引子:SSRF 服务端请求伪造攻击
很多web应用都提供从其他服务器上获取数据的功能。使用用户指定的URL,web应用可以从其他服务器获取图片,下载文件,读取文件内容等。
这个功能被恶意使用的话,可以利用存在此缺陷功能的web应用作为代理(读取其他服务器攻击载荷),攻击远程和本地服务器。这种形式的攻击叫SSRF。 以上攻击载荷都是客户端编写URL让服务端完成加载,最后由服务端执行与发起。
剧透,本文所有知识,方式均借鉴于www.wooyun.org 该网站未被弹劾时,是国内白帽子的学习天堂,有点国内哈佛的环境,无所不言,无所不思。乌云没了,就感觉你最重要的人走了的这种心痛。良药苦口,以后遇到说你的东西存在严重问题时,你可以不理睬,但一定要克制住自己,不要利用关系痛下杀手,排挤别人出局。 还是附带一个参考源吧:https://www.shentoushi.top/knowledge
分析知识源:得到各程序的代码功能性知识,利用功能性做验证,检查是否存在缺陷。要掌握这种挖洞能力需要具备以下几点:
1.需要阅读源代码(从软件工程的角度)学习软件功能而不是从每一句话,每一个函数,从一整块功能性的代码入手。
2.需要引子,功能性代码别人是如果发现与测试出来的?有一个例子先行,然后模仿它,举一反三(你改了这里做测试,那我明白了,改一下其他地方做做实验)。
师傅不教你踩离合器挂上一档,或者你没看过教学视频,你是不会举一反三挂上二三四五档和倒挡的,就是这个学习心理。
防御也是一样:攻击步骤你都不清楚,你知道在哪里做防御吗?下载安全狗,搞好防火墙。最后发现一样被莫名其妙的攻击了。
学语言是为了看懂功能性的代码,知道功能性是为了发现漏洞,学安全是为了得到实际的经验然后开窍自己FQ上YouTube找到一手教学信息。
因为,国内大部分的开源教学都是从国外网站,YouTube搬运过来的。有的甚至拿这个信息差割韭菜收你的费用。
可以利用该漏洞实现的攻击方式:
信息收集:对外网、服务器所在内网、本地进行端口扫描,获取一些服务的bannar信息。对内网web应用进行指纹识别,访问默认文件实现。
在下图方式入手: 可以发现其实就是在GET方式或者POST方式上面尝试提交URL
这里可以用python写一个脚本,判断端口返回的信息是否为空,来完成信息收集 【本地进行端口扫描】
提交得到的URL看是否可以识别,如果可以就说明用的tomcat
执行指令:主要是使用GET参数(比如struts2,sqli等)
执行指令(溢出):攻击运行在内网或本地的应用程序(比如溢出)
信息收集:利用file协议读取本地文件等
以下业务场景容易出现这种漏洞:
1.应用从用户指定的URL获取图片。然后把它用一个随机文件名保存在硬盘上,并展示给用户
2.应用获取用户指定URL的数据(文件或HTML)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据
3.应用根据用户提供的URL,抓取用户的web站点,并自动生成移动wap站
4.应用提供测速功能,根据用户提供的URL,访问目标站点,以获取其在对应经纬度的访问速度
1)分享:通过URL地址分享网页内容
2)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3)在线翻译:通过URL地址翻译对应文本的内容
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的API实现以及其他调用URL的功能
7)URL关键词寻找 在对功能上存在SSRF漏洞中URL地址特征的观察,大致有以下关键字:
share wap url image link src source target u 3g display sourceURL domain
SSRF漏洞验证 以下在客户端都看见了发起请求了,那就不是服务端发起的,所以不是SSRF漏洞
现在大多数修复SSRF的方法基本都是区分内外网来做限制(暂不考虑利用此问题来发起请求,攻击其他网站,从而隐蔽攻击者IP,防御此问题就要做请求的地址白名单)
实例验证
防御:
绕过
[10期]浅谈SSRF安全漏洞的更多相关文章
- 通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞
前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞. Java序列化,简而言之就是把java对象转化为字节序列的过程.而反序列话则是再把字节序列恢复为ja ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- 浅谈SSRF漏洞
SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF是要目标网站 ...
- 浅谈SSRF
前言 最近主要是在思考考研的事.还是没想好-- 这几天的话写了一篇简单代审投稿了星盟,看了会SSRF.今天简单写下SSRF. 本文所有思路均来自互联网,并没有新想法.仅仅只是做个记录. 本文可能会有大 ...
- 浅谈PHP反序列化漏洞原理
序列化与反序列化 序列化用途:方便于对象在网络中的传输和存储 0x01 php反序列化漏洞 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 常见的序列化格式: ...
- 10分钟浅谈CSRF突破原理,Web安全的第一防线!
CSRF攻击即跨站请求伪造(跨站点请求伪造),是一种对网站的恶意利用,听起来似乎与XSS跨站脚本攻击有点相似,但实际上彼此相差很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户 ...
- 浅谈python反序列化漏洞
最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.co ...
- 浅谈SQL注入漏洞以及防范策略
--HeShiwei 2014-5-15 什么是SQL注入 SQL注入,指的是用户通过向登录框输入恶意字符,利用代码的字符串拼接漏洞进行网站注入攻击,最终导致整个网站用户表信息泄露的攻击方式.黑客就是 ...
- 浅谈php反序列化漏洞
关于php的反序列化漏洞要先说到序列化和反序列化的两个函数,即: serialize() 和unserialize(). 简单的理解: 序列化就是将一个对象变成字符串 反序列化是将字符串恢复成对象 这 ...
随机推荐
- Linux学习--第四天--find、locate、帮助命令、grep、who、w、压缩命令、网络命令、mount
find 命令格式:find 搜索范围 匹配条件find 搜索范围 匹配条件(搜索范围一定要填写,不写默认为当前文件夹,不包括子文件夹.) find /etc -name init #搜索文件和文件夹 ...
- 判断用户输入YES或NO
#!bin/bash#作者:liusingbon#功能:判断用户输入的是 Yes 或 NOread -p "Are you sure?[y/n]:" surecase $sure ...
- GUI学习之三十一—QLabel学习总结
前面所有的控件都是归于输入控件的,下面我们要总结下展示控件的用法.首先要将的就是最常用的QLabel. 一.描述 标签控件(QLabel)提供了文本或图像显示的功能,可以用来显示 普通文本 数字 富 ...
- DDD领域驱动设计初探(七):Web层的搭建
前言:好久没更新博客了,每天被该死的业务缠身,今天正好一个模块完成了,继续来完善我们的代码.之前的六篇完成了领域层.应用层.以及基础结构层的部分代码,这篇打算搭建下UI层的代码. DDD领域驱动设计初 ...
- .NET界面控件DevExpress v19.1.3重磅来袭
DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...
- namenode和datanode的高可用性和故障处理
一.Hadoop单点故障问题如何解决 Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的Nam ...
- JS中的流程控制语句
什么叫做语句? 语句:可以理解为语言中一句一句完整的话,程序是由一条条语句构成的,语句是按照自上往下的顺序执行的. 在JavaScript可以使用{ }来为语句进行分组.同一{ }中的语句称为一组 ...
- C# Asp.NET实现上传大文件(断点续传)
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- (容量超大)or(容量及价值)超大背包问题 ( 折半枚举 || 改变 dp 意义 )
题意 : 以下两个问题的物品都只能取有且只有一次 ① 给你 N 个物品,所有物品的价值总和不会超过 5000, 单个物品的价格就可达 10^10 ,背包容量为 B ② 给你 N (N ≤ 40 ) 个 ...
- tapmode="hover"属性
.hover{ opacity: .; } <span tapmode="hover" onclick="fnOpen()">open</sp ...