转载备份
影子 DOM(Shadow DOM)
你的 docker stop,它优雅吗? - 无糖拿铁,谢谢
清理Docker的container,image与volume · 零壹軒·笔记
Create a PyPI Mirror Site with devpi-server – SRE
优雅的终止 docker 容器 | iTimothy
Odoo 14 开发者指南第二十一章 性能优化 | Alan Hou 的个人博客
Odoo 14 开发者指南第八章 高级服务端开发技巧 | Alan Hou 的个人博客
kafka 系列:设置日志数据保存过期时间(含某个 topic)、日志策略_NIO4444-CSDN 博客_kafka 配置数据过期时间
Chromium 历史版本离线安装包 - 下载方法
怎样将 props 传递给 {this.props.children} | WebFuse
HappyBaseDoc
用户指南 — HappyBase 1.2.0 文档
安装指南 — HappyBase 1.2.0 文档
API 参考 — HappyBase 1.2.0 文档
PostgreSQL 时间转换
JS 中创建给定长度的数组
GSAP 入门 - 学习中心 - 绿袜
操作系统复习 | Happy Coding
如何理解 ip 路由和操作 linux 的路由表 - CodeAntenna
Elasticsearch 7.11 tokenizer, analyzer and filter 以及 IK 分词配置同义词、远程拓展词库 – Brave new world
podman 容器内访问 host 主机的端口 - 知识库 - BSMI KB 基础标准矿产工业
吐血总结!100 道经典 Python 面试题集锦上(附答案)
中共党史简表(1919 年 - 1949 年)
Dockerfile 详解_万 wu 皆可爱的博客 - CSDN 博客_dockerfile
为你的 Python 应用选择一个最好的 Docker 映像 | 亚马逊 AWS 官方博客
Ubuntu Server 支持中文
docker push | Docker Documentation
docker 创建本地仓库详解 (push/pull)_乱红飞的博客 - CSDN 博客_docker push 本地仓库
基于 Ubuntu 20.04 安装 Kubernetes 1.18
PostgreSQL 集群篇——PostgreSQL 的配置文件解析_51CTO 博客_postGresql
【PostgreSQL】——主从流复制_Teingi 的博客 - CSDN 博客_postgresql 主从复制
PostgreSQL: Documentation: 14: 27.4. Hot Standby
postgresql 主从复制、主从切换_偷懒的小陈的博客 - CSDN 博客_postgresql 主从
Postgres 用户、角色与权限 :: 68hub — 技术博客
中国共产党第二十次全国代表大会在京开幕 一图速览二十大报告
配置 docker 通过代理服务器拉取镜像
IPVS no destination available - Kubernetes 实践指南
Python 风格规范 — Google 开源项目风格指南
互动测试!党的二十大报告 100 题
自定义 ESlint 规则
Java 读取 OpenSSL 生成的秘钥, 进行 RSA 加解密 | 数字魔法
CSS(一)chrome 浏览器表单自动填充默认样式 - autofil_半个 GIS 半个前端的博客 - CSDN 博客
Nginx 多级代理下的真实 IP 透传 - CodeAntenna
Jenkins 环境变量
人民币金额大写规范 - 内蒙古农业大学财务处
[转]nginx 开启 websocket - 浅忆博客
ceph 创建使用 rbd
《三》配置 ceph 存储池 pool - Buxl's blog
基于 K8S 搭建 Ceph 分部署存储 – 唐玥璨 | 博客
序言 · Kubernetes 中文指南——云原生应用架构实战手册
服务器配置 - Redis 安装配置 | 灰帽子 - 任令仓的技术博客
Ubuntu 配置 sudo 命令不需要输入密码_ubuntu sudo 免密_一路向前 - 执着的博客 - CSDN 博客
修改 Docker 数据目录位置,包含镜像位置 - 腾讯云开发者社区 - 腾讯云
微服务架构实践(API Gateway)
微服务网关:从对比到选型,由理论到实践 | Java 程序员进阶之路
聊聊微服务网关
微服务网关:从对比到选型,由理论到实践
odoo 实现表分区 partition
使用 keepalived 搭建高可用服务 - 简书
业务网关的落地实践_文化 & 方法_Qunar 技术沙龙_InfoQ 精选文章
部署 Kubernetes PostgreSQL 实例 | domac 的菜园子
一套包含完整前后端的系统如何在 K8S 中部署?_k8s 前端_木讷大叔爱运维的博客 - CSDN 博客
前端安全系列(二):如何防止 CSRF 攻击? - 美团技术团队
traefik 自定义中间件 | coolcao 的小站
CSRF 原理和实战利用 - FreeBuf 网络安全行业门户
安全运维 - 如何在 Kubernetes 中使用注释对 ingress-nginx 及后端应用进行安全加固配置实践_唯一极客知识分享的技术博客_51CTO 博客
Kubernetes 进阶使用之 Helm,Kustomize
各种加密算法比较
Docker 的三种网络代理配置 · 零壹軒 · 笔记
本文档使用 MrDoc 发布
-
+
首页
CSRF 原理和实战利用 - FreeBuf 网络安全行业门户
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.freebuf.com](https://www.freebuf.com/articles/web/247866.html) 1 CSRF 漏洞介绍 ----------- 说明:由于最近一个月出差比较忙,所以没有更新,给大家带来不便请谅解。 CSRF(Cross-Site Request Forgery, 跨站请求伪造),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF . 它是一种常见的 Web 攻击方式。是一种劫持用户在当前已登录的 Web 应用程序上执行非本意操作一种攻击. ``` 说的直白一点就是:别人盗用(劫持)你的身份去做坏事. (1)别人-->这里指的是攻击者 (2)你---->A站(web服务器)上注册的合法用户(客户端) (3)做坏事--->去请求合法站点A(比如web服务器)存在CSRF攻击的URL,实现类似发送恶意邮件/转账/创建账户/修改密码等"你不希望执行"操作. ``` ### 危害 以用户的名义发邮件 / 发消息 转换 / 购买商品等; 修改密码; 删除文章等 2 CSRF 漏洞的原理 ------------ ### CSRF 漏洞产生的原因 (1)http 协议使用 session 在服务端保存用户的个人信息, 客户端浏览器用 cookie 标识用户身份; (2)cookie 的认证只能确保是某个用户发送的请求, 但是不能保证这个请求是否是 "用户自愿的行为". (3) 这时, 用户登录了某个 web 站点, 同时点击了包含 CSRF 恶意代码的 URL, 就会触发 CSRF ### 漏洞利用的条件 (1) 用户必须登录 A 网站, 生成了 cookie (2) 登录的同时访问了恶意 URL(包含 CSRF 恶意代码的 URL). ### 原理图 ![](https://image.3001.net/images/20200825/1598344664.png!small) ### CSRF 和 XSS 的不同 (1)XSS 主要用户获取用户的 cookie 信息, 达到控制客户端的目的 XSS---->把你的腰牌 (用户身份象征也就是 cookie) 偷到手, 黑客自己去搞破坏. CSRF 主要是劫持用户身份, 让客户端做一些不愿意做的事. CSRF----> 拿刀劫持你,"借助你的身份" 来帮黑客做事. (2) 危害上来说, XSS 更大; (3) 从应用难度上来说 CSRF 需要满足登录某网站的状态, 同时访问了恶意的 URL, 应用条件比较苛刻. XSS 只要一次点击或者存储到服务器即可. 3 CSRF 之 GET 型代码分析 ------------------ 根据 CSRF 请求方式不同, 分为 GET 型和 POST 型. GET 型 CSRF 代码举例 ![](https://image.3001.net/images/20200825/1598349692.png!small) ![](https://image.3001.net/images/20200825/1598344695.png!small) 问题: (1)但是 URL 直接写用户名和密码的方式太过于明显, 我们可以通过访问页面的方式进行伪装; (2)或者通过 XSS 页面, 直接把这个恶意 URL 链接发给客户端, 在客户登录页面的同时访问这个恶意 URL, 也可以创建用户; (3)通过伪造页面诱导客户点击 ![](https://image.3001.net/images/20200825/1598344722.png!small) ![](https://image.3001.net/images/20200825/1598344736.png!small) 4 CSRF 之 POST 型代码分析 ------------------- ### 1.POST 型 CSRF 举例 (1)有人说, GET 方式容易出现 CSRF 攻击, 那用 post 是不是就可以万无一失呢? (2)当然不是, 因为 post 只是提交的方式改变了, 如果原始页面还是存在 CSRF 漏洞, 我们自己创建一个 POST 页面来模拟用户提交数据, 还是可以进行利用的 (3)post_csrf.php 用来模拟存在 csrf 漏洞的 web 页面, 代码如下: ![](https://image.3001.net/images/20200825/1598349715.png!small) (4)页面显示如下: ![](https://image.3001.net/images/20200825/1598344769.png!small) post 型需要黑客自己来构造表单提交的参数 为了不易发现, 提交表单的数据都直接隐藏 hidden; post.html 代码如下: ![](https://image.3001.net/images/20200825/1598349798.png!small) ![](https://image.3001.net/images/20200825/1598344789.png!small) ![](https://image.3001.net/images/20200825/1598344807.png!small) 5 DVWA 中 CSRF 利用实战 ------------------ ### 挖掘 CSRF 的方法: (1) 使用 burp 抓包后修改 Referer 字段再重新提交, 如果能请求就存在 CSRF 漏洞. (2) 其他 CSRF 工具, 比如 CSRFTester 就是通过抓取提交参数; 修改表单信息, 重新提交;-----> 伪造客户端请求 重新提交成功就存在 CSRF 漏洞. DVWA 中 low 级别 CSRF: 没有对输入做过滤, 而且也没有原密码认证 ![](https://image.3001.net/images/20200825/1598344842.png!small) ![](https://image.3001.net/images/20200825/1598344853.png!small) DVWA 中 medium 级别 CSRF : 对 Referer 进行了检查 ![](https://image.3001.net/images/20200825/1598344877.png!small) ![](https://image.3001.net/images/20200825/1598344933.png!small) DVWA 中 medium 级别 CSRF : 对 token 进行了检查 (1)说明: 这里做了 token 防御, token 会根据每次请求生成不同的随机值, 从一定程度防止 CSRF. (2)但是这里的 token 以 get 方式提交, 就不安全了, 可以让黑客轻易获取。 (3)所以一般网站会放到 cookie 中, 并且设置 cookie 为 http-only, 不能通过 JS 读取, 既能防止 XSS, 又能防止 CSRF. (4)说明:不过这里绕过 token 的时候还是有一个小的注意点 ---> 用 burp 抓取的第一个包要丢弃, 否则一旦被提交, 这个 token 也会失效. ![](https://image.3001.net/images/20200825/1598345018.png!small) ![](https://image.3001.net/images/20200825/1598345149.png!small) ![](https://image.3001.net/images/20200825/1598345169.png!small) ![](https://image.3001.net/images/20200825/1598345181.png!small) 6 Discuz 脱库 ----------- Discuz 安装:在 www 目录下创建 Discuz2.5 文件夹, 下载 Discuz2.5 软件并解压, 把加压后的文件放到该文件夹下. ![](https://image.3001.net/images/20200825/1598345268.png!small) 根据需求修改连接数据库的信息, 指定数据库 IP, 登录数据的用户名和密码. 我这里是本地安装, 用户名和密码都是 root, 所以不用修改. ![](https://image.3001.net/images/20200825/1598345279.png!small) ![](https://image.3001.net/images/20200825/1598345291.png!small) 在浏览器访问 URL, 并进行安装 ![](https://image.3001.net/images/20200825/1598345326.png!small) ![](https://image.3001.net/images/20200825/1598345307.png!small) ![](https://image.3001.net/images/20200825/1598345342.png!small) ![](https://image.3001.net/images/20200825/1598345356.png!small) ![](https://image.3001.net/images/20200825/1598345371.png!small) admin 登录后台, 获取正确备份的 URL ![](https://image.3001.net/images/20200825/1598345412.png!small) ![](https://image.3001.net/images/20200825/1598345489.png!small) ![](https://image.3001.net/images/20200825/1598345449.png!small) ![](https://image.3001.net/images/20200825/1598345508.png!small) 两个备份文件的 URL 格式如下: [http://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Q](http://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Q)[http://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=backup_200812_6lYm0Q](http://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=backup_200812_6lYm0Q) 为了实验更加明显, 我们进入对应的备份目录, 把之前的备份文件删除. 这是我的路径, 供大家参考 D:\phpStudy\PHPTutorial\WWW\Discuz2.5\upload\data\backup_200812_6lYm0Q ![](https://image.3001.net/images/20200825/1598345551.png!small) 注册一个普通用户, 发布一个帖子; 并在帖子链接中插入之前获取的备份 URL [http://192.168.10.1/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Q%26backupfilename%3Dbbb](http://192.168.10.1/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Q%26backupfilename%3Dbbb)(为了方便区分, 我们给它一个文件名) ![](https://image.3001.net/images/20200825/1598345577.png!small) ![](https://image.3001.net/images/20200825/1598345591.png!small) 结果: ![](https://image.3001.net/images/20200825/1598345619.png!small) 说明:这里用的是 Discuz2.5 版本,这个版本对备份做了优化,比如创建一个随机文件夹,多个请求 URL 等。有时候可能不成功,需要多测试几次——一定要注意随机文件夹会过几分钟就会改变。其实用 Discuz1.5 版本更容易成功,但是用的很少了。 8 CSRF 漏洞防御 ----------- 除了用户名和密码, 添加验证码进行保护; http 头中使用 referer 字段 http 头中使用 token 修改密码时, 需要原密码; 添加验证码字段 对客户来讲, 不要点击来历不明的链接或图片; 养成定时退出的好习惯; 安装安全防护软件等
幻翼
2023年9月19日 19:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码