一篇RPO漏洞挖掘文章翻译加深理解。
这是我第一次尝试翻译一篇漏洞挖掘文章,翻译它也是为了加深理解它。这是一篇很有意思的漏洞挖掘文章。
前几天在看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下执行

就翻译到这里吧。
关于rpo攻击css地址的payload哪里来的?参考:http://www.thespanner.co.uk/2014/03/21/rpo/
这个人是作者
RPO攻击真的是一种被大部分人忽略的攻击,个人觉得危害很大,其实大家可以举一反三,它不仅仅会影响相对路径css覆盖,甚至他也能导致相对路径js覆盖劫持。我准备下一篇文章翻译他们。敬请期待。
一篇RPO漏洞挖掘文章翻译加深理解。的更多相关文章
- ref:【干货分享】PHP漏洞挖掘——进阶篇
ref:http://blog.nsfocus.net/php-vulnerability-mining/ [干货分享]PHP漏洞挖掘——进阶篇 王陶然 从常见的PHP风险点告诉你如何进行PH ...
- ref:PHP反序列化漏洞成因及漏洞挖掘技巧与案例
ref:https://www.anquanke.com/post/id/84922 PHP反序列化漏洞成因及漏洞挖掘技巧与案例 一.序列化和反序列化 序列化和反序列化的目的是使得程序间传输对象会更加 ...
- 浅析通过"监控"来辅助进行漏洞挖掘
这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似TIPs或者文章出现,就写下此文. 本文作者:Auther : vulkey@MstLab(米斯特安全攻 ...
- D-Link系列路由器漏洞挖掘
参考 http://www.freebuf.com/articles/terminal/153176.html https://paper.seebug.org/429/ http://www.s3c ...
- D-Link系列路由器漏洞挖掘入门
D-Link系列路由器漏洞挖掘入门 前言 前几天去上海参加了geekpwn,看着大神们一个个破解成功各种硬件,我只能在下面喊 6666,特别羡慕那些大神们.所以回来就决定好好研究一下路由器,争取跟上大 ...
- (转) exp1-1:// 一次有趣的XSS漏洞挖掘分析(1)
from http://www.cnblogs.com/hookjoy/p/3503786.html 一次有趣的XSS漏洞挖掘分析(1) 最近认识了个新朋友,天天找我搞XSS.搞了三天,感觉这一套 ...
- Shodan在渗透测试及漏洞挖掘中的一些用法
渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易.而关于信息收集的文章网上也是有太多.今天我们来通过一些例子来讲解如何正确使用Shodan这一利器. 想要利用 ...
- (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)
干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...
- 【读书笔记】Android平台的漏洞挖掘和分析
最近比较关注移动端的安全,以后也打算向安卓平台的安全发展.这篇博文主要是记录一些研究Android安全的读书笔记. Fuzzing技术的核心是样本生成技术 测试Android平台的组件间通信功能使用的 ...
随机推荐
- 从零开发一款自己的小程序UI组件库(二)
写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(bu ...
- 使用CefSharp在.NET中嵌入Chromium
使用CefSharp可以在.NET轻松的嵌入Html,不用担心WPF与Winform 控件与它的兼容性问题,CefSharp大部分的代码是C#,它可以在VB或者其他.NET平台语言中来进行使用. 近几 ...
- 以股票案例入门基于SVM的机器学习
SVM是Support Vector Machine的缩写,中文叫支持向量机,通过它可以对样本数据进行分类.以股票为例,SVM能根据若干特征样本数据,把待预测的目标结果划分成“涨”和”跌”两种,从而实 ...
- 洛谷 P4124 [CQOI2016]手机号码
题意简述 求l~r之间不含前导零,至少有三个相邻的相同数字,不同时含有4和8的11位正整数的个数 题解思路 数位DP,注意在l,r位数不够时补至11位 代码 #include <cstdio&g ...
- 003——Netty之Buffer、Channel以及多路复用器Selector
Buffer 1.缓冲区类型 2.缓冲区定义 (1)Buffer是一个对象,其中包含写入与读出的数据.是新IO与原IO的重要区别.任何情况下访问NIO中的数据都需要通过缓存区进行操作. (2)Buff ...
- 白话--长短期记忆(LSTM)的几个步骤,附代码!
1. 什么是LSTM 在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义.我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考.我们的思想拥有持久性.LSTM就 ...
- Go_ go mod 命令解决墙的问题
简介 由于众所周知的原因,在下载一些库的时候会下载不了,比如 golang.org/x/... 相关的库.为此,网上出现了很多解决方案. 从 Go1.11 开始,Go 引入了 module,对包进行管 ...
- malloc和free
1.系统使用红黑树管理空闲堆空间,malloc是申请了堆一块内存的使用权,拿到了这个钥匙,然后红黑树该块的空闲标记被去除. 2.free后,红黑树重新标记该块内存为空闲,其他程序就可以申请到此块内存. ...
- js 设计模式&&query
1. 语法: try{ //需要执行的代码 }catch(e){ //错误处理 e程序遇到错误时的报错信息 } 2.惰性函数: 函数在第一次 ...
- SpringBoot 动态配置邮箱发件人
SpringBoot 动态配置邮箱发件人 现在的消息模块少不了邮件发送.短信发送和手机推送的功能.邮件发送的功能历史最为悠久,也算的上烂大街的功能.一般在配置文件中设置好邮箱地址.账号.密码和发件服务 ...