在本节中,将解释什么是跨站请求伪造(CSRF),描述一些常见的CSRF漏洞示例,并解释如何防止CSRF攻击。
如何构建CSRF攻击?
手动创建CSRF漏洞利用所需的HTML可能很麻烦,尤其是在所需的请求包含大量参数或请求中有其他怪异的情况下。
构建CSRF漏洞利用的最简单的方法是使用一些自动化工具,例如Burp Suite中内置的CSRF PoC生成器:
●在Burp Suite中的任意位置选择要测试或利用的请求。
●在右键单击后,选择"Engagement tools"中的"Generate CSRF PoC"。
●Burp Suit将生成一些HTML来触发选定的请求(除了由受害者浏览器自动添加的cookie)。
●可以调整CSRF PoC生成器中的各种选项,以微调攻击的各个方面,可能需要在一些不寻常的情况下执行此操作以处理请求中的古怪功能。
●将生成的HTML复制到网页中,在登录到易受攻击网站的浏览器中查看,并测试是否成功发出了预期的请求以及是否发生了预期的操作。
场景试验-没有防御措施的CSRF漏洞:
https://portswigger.net/web-security/csrf/lab-no-defenses
场景说明:
这个试验场景的电子邮件更改功能易受到CSRF攻击。
试验目的:
要完成这个试验,需要制作一些使用CSRF攻击的HTML来更改查看者的电子邮件地址并将其上传到漏洞利用服务器,场景提供了一个可供使用的账号wiener:peter
攻击过程:
①打开页面后访问"My account",用提供的账号和密码进行登录后修改下邮箱。
②到Burp Suite中找到改邮箱的请求,右键点击后从菜单中选择"Generate CSRF PoC"
③在弹出的配置框中的"Options"中勾选"Include auto-submit script",随后点击"Regenerate"生成新的CSRF HTML,再点击"Copy HTML"
④打开"exploit server",把CSRF HTML粘贴到Body中,点击"Store",并发送给受害者,完成试验
试验小结:
这个试验非常简单,只是演示下CSRF的基本过程。这个场景中的CSRF跟反射型XSS攻击类似,也需要用户点击钓鱼页面请求到外部恶意网站后对易受攻击的网站发起攻击。
常见的CSRF漏洞
最有趣的CSRF漏洞是由于CSRF令牌验证中的错误引起的。
在前面的示例中,假设应用程序现在在更改用户电子邮件的请求中包含一个CSRF令牌:
这应该可以防止CSRF攻击,因为它违反了CSRF漏洞的必要条件:应用程序不再仅仅依赖于cookie进行会话处理,并且请求包含一个攻击者无法确定其值的参数。然后,有多种方法可以打破防御,这意味着应用程序仍然容易受到CSRF攻击。
取决于请求方法的CSRF令牌验证
某些应用程序在请求使用POST方式时会验证令牌,但在使用GET方法时跳过验证。
在这种情况下,攻击者可以切换到GET方法来绕过验证并进行CSRF攻击。
场景试验-令牌验证取决于请求方法的CSRF:
https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method
场景说明:
这个试验场景的电子邮件更改功能易受到CSRF攻击,它试图阻止CSRF攻击,但仅对某些类型的请求进行防御。
试验目的:
要完成这个试验,需要使用漏洞利用服务器托管一个HTML页面,该页面使用CSRF攻击来更改查看者的电子邮件地址,场景提供了一个可供使用的账号wiener:peter
攻击过程:
①打开页面后访问"My account",用提供的账号和密码进行登录后修改下邮箱。
②到Burp Suite中找到改邮箱的请求发送到Repeater,尝试修改了CSRF后发送请求,可以看到请求会被拒绝
③右键点击这个请求,选择"Change request method"将请求修改成GET模式,请求发送后发现不再验证CSRF令牌,可以修改成功
④还是这个请求,右键点击后从菜单中选择"Generate CSRF PoC"
⑤在弹出的配置框中的"Options"中勾选"Include auto-submit script",随后点击"Regenerate"生成新的CSRF HTML,再点击"Copy HTML"
⑥打开"exploit server",把CSRF HTML粘贴到Body中,点击"Store",并发送给受害者,完成试验
CSRF令牌的验证取决于令牌是否存在
某些应用程序在令牌存在时正确验证令牌,但如果省略令牌则跳过验证。
在这种情况下,攻击者可以删除包含令牌的整个参数(不仅仅是它的值)以绕过验证并进行CSRF攻击。
场景试验-令牌验证取决令牌是否存在的CSRF:
https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-token-being-present
场景说明:
这个试验场景的电子邮件更改功能易受到CSRF攻击。
试验目的:
要完成这个试验,需要使用漏洞利用服务器托管一个HTML页面,该页面使用CSRF攻击来更改查看者的电子邮件地址,场景提供了一个可供使用的账号wiener:peter
攻击过程:
①打开页面后访问"My account",用提供的账号和密码进行登录后修改下邮箱。
②到Burp Suite中找到改邮箱的请求发送到Repeater,尝试修改了CSRF后发送请求,可以看到请求会被拒绝。
③将这个请求的整个CSRF参数全部删除后再次发送,可以看到请求被接收了
④还是这个请求,右键点击后从菜单中选择"Emgagement tools"中的"Generate CSRF PoC"。
⑤在弹出的配置框中的"Options"中勾选"Include auto-submit script",随后点击"Regenerate"生成新的CSRF HTML,再点击"Copy HTML"
⑥打开"exploit server",把CSRF HTML粘贴到Body中,点击"Store",并发送给受害者,完成试验
SQL注入攻击-检索隐藏的数据
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):跨站请求伪造(CSRF)-攻击示例(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论