Web Hacking 101 中文版 十七、服务端请求伪造

十七、服务端请求伪造

作者:Peter Yaworski

译者:飞龙

协议:CC BY-NC-SA 4.0

描述

服务端请求伪造,或者 SSRF,是一种类型,它允许攻击者使用目标服务器来代表攻击者自己执行 HTTP 请求。这和 CSRF 类似,因为两个漏洞都执行了 HTTP 请求,而不被受害者察觉。在 SSRF 中,受害者是漏洞服务器,在 CSRF 中,它是用户的浏览器。

这里的潜力非常大,包括:

  • 信息暴露,其中我们欺骗服务器来暴露关于自身的信息,在示例 1 中使用 AWS EC2 元数据描述。

  • XSS,如果我们让服务器渲染远程 HTML 文件,其中带有 JavaScript。

示例

1. ESEA SSRF 和 AWS 元数据请求

难度:中

URL:https://play.esea.net/global/media_preview.php?url=

报告链接:http://buer.haus/2016/04/18/esea-server-side-request-forgery-and-querying-aws-meta-data/

报告日期:2016.4.18

奖金:$1000

描述:

电子运动娱乐联盟 (ESEA) 是一个电子运动视频竞技比赛的社区,由 ESEA 建立。最近他们启动了一个漏洞奖励计划,Brett Buerhaus 在上面发现了一个不错的 SSRF 漏洞。

使用 Google Dorking,Brett 搜索site:https://play.esea.net/ ext:php。这让 Google 在play.esea.net域中搜索 PHP 文件。查询结果包括https://play.esea.net/global/media_preview.php?url=

看看这个 URL,似乎 ESEA 从外部站点渲染内容。在寻找 SSRF 的时候,这是一个危险标志。像他描述的那样,Brett 尝试它自己的域名:https://play.esea.net/global/media_preview.php?url=http://ziot.org。但是没有作用,结果,ESEA 寻找图片文件,所以它尝试包含图片的载荷。首先使用 Google 作为域名,之后是它自己的,https://play.esea.net/global/media_preview.php?url=http://ziot.org/1.png

成功了。

现在,这里真实的漏洞是,欺骗服务器渲染其它内容,而不是预设的图片。在他的博文中,Brett 描述了通常的技巧,例如使用空字符(%00),额外的斜杠以及问号来绕过或欺骗后端。在它的例子中,它向 URL 添加了?https://play.esea.net/global/media_preview.php?url=http://ziot.org/?1.png

它所做的就是将前面的文件路径,1.png转换为参数,并且不是实际要渲染的 URL 的一部分。因此,ESEA 渲染了它的页面。换句话说,它绕过了第一个测试的额外检查。

现在,这里你可以尝试执行 XSS 载荷,像他描述的那样。只需创建一个带有 JavaScript 的简单 HTML 页面,让站点渲染它,就这么简单。但是它更进了一步。使用来自 Ben Sadeghipour 的输入(在我的 YouTUbe 频道和 Polyvore RCE 的 Hacking Pro Tips Interview #1 中提到过),它测试了 AWS EC2 实例元数据的查询。

EC2 是 Amazon 的弹性计算云。它们提供了查询自身的功能,通过它们的 IP,来拉取关于实例的元数据。权限很明显限制为实例自身,但是由于 Brett 能够控制服务器从哪里加载内容,它能够使其调用自身并拉取元数据。

EC2 的文档在这里:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2instance-metadata.html。这里是一些你可以抓取的敏感信息。

重要结论

Google Dorking 是一个不错的工具,它能在发现所有类型的可能利用时,节省你的时间。如果你正在寻找 SSRF 漏洞,要留意任何在远程内容中拉取的目标 URL。这里,它的标志是url=

其次,不要仅限于你的第一想法。Brett 完全能够报告 XSS 载荷,但是这不太深入。通过深入挖掘,它就能发现漏洞的真正价值。但是这样做的时候,要小心不要越界。

总结

服务端请求伪造在服务器可悲利用来代表攻击者执行请求时出现。但是,并不是所有请求最终都能利用。例如,由于站点允许你提供图片的 URL,但它会复制并在自己站点上使用(就像上面的 ESEA 示例),并不意味站点存在漏洞。发现它们只是第一步,随后你需要确认它们的潜能。对于 ESEA,虽然站点寻找图片文件,它并不验证收到的东西,并且可以用于渲染恶意 XSS,以及对自己的 EC2 元数据执行 HTTP 请求。

展开阅读全文

150讲轻松搞定Python网络爬虫

05-16
【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑
©️2020 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值