CSRF简述及案例复现

CSRF简述及案例复现
最新回答
级尽妖娆

2021-03-28 01:35:04

CSRF(跨站请求伪造)是一种攻击者诱导受害者发送跨站请求,利用受害者已获取的凭证绕过验证,冒充用户执行操作的攻击方式。

  • CSRF简介CSRF(Cross-site request forgery)即跨站请求伪造,攻击者通过诱导受害者访问第三方网站,在该网站中构造恶意请求,利用受害者浏览器中已保存的被攻击网站的认证信息(如Cookie),以受害者身份向被攻击网站发送请求,执行非授权操作(如转账、修改密码、添加管理员等)。其核心在于利用用户与网站间的信任关系,无需窃取用户凭证即可完成攻击。

  • CSRF攻击流程以学校网站管理员A和攻击者B为例:

    准备阶段:B在自己的网站中嵌入学校后台添加用户的数据包(需提前知晓数据包结构)。

    诱导访问:B以“更新视频”等理由诱导A在维护期间访问其网站。

    发起攻击:若A未关闭学校后台页面,浏览器会携带已保存的Cookie自动发送请求,后台误认为是A的操作,从而创建test用户。

    结果:A在不知情的情况下被添加用户,攻击完成。

  • CSRF案例复现(OECMS v4.3漏洞)以OECMS v4.3系统为例,攻击步骤如下:

    步骤1:登录后台攻击者首先登录目标系统的管理员后台。

  • 步骤2:抓取添加管理员的数据包通过浏览器开发者工具或抓包工具(如Burp Suite),捕获“添加管理员”功能的HTTP请求数据包,记录请求参数(如用户名、密码、CSRF Token等)。

  • 步骤3:构造恶意HTML文件(POC)根据抓取的数据包结构,编写一个HTML文件,包含自动提交的表单或JavaScript代码,模拟添加管理员的请求。例如:
<html><body onload="document.forms[0].submit()"><form action="
http://target-site/admin/add_user"
method="POST"><input type="hidden" name="username" value="attacker"><input type="hidden" name="password" value="123456"><input type="submit" value="Submit request"></form></body></html>

攻击者可修改username和password字段为任意值。

  • 步骤4:诱导管理员访问恶意页面攻击者将HTML文件托管在自己的服务器上,并通过邮件、社交工程等方式诱导管理员访问该页面。若管理员未关闭后台页面,浏览器会自动携带Cookie发送请求。

  • 步骤5:攻击成功管理员访问恶意页面后,系统会弹出“添加成功”提示,返回用户列表可看到新创建的攻击者账号。

  • CSRF的防御措施

    验证Referer字段:检查请求的Referer是否来自本网站域名,但该方法可能被绕过(如攻击者通过数据URI或禁用Referer发送请求)。

    使用CSRF Token:在表单中添加随机生成的Token,服务端验证Token的正确性,确保请求来自合法页面。

    二次验证:对敏感操作(如转账、修改密码)要求用户再次输入密码或验证码,增加攻击难度。

    SameSite Cookie属性:设置Cookie的SameSite=Strict或SameSite=Lax,限制跨站请求携带Cookie,从根本上阻断CSRF攻击。