此前,我为大家介绍过SSRF攻击、XSS攻击以及SQL注入攻击的原理及防范手段,本篇文章我将为大家介绍一下CSRF攻击-跨站请求伪造。那么CSRF攻击是什么防范手段有哪些具体内容请看下文。
CSRF攻击是什么
CSRF,全拼为Cross-site request forgery,也被称为one-click attack或者session
riding,中文名称叫跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误认为是用户的真实操作而去执行命令。常用于盗用账号、转账、发送虚假消息等。
攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。
CSRF攻击防范手段有哪些
第一、验证HTTP Referer字段
HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。
第二、使用验证码
关键操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF。但这种方法对用户不太友好。
第三、在请求地址中添加token并验证
CSRF攻击之所以成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于cookie中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。这种方法要比检查Referer要安全,token可以在用户登陆后产生并放于session中,然后在每次请求时把token从session中拿出,与请求中的token进行比对,但这种方法的难点在于如何把token以参数的形式加入请求。
对于get请求,token将附在请求地址之后,这样URL就变成:http://urlcsrftoken=tokenvalue。
对于post请求,要在form的最后加上<input
type="hidden" name="csrftoken" value="tokenvalue"/>,这样就把token以参数的形式加入请求了。
第四、在HTTP头中自定义属性并验证
这种方法也是使用token并进行验证,和上一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了上种方法在请求中加入token的不便;同时,通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站中去。
目 录 第1章 XSS初探 1 11 跨站脚本介绍 1 111 什么是XSS跨站脚本 2 112 XSS跨站脚本实例 4 113 XSS漏洞的危害 6 12 XSS的分类 8 121 反射型XSS 8 122 持久型XSS 10 13 XSS的简单发掘 12 131 搭建测试环境 12 132 发掘反射型的XSS 12 133 发掘持久型的XSS 15 14 XSS Cheat Sheet 18 15 XSS构造剖析 21 151 绕过XSS-Filter 22 152 利用字符编码 33 153 拆分跨站法 37 16 Shellcode的调用 39 161 动态调用远程JavaScript 40 162 使用windowlocationhash 41 163 XSS Downloader 41 164 备选存储技术 43 第2章 XSS利用方式剖析 45 21 Cookie窃取攻击剖析 45 211 Cookie基础介绍 46 212 Cookie会话攻击原理剖析 48 213 Cookie欺骗实例剖析 49 22 会话劫持剖析 51 221 了解Session机制 51 222 XSS实现权限提升 52 223 获取网站Webshell 55 23 网络钓鱼 57 231 XSS Phishing 57 232 XSS钓鱼的方式 59 233 高级钓鱼技术 60 24 XSS History Hack 63 241 链接样式和getComputedStyle() 64 242 JavaScript/CSS history hack 64 243 窃取搜索查询 65 25 客户端信息刺探 67 251 JavaScript实现端口扫描 67 252 截获剪贴板内容 68 253 获取客户端IP地址 70 26 其他恶意攻击剖析 71 261 网页挂马 71 262 DOS和DDOS 72 263 XSS Virus/Worm 73 第3章 XSS测试和工具剖析 75 31 Firebug 75 32 Tamper Data 80 33 Live HTTP Headers 82 34 Fiddler 84 35 XSS-Proxy 86 36 XSS Shell 90 37 AttackAPI 94 38 Anehta 98 第4章 发掘XSS漏洞 104 41 黑盒工具测试 104 42 黑盒手动测试 107 43 源代码安全审计 110 44 JavaScript代码分析 118 441 DOM简介 118 442 第三种XSS——DOM XSS 120 443 发掘基于DOM的XSS 123 45 发掘Flash XSS 126 46 巧用语言特性 129 461 PHP 4 phpinfo() XSS 130 462 $_SERVER[PHP_SELF] 131 463 变量覆盖 132 第5章 XSS Worm剖析 135 51 Web 20应用安全 135 511 改变世界的Web 20 135 512 浅谈Web 20的安全性 137 52 Ajax技术指南 138 521 使用Ajax 139 522 XMLHttpRequest对象 140 523 HTTP请求 142 524 HTTP响应 142 53 浏览器安全 145 531 沙箱 145 532 同源安全策略 146 54 XSS Worm介绍 147 541 蠕虫病毒剖析 147 542 XSS Worm攻击原理剖析 148 543 XSS Worm剖析 149 544 运用DOM技术 150 55 新浪微博蠕虫分析 153 第6章 Flash应用安全 156 61 Flash简介 156 611 Flash Player 与SWF 156 612 嵌入Flash文件 158 613 ActionScript语言 158 62 Flash安全模型 160 621 Flash安全沙箱 161 622 Cross Domain Policy 162 623 设置管理器 164 63 Flash客户端攻击剖析 165 631 getURL() & XSS 165 632 Cross Site Flashing 169 633 Flash参数型注入 171 634 Flash钓鱼剖析 173 64 利用Flash进行XSS攻击剖析 174 65 利用Flash进行CSRF 178 第7章 深入XSS原理 181 71 深入浅出CSRF 182 711 CSRF原理剖析 182 712 CSRF实例讲解剖析 185 713 CSRF的应用剖析 187 72 Hacking JSON 187 721 JSON概述 187 722 跨域JSON注入剖析 190 723 JSON Hijacking 191 73 HTTP Response Splitting 193 731 HTTP Header 193 732 CRLF Injection原理 195 733 校内网HRS案例 197 74 MHTML协议的安全 199 75 利用Data URIs进行XSS剖析 203 751 Data URIs介绍 203 752 Data URIs XSS 204 753 vBulletin Data URIs XSS 206 76 UTF-7 BOM XSS 206 77 浏览器插件安全 211 771 Flash后门 211 772 来自PDF的XSS 213 773 QuickTime XSS 217 78 特殊的XSS应用场景剖析 218 781 基于Cookie的XSS 218 782 来自RSS的XSS 220 783 应用软件中的XSS 222 79 浏览器差异 225 791 跨浏览器的不兼容性 226 792 IE嗅探机制与XSS 226 793 浏览器差异与XSS 228 710 字符集编码隐患 231 第8章 防御XSS攻击 234 81 使用XSS Filter 234 811 输入过滤 235 812 输出编码 237 813 黑名单和白名单 239 82 定制过滤策略 240 83 Web安全编码规范 244 84 防御DOM-Based XSS 248 85 其他防御方式 250 851 Anti_XSS 250 852 HttpOnly Cookie 252 853 Noscript 253 854 WAF 254 86 防御CSRF攻击 255 861 使用POST替代GET 256 862 检验HTTP Referer 257 863 验证码 258 864 使用Token 259 参考文献 262
1 XSS攻击原理
XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩展的含义)。XSS攻击涉及到三方:攻击者,用户,web server。用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了)。所以称为跨站脚本攻击。XSS可以分为反射型XSS和持久性XSS,还有DOM Based XSS。(一句话,XSS就是在用户的浏览器中执行攻击者自己定制的脚本。)
11 反射型XSS
反射性XSS,也就是非持久性XSS。用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器执行。一来一去,XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。
特点:
1> XSS攻击代码非持久性,也就是没有保存在web server中,而是出现在URL地址中;
2> 非持久性,那么攻击方式就不同了。一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;
12 持久型XSS
区别就是XSS恶意代码存储在web server中,这样,每一个访问特定网页的用户,都会被攻击。
特点:
1> XSS攻击代码存储于web server上;
2> 攻击者,一般是通过网站的留言、评论、博客、日志等等功能(所有能够向web server输入内容的地方),将攻击代码存储到web server上的;
有时持久性XSS和反射型XSS是同时使用的,比如先通过对一个攻击url进行编码(来绕过xss filter),然后提交该web server(存储在web server中), 然后用户在浏览页面时,如果点击该url,就会触发一个XSS攻击。当然用户点击该url时,也可能会触发一个CSRF(Cross site request forgery)攻击。
13 DOM based XSS
基于DOM的XSS,也就是web server不参与,仅仅涉及到浏览器的XSS。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生。过滤可以考虑采用esapi4js。
一、SQL 注入问题
SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
简单来说,就是将大部分 SQL 语句当参数传入系统中,从而获取系统中的数据。下面简单举例说明
系统中有这样一条信息 SQL 语句执行,分页查询所有用户,每页查询 20 条,并且根据指定字段进行排序,也就是说排序字段也是参数传递过来的
SQL 注入问题分析:
这样很简单的一句话 SQL,就可以把系统搞炸掉,这种方式可以实现删库跑路
以上语句会把整个 test 数据库所有内容都删掉
尽量用预编译机制,少用字符串拼接的方式传参,它是 sql 注入问题的根源。
有些特殊字符,比如:%作为 like 语句中的参数时,要对其进行转义处理。
需要对所有的异常情况进行捕获,切记接口直接返回异常信息,因为有些异常信息中包含了 sql 信息,包括:库名,表名,字段名等。攻击者拿着这些信息,就能通过 sql 注入随心所欲地攻击你的数据库了。目前比较主流的做法是,有个专门的网关服务,它统一暴露对外接口。用户请求接口时先经过它,再由它将请求转发给业务服务。这样做的好处是:能统一封装返回数据的返回体,并且如果出现异常,能返回统一的异常信息,隐藏敏感信息。此外还能做限流和权限控制。
使用 sqlMap 等待代码检测工具,它能检测 sql 注入漏洞。
需要对数据库 sql 的执行情况进行监控,有异常情况,及时邮件或短信提醒。
对生产环境的数据库建立单独的账号,只分配 DML 相关权限,且不能访问系统表。切勿在程序中直接使用管理员账号。
建立代码 review 机制,能找出部分隐藏的问题,提升代码质量。
对于不能使用预编译传参时,要么开启 druid 的 filter 防火墙,要么自己写代码逻辑过滤掉所有可能的注入关键字。
XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。
通常情况下,被用来盗用 Cookie、破坏页面结构、重定向到其他网站等
对用户输入的表单信息进行检测过滤
CSRF - Cross-Site Request Forgery - 跨站请求伪造:
攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,CORS - Cross Origin Resourse-Sharing - 跨站资源共享,恶意访问内网敏感资源。
有效的解决办法是通过多种条件屏蔽掉非法的请求,例如 HTTP 头、参数等:
防止大规模的恶意请求,niginx 反向代理可以配置请求频率,对 ip 做限制。nginx 可以很方便地做访问控制,特别是一些偶发性的大量恶意请求,需要屏蔽处理。
屏蔽 ip 地址
屏蔽 user-agent
屏蔽代理 ip
有两种情形会需要屏蔽代理 ip:一是代理 ip 访问,二是负载均衡(real-ip 请求负载均衡服务器,再代理给后端 server)
创建 XssAndSqlHttpServletRequestWrapper 包装器,这是实现 XSS 过滤的关键,在其内重写了 getParameter,getParameterValues,getHeader 等方法,对 http 请求内的参数进行了过滤
2021-11-24
跨站点请求伪造(Cross—Site Request Forgery),伪装来自受信任用户的请求来利用受信任的网站。简单来说CSRF就是获取凭证伪造身份去做事。
详细点说:假如A网站中存在CSRF漏洞,攻击者构造一个利用的POC,发送给受害者(在浏览器中处于登陆状态),让受害者点击POC,导致受害者在A网站上的的资料被修改或者钱财被转移。
所有用户进行操作的位置都可能存在CSRF,修改信息、密码、头像。
1利用浏览器中缓存的cookie
2没有一次型的token验证
1修改受害者的一些资料、转账或者改密码
2如果获取到应用程序中的管理员cookie,攻击者完全可以控制应用的所有数据和功能
1资源包含
资源包含是在大多数介绍CSRF概念的演示或基础课程中可能看到的类型。这种类型归结为控制HTML标签(例如<image>、<audio>、<video>、<object>、<script>等)所包含的资源的攻击者。如果攻击者能够影响URL被加载的话,包含远程资源的任何标签都可以完成攻击。
2基于表单
通常在正确使用安全的请求方式时看到。攻击者创建一个想要受害者提交的表单; 其包含一个JavaScript片段,强制受害者的浏览器提交。
3XMLHttpRequest
基于XHR的CSRF通常由于SOP而以XSS有效载荷的形式出现。没有跨域资源共享策略 (Cross-Origin Resource Sharing, CORS),XHR仅限于攻击者托管自己的有效载荷的原始请求。
通过CSRF-token或者验证码来检测用户提交
验证 Referer/Content-Type
对于用户修改删除等操作最好都使用POST操作
避免全站通用的Cookie,严格设置Cookie的域
https://shahmeeramircom/methods-to-bypass-csrf-protection-on-a-web-application-3198093f6599
1跨账户使用令牌
2替换相同的长度
3从请求中删除csrf token
4解码CSRF token
5通过HTML提取CSRF token
6只使用token的静态部分
参考链接: https://websecreadthedocsio/zh/latest/vuln/csrfhtml
上一篇 <<< Web常用攻击手段-Http请求防盗链
下一篇 >>> Web常用攻击手段-上传文件漏洞
CSRF攻击: (Cross Site Request Forgery, 跨站域请求伪造),黑客通过抓包工具分析令牌、cookie等信息并伪造客户请求。
就是大家熟知的钓鱼网站。
相关文章链接:
<<< Web常用攻击手段-XSS攻击
<<< Web常用攻击手段-SQL注入
<<< Web常用攻击手段-Http请求防盗链
<<< Web常用攻击手段-上传文件漏洞
<<< Web常用攻击手段-忘记密码
<<< Web常用攻击手段-其他漏洞
<<< 安全技术--数据加密/认证技术
<<< 安全技术--Https相关知识
<<< 安全技术--接口幂等性设计
<<< 安全框架--SpringSecurity
<<< 安全框架--JWT
<<< 安全框架--OAuth2
<<< 安全架构整体设计方案
CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。
防御手段:
验证请求来源地址;
关键操作添加验证码;
在请求地址添加 token 并验证。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)