热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【技术分享】针对HTTP的隐藏攻击面分析(上)

译者:WisFree预估稿费:200RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿为了增强用户体验度,现代Web网站架构中都包含了各种各样的“隐藏系统”,这些系统不仅可以给

http://p3.qhimg.com/t018dd85ce02e8b5098.png

译者:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


为了增强用户体验度,现代Web网站架构中都包含了各种各样的“隐藏系统”,这些系统不仅可以给用户提供各种额外的服务,而且还可以帮助管理员提取网站各方面的分析数据。但是,这些隐藏系统同样也是近些年里经常被人们忽略的隐形攻击面。


写在前面的话

在本系列文章中,我将会给大家演示如何使用恶意请求和消息头来让这些隐藏系统“现形”,并实现对目标网络的入侵。除此之外,我还专门开发了一个小型Bash脚本来自动化实现本文所介绍的各项技术。值得一提的是,本文所介绍的技术让我彻底渗透进了美国国防部的网络系统,然后拿到了超过三万美刀的漏洞奖金,而且在这个过程中我还意外地发现了我所使用的ISP服务器的安全问题。

在本文的分析过程中,我还会给大家介绍其中几个我所发现的隐藏系统。我会披露欧洲最大网络服务提供商秘密进行的请求监听行为以及哥伦比亚网络服务提供商的可疑之处(混乱的Tor后端),而且还会给大家描述一个包含漏洞的系统,这个系统允许我将反射型跨站脚本漏洞(Reflected XSS)提升为SSRF(服务器端请求伪造)。在这篇文章中,你还会了解到如何通过漏洞链以及缓存机制来利用Blind SSRF漏洞,并最终这些系统拉到“聚光灯”之下。除此之外,我还发布了一款名叫Collaborator EverywhereGitHub主页的开源BurpSuite扩展(可通过注入Payload来让后端系统pingback),感兴趣的用户可以关注一下。

注:本系列文章的原版论文可以点击这里获取,大概在今年的九月份我们会放出在2017年BlackHat黑客大会的演讲视频,敬请期待。


一、介绍

无论是ShellShock、StageFright或是ImageTragick,一般在一个被忽略的攻击面中所发现的严重漏洞都有其相似的特性或问题,因为这些不够明显的攻击面都会被安全测试人员所忽略。在该系列文章中,我将会通过反向代理、负载均衡器以及后端分析系统来披露那些多年以来都被人们过分忽略的攻击面。除此之外,我将会给大家介绍一种非常简单且有效的方法来对这类系统进行安全审计,并给大家展示我所发现的各种严重漏洞。

我还专门开发了两款工具。其中一款名叫Collaborator Everywhere,这是一款BurpSuite扩展,它可以通过在Web流量中自动注入一些无害的Payload来揭露那些隐藏的后端系统,你可以通过BApp商店或直接访问GitHub主页来获取该工具。另一个工具名叫Rendering Engine Hackability Probe,这是一个Web页面,它可以分析已连接客户端的攻击面。你可以访问该项目的GitHub主页获取源码或访问Portswigger站点直接使用该工具。


二、方法学

1.监听

这一系列研究方法主要针对的是那些被设计成不可见的系统。因此,我们不能依赖于分析响应内容来识别这些系统中的安全漏洞。相反,我们需要通过向这些系统发送专门设计的Payload来让这些系统与我们通信,然后从DNS查询结果和HTTP请求中来了解更多的信息。本系列文章中的所有发现都起始于一次Pingback,如果没有这一次Pingback,我根本无法发现这些隐藏系统,更别说找出其中的安全漏洞了。我用Burp Collaborator记录下了这些请求,但是你也可以搭建你自己的DNS记录服务器,或使用Canarytokens来进行简单的探测。

2.研究过程

在刚开始的时候,我使用了一个简单的Burp匹配/替换规则向我所有的浏览器流量中注入了一个硬编码的Pingback Payload。但是这种方法垮掉了,因为Payload引发了大量的Pingback,所以我很难去识别Payload所触发的每一个单独Pingback。而且我还发现,某些Payload在触发Pingback时会有一定的延迟,有的是几分钟或几个小时,有些甚至要等上一天。

