首页 > 其他分享 >逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练

逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练

时间:2023-10-31 11:45:51浏览次数:29  
标签:请求 用户 漏洞 CSRF 类型 POST 演练

一、前言

2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了兴趣,本系列文章旨在揭秘逻辑漏洞的范围、原理及预防措施,逐步提升大家的安全意识。第二篇选取了广为熟知的CSRF漏洞进行介绍。

二、CSRF漏洞介绍

1、CSRF漏洞的定义

跨站请求伪造(Cross-site request forgery,简称CSRF),攻击者利用受害者身份发起了HTTP请求,导致受害者在不知情的情况下进行了业务操作,如修改资料、提交订单、发布留言或评论等

2、CSRF主要攻击形式

① GET类型的CSRF

这类攻击非常简单,只需要一个HTTP请求:

② POST类型的CSRF

这种类型的 CSRF 利用起来通常使用的是一个自动提交的表单,访问问该页面后,表单会自动提交,相当于模拟用户完成了一次 POST 操作。可见这种类型的 CSRF 与第一种一样,都是模拟请求,所以后端接口也不能将安全寄托在仅允许 POST 请求上。

③ 链接类型的 CSRF

链接类型的CSRF并不常见,比起其他两种用户打开页面就中招的情况,这种类型需要用户点击链接才会触发,但本质上与前两种一样。这种类型通常是在论坛发布的图片中嵌入恶意链接,或者以广告的形式诱导用户中招,攻击者通常会以比较夸张的词语诱骗用户点击,例如:<a href=" taget="_blank"> 由于之前用户登录了信任的网站A,并且保存登录状态,只要用户主动访问这个页面,则表示攻击成功。

3、CSRF漏洞危害

CSRF漏洞可能导致在用户不知情的情况下进行业务操作:

① 修改资料

② 提交订单

③ 发布留言或评论(关键操作、增删改)等

三、CSRF漏洞原理分析

四、CSRF漏洞实例分析

1、GET类型的CSRF

通过请求“http://1.116.45.67:82/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=19898980000&add=%E5%8C%97%E4%BA%AC&email=555%40qq.com&submit=submit”即可修改用户邮箱

2、POST类型的CSRF

构造form表单类型的poc,请求addOrEdit接口新增字典成功。

五、CSRF漏洞防范意见

1、验证请求的Referer值

如果Referer是以⾃⼰的⽹站开头的域名,则说明该请求来⾃⽹站⾃⼰,是合法的。如果Referer是其他⽹站域名或空⽩,就有可能是CSRF攻击,那么服务器应拒绝该请求,但是此⽅法存在被绕过的可能。

2、请求中添加token并验证

CSRF攻击之所以能够成功,是因为攻击者可以伪造⽤户的请求,由此,抵御CSRF攻击的关键在于:在请求中放⼊攻击者不能伪造的信息。例如可以在HTTP请求中以参数的形式加⼊⼀个随机产⽣的token,并在服务器端验证token,如果请求中没有token或者token的内容不正确,则认为该请求可能是CSRF攻击从⽽拒绝该请求。

六、CSRF常用构造内容

1、GET类型:

2、POST类型的CSRF

表单类型 POC构造:

JSON类型 POC构造:

作者:京东物流 范文君

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

标签:请求,用户,漏洞,CSRF,类型,POST,演练
From: https://www.cnblogs.com/jingdongkeji/p/17799878.html

相关文章

  • php<= 7 . 4 . 21 development server源码泄露漏洞复现
    前言前一段时间在看羊城杯wp里了解到了这个漏洞,觉得挺有意思尝试复现一下(这里附上原漏洞地址https://blog.projectdiscovery.io/php-http-server-source-disclosure/版本PHP<=7.4.21漏洞成因通过php-S开起的内置WEB服务器存在源码泄露漏洞,可以将PHP文件作为静态文件......
  • CVE-2020-0022 蓝牙漏洞复现
    CVE-2020-0022参考连接:CVE-2020-0022蓝牙漏洞初探(上)一个bug引发的血案-安全客-安全资讯平台(anquanke.com)CVE-2020-0022“BlueFrag”漏洞分析(bestwing.me)Diff-3cb7149d8fed2d7d77ceaa95bf845224c4db3baf^!-platform/system/bt-GitatGoogle(googlesource.co......
  • MySQL系列:binlog日志详解(参数、操作、GTID、优化、故障演练)
    目录简介作用系统参数--log_bin--server_id--binlog_format--sync-binlog(双一标准)--gtid-mode(gtid)--enforce-gtid-consistency(gtid)--expire-logs-day(优化参数)--binlog_cache_size(优化参数)--max_binlog_cache_size(优化参数)--max_binlog_size(优化参数)sql_log_bin日志操作开启日......
  • [WEB安全] CSRF攻击和防御
    一、什么是CSRF  跨站请求伪造(英语:Cross-siterequestforgery),也被称为 one-clickattack 或者 sessionriding,通常缩写为 CSRF 或者 XSRF,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的......
  • 实战攻防演练-Linux写入ssh密钥,利用密钥登录
    前言密钥形式登录的原理是利用密钥生成器制作一对密钥,一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过SSH暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也......
  • java基础漏洞学习----SSTI漏洞
    java基础漏洞学习----SSTI漏洞Velocity模板注入Java中有以下这些常见的模板引擎:XMLTemplate,Velocity,CommonTemplate,FreeMarker,Smarty4j,TemplateEngine其中Velocity在Java中使用较多把以下内容用burpsuite的url编码#set($e="e");$e.getClass().forName("java.lang.Runti......
  • ctf中常见php漏洞
    PHP特性漏洞一.intval()函数---获取变量的整数值函数说明intintval(mixed$var[,int$base=10]):通过使用指定的进制base转换(默认是十进制),返回变量var的integer数值。intval()不能用于object,否则会产生E_NOTICE错误并返回1。如果base是0,则通过检测va......
  • java基础漏洞学习----整数溢出漏洞+硬编码漏洞+不安全的随机数生成器
    java基础漏洞学习----整数溢出漏洞+硬编码漏洞+不安全的随机数生成器整数溢出漏洞publicclassNumberLearning{publicstaticvoidmain(String[]args){System.out.println(Integer.MAX_VALUE+1);System.out.println(Integer.MIN_VALUE-1);}}......
  • java基础漏洞学习----SSRF漏洞
    java基础漏洞学习----SSRF漏洞JAVA的SSRF常见利用协议仅支持sun.net.www.protocol下所有的协议:http,https,file,ftp,mailto,jar及netdoc传入的URL必须和重定向后的URL协议一致,JAVA中的SSRF不能和PHP中一样使用gother协议来扩展攻击面常见的可以发起网络请求,并且会导致SSRF......
  • 用友反序列化漏洞综合
    用友NC序列化漏洞综合利用工具分享下载地址https://github.com/wgpsec/YongYouNcTooljava11以上的环境可使用集成了以下漏洞BshServletrcejsInvokerceDeleteServletcc6反序列化DownloadServletcc6反序列化FileReceiveServletcc6反序列化fsDownloadServletc......