引子: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安全漏洞的更多相关文章

  1. 通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

    前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞. Java序列化,简而言之就是把java对象转化为字节序列的过程.而反序列话则是再把字节序列恢复为ja ...

  2. 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变

    在net中json序列化与反序列化   准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...

  3. 浅谈SSRF漏洞

    SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF是要目标网站 ...

  4. 浅谈SSRF

    前言 最近主要是在思考考研的事.还是没想好-- 这几天的话写了一篇简单代审投稿了星盟,看了会SSRF.今天简单写下SSRF. 本文所有思路均来自互联网,并没有新想法.仅仅只是做个记录. 本文可能会有大 ...

  5. 浅谈PHP反序列化漏洞原理

    序列化与反序列化 序列化用途:方便于对象在网络中的传输和存储 0x01 php反序列化漏洞 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 常见的序列化格式: ...

  6. 10分钟浅谈CSRF突破原理,Web安全的第一防线!

    CSRF攻击即跨站请求伪造(跨站点请求伪造),是一种对网站的恶意利用,听起来似乎与XSS跨站脚本攻击有点相似,但实际上彼此相差很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户 ...

  7. 浅谈python反序列化漏洞

    最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.co ...

  8. 浅谈SQL注入漏洞以及防范策略

    --HeShiwei 2014-5-15 什么是SQL注入 SQL注入,指的是用户通过向登录框输入恶意字符,利用代码的字符串拼接漏洞进行网站注入攻击,最终导致整个网站用户表信息泄露的攻击方式.黑客就是 ...

  9. 浅谈php反序列化漏洞

    关于php的反序列化漏洞要先说到序列化和反序列化的两个函数,即: serialize() 和unserialize(). 简单的理解: 序列化就是将一个对象变成字符串 反序列化是将字符串恢复成对象 这 ...

随机推荐

  1. redis防止抢购商品超卖

    前言: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用. 本篇博文用来测试下使用redis来防止抢购商品超卖问题. 内容: 使用redis的list进行测试 思路是设置一个 ...

  2. 几个有关FPGA的概念

    <数字设计——原理和实践>(John F.Wakerly)的书 FPGA同步时钟设计 简单说就是 一个系统中(或系统中的一部分)都采用同一个时钟触发.系统中的(D)触发器全部都连接到一个时 ...

  3. Python学习笔记-列表的增删改查

  4. 013-linux系统管理——系统资源查看

    linux系统管理——系统资源查看 ############# vmstat 命令 监控系统资源 ############# vmstat [刷新时间 刷新次数] [root@zabbix ~]# v ...

  5. dying relu 和weight decay

    weight decay就是在原有loss后面,再加一个关于权重的正则化,类似与L2 正则,让权重变得稀疏: 参考:https://www.zhihu.com/question/24529483 dy ...

  6. larval 使用redis做缓存

    1.存redis 使用setex命令可以同时设置数据和保存时间 $data = [ 'name'=>zhangsan, 'age' => 28, 'sex' => 1 ]; Redi ...

  7. DevOps书单:调研了101名专家,推荐这39本必读书籍

    任何一个领域都遵循从新人到熟手,从熟手到专家的路径.在成长过程中,DevOps人经常会陷入没人带,没人管,找不到职业方向的迷茫. DevOps是在商业演进与企业协作的进化过程中诞生的一个全新职业,被很 ...

  8. 关于js节流函数throttle和防抖动debounce

    废话不多说,直奔主题. 什么是throttle和debounce? 这两个方法的主要目的多是用于性能优化.最常见的应用尝尽就是在通过监听resize.scroll.mouseover等事件时候的性能消 ...

  9. redis面试题集錦

    1为什么Redis需要把所有数据放到内存中? Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘.所以Redis具有快速和数据持久化的特性.如果不将数据放到内存中,磁盘 ...

  10. LOJ#3097 [SNOI2019]通信 最小费用最大流+cdq分治/主席树/分块优化建图

    瞎扯 我们网络流模拟赛(其实是数据结构模拟赛)的T2. 考场上写主席树写自闭了,直接交了\(80pts\)的暴力,考完出来突然发现: woc这个题一个cdq几行就搞定了! 题意简述 有\(n\)个哨站 ...