DVWA---跨站请求伪造CSRF

什么是crsf

CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以站点会觉得这是真正的用户操作而去运行。
基本流程:用户在某网站A进行登录-------->身份验证成功,返回cookie给用户---------->攻击者构建一个网站F,诱使用户使用同一浏览器进入(前提:未退出网站A,一般都会有默认浏览器)------------->网站F收到用户请求后,返回恶意代码给用户,强制他访问网站A---------->用户浏览器在网站A上执行相关操作(以已经持有的cookie)。

8c366f794f544575adc6b47c724d27a3.png

dvwa中crsf的具体操作

low级别

攻击者:1337

受害者:admin

1.首先我们登录1337的账户,登录找到csrf,输入更改的密码123。

4bc0151983a04e4981ff23ed6a27e500.pngfe55ca6453764e2d97f8269f1a77a523.png

2.然后抓包,在action找到engagement tools,点击Generate csrf Poc。

34516ba315b94f7cbc89d64c82cb8d43.png

 3. 点击copy html。cdd444d3f29c4836b8510f2787161098.png

4.创建恶意网站。在phpstudy中创建网站,将刚刚复制的html,粘贴进去。

7c07f6d64ca9453396fb6294fd1fa9a3.png

 5.打开网站发现URL太长太奇怪了,需要缩短。我们用百度进行缩网址。

dfc0526d4e304470a7079802458b95f8.png

d9b1d7881c9d483a8efd4bc688ee2a51.png

 6.登录admin账户,点击刚刚创建的恶意网站。

c9b1b1c0ac604d2bad7e2a3ebfe562f8.png

38a998d9f84c45c39a19dd933fdabf88.png

 7.这样admin密码就被改了,但是受害者知道密码被改了,此刻退出去使用之前的密码,已经登录不上了。

08ffb9989d7e49f78b71ad7ce7d01199.png32c5297faffb48d6ba6b904a0233440c.png

medium级别

1.首先我们像low级别一样操作,这是报错说请求不正确。

1aa61164a18a4f41b9973ac2dc839d77.png

 2.我先后抓了一个报错和一个修改成功地包,发现多了一个referer的请求头。

f86b91a8ce58435fb5ac119f30655c21.png 0a9f0af95d754838900567400b5a631d.png

 3.于是我自己加了一个referer的请求头,发现可以了,但是受害者不可能自己加一个referer。

想知道有什么好方法可以绕过referer呢?

25f6dcfef42d4776b40c930eac8b03d8.png

 f84d4789911a4563874565c8d7c83842.png

 最后分析一下medium的源代码

中等级别的代码增加了 referer 判断:

if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false )

如果原网站和恶意网站不是来自同一个域的话就无法进行到循环内部,执行修改密码的操作。这个时候需要我们手动伪造 referer 来执行 CSRF 攻击。

high级别

可以发现High加入了token机制,用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。

1.话不多说先抓包,抓取token的值。

f601135b481a42cc84ff385f8a2a2cbe.png

 2.将包发到Repeater。send跑一下。发现第一次没问题,但在第二次发现302(临时重定向),可以简单的理解为该资源原本确实存在,但已经被临时改变了位置。

e1ce534ad253420da8b79ecb0d6876f4.png

 6f681a94b35747f595fc310614b458e9.png

 此时有俩方法:

1.BP抓Cookie

2.BP的插件

BP抓Cookie

我们先抓low的包,将其cookie替换到high的数据包,只有security的参数不同。发现密码更改成功了。

3b6554f56cdf4f75806073e41ed96f46.png2296142016404bacaf992442ee136e96.png

 BP的插件

我们还可以用bp的插件CSRF Token Tracker绕过token验证。

876b062e4bd0419aaf0f709ef9c53a0e.png

 在CSRF Token Tracker写入主机名,token字段,值。

12a6503de94f4d1cbba41680da02c47c.png

 Send跑一下,虽然token的值没有发生变化但是看CSRF Token Tracker里面的token值已经随机生成了,发现密码修改成功。

73efaefc380d449382016f95cfea8337.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值