为了更有效地去触发并筛选Pingback,我编写了Collaborator Everywhere,这个简单的Burp扩展可以向所有的代理流量中注入包含唯一标识符的Payload,并根据攻击类型自动对Pingback进行分类。比如说,大家可以从下面的Collaborator Everywhere截图中看到,Netflix在我访问了它们网站的四个小时之后,Netflix访问了Referer头中的URL地址,其中的访问终端使用x86 CPU的iPhone伪造的。

http://p0.qhimg.com/t0109780ac17de5368f.png

3.详细分析

对于有针对性的人工安全审计来说,Collaborator Everywhere是一款非常高效的工具,本系列文章中几乎一半的安全漏洞都是通过它来发现的。但是在研究过程中我发现,某台雅虎服务器中的一个特定漏洞只有百分之三十的几率被扫描到,而导致这一情况的根本原因是雅虎使用了DNS轮训调度机制来进行负载均衡,并通过三台不同的前端服务器来处理入境请求,而这三台服务器中只有一台存在漏洞。 为了确保没有任何一台包含漏洞的服务器能够逃避检测,我们需要系统地去识别并针对每一个目标基础设施精确发送Payload。

http://p3.qhimg.com/t017b12ef3b84e49e81.png

为了实现这个目标,我一开始使用的是Burp Collaborator客户端以及破解版的Masscan,但是后来我又用ZMap/ZGrab替换掉了Masscan,因为ZGrab支持HTTP/1.1和HTTPS。为了识别目标的Pingback,我在每一个Payload中添加了目标主机名,所以example.com中的漏洞将会产生一次指向example.com.collaboratorid.burpcollaborator.net的DNS查询请求。目标域名和IP地址需要手动从合法可测试的域名列表中获取,然后映射到Rapid7的DNS数据库。这种方法可以识别出数百万个IP地址,其中大约有五万多个IP会监听端口80/443。我一开始还尝试使用了反向DNS记录,但是这样只能发现一大堆伪装成Google基础设施的服务器,而且这些服务器似乎也不太愿意接受他人的安全审计。

如果我们的Payload无法触发存在漏洞的代码路径,那么我们向再多的服务器发送Payload也没有什么X用。为了使Payload的覆盖率最大化,我在每一个IP中最多使用了五个主机名,并且还使用了HTTP和HTTPS。除此之外,我还使用了X-Forwarded-Proto: HTTPS和Max-Forwards来尝试触发边缘情况,并发送了Cache-Control: no-transform头来阻止服务器中间件破坏我的Payload。


三、请求误传

反向代理会将中继请求委托给相应的内部服务器,这些服务器一般都出于特权网络的位置,它们可以直接获取到互联网发送过来的请求,而且还拥有公司DMZ的访问权。如果有一个合适的Payload,那么我们就可以控制反向代理让它将这些请求发送到攻击者指定的目的地址(请求误传)。这样一来,我们就可以让这些服务器组成一个网关,并可以不受限制地访问目标组织的内部网络了(一种功能非常强大的服务器端请求伪造SSRF的变种版本)。下面给出的是这种攻击技术的简单过程图:

http://p8.qhimg.com/t01d29097bc9c44f38c.png

需要注意的是,这种攻击技术中一般需要使用到畸形请求,而这些请求不仅有可能导致类似ZAP这样的工具无法正常工作,而且还有可能无意中影响到你公司或互联网服务提供商的中间网关。所以就工具而言,我建议大家使用原版BurpSuite、mitmproxy和Ncat/OpenSSL。


总结

在本系列文章的上集,我们对现代Web应用架构中的隐藏系统以及隐藏服务进行了简单描述,并且介绍了本系列文章中所要使用的工具以及技术,在接下来的中集和下集中,我们将用实际的例子来给大家进行详细的介绍,感兴趣的同学请关注安全客的最新更新。


推荐阅读
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 简述在某个项目中需要分析PHP代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑ÿ ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
海容天色2602905655
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有