逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练 | 京东物流技术团队

发布者:京东云
发布于:2023-10-31 11:24

一、前言

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

二、CSRF漏洞介绍

1、CSRF漏洞的定义

 

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

 

2、CSRF主要攻击形式

 

① GET类型的CSRF

 

这类攻击非常简单,只需要一个HTTP请求:<img src=””>

 

② POST类型的CSRF

 

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

 

③ 链接类型的 CSRF

 

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

 

3、CSRF漏洞危害

 

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

 

① 修改资料

 

② 提交订单

 

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

三、CSRF漏洞原理分析

四、CSRF漏洞实例分析

1、GET类型的CSRF

 

 

通过请求“163K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0q4Q4x3X3f1I4x3e0k6Q4x3X3f1@1y4g2)9J5k6e0j5%4i4K6y4m8z5o6u0Q4x3V1k6$3N6h3I4Q4x3V1k6U0M7%4u0X3i4K6u0r3j5%4y4J5k6X3N6W2N6q4)9J5c8X3y4K6M7X3k6Q4y4h3k6Y4k6i4c8Q4y4h3k6W2k6r3W2@1i4K6u0W2M7r3S2H3i4K6y4r3M7$3g2^5i4K6y4p5i4K6t1#2c8e0g2Q4x3U0g2m8y4g2)9J5y4f1t1K6i4K6t1$3j5h3#2H3i4K6y4n7M7r3S2G2L8X3g2F1N6h3#2Q4x3@1b7I4z5e0R3&6z5o6V1^5x3o6l9H3x3q4)9J5y4X3q4E0M7q4)9K6b7X3q4V1k6q4)9K6c8q4)9J5y4f1f1#2i4K6t1#2z5p5y4Q4x3U0f1&6y4#2)9J5y4f1f1@1i4K6t1#2b7V1q4Q4x3U0g2m8b7#2)9J5y4X3q4E0M7q4)9K6b7X3g2E0j5h3W2D9i4K6y4p5y4e0f1#2i4K6t1#2y4o6m8I4M7g2)9J5k6h3y4G2L8g2)9J5y4X3q4E0M7q4)9K6b7Y4y4#2j5X3#2A6N6q4)9K6c8s2y4#2j5X3#2A6N6q4!0q4x3W2)9^5x3q4)9&6c8l9`.`.即可修改用户邮箱

 

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 转载请注明来源


声明:该文观点仅代表作者本人,转载请注明来自看雪