token为什么能防止csrf_寻找CSRF漏洞的技巧

CSRF即跨站请求伪造,说的简单点,实际上就是攻击者伪造一个表单数据的URL链接,让用户去点击,从而达到我们获取数据的目的,当然,不止是获取数据,修改我们想要的密码、新增个管理员账户、上传个木马等,能达到我们的攻击目的就行。

在我做渗透测试工作的时候,通常探测CSRF漏洞也很简单,也算是个小技巧吧。抓取一个网站的POST请求,删除Referer字段(无Origin字段,有就删),进行重放即可,如果数据包任然能够正常响应,那么就有可能存在CSRF漏洞,为什么不需要删除Cookie呢,因为我们伪造这个链接的目的是让用户去点击,就是需要利用他们的cookie,而它作为一个用户的凭证,删除的话,那当然什么事情都做不了。

这里再对CSRF漏洞做下要求,有人说没有校验Referer字段,不就是可以伪造表单数据,存在CSRF漏洞了嘛,但是,我们找漏洞是需要有利用价值的,你不能随便伪造一个表单数据链接就可以,你伪造表单改变的数据你自己都不知道利用价值,那怎么行。所以你会看到提交的那些CSRF漏洞,大多数都是新增管理员、修改密码什么的这些有利用价值的。

在说一些细的点,除了上面这些,有些表单数据,它会通过Origin字段校验来防止CSRF,也有的你会看到URL上还有些部分Cookie字段,还有的会额外添加token字段,这些都是能防止CSRF漏洞有效手段。

说完寻找CSRF漏洞技巧之后,不来点CVE压压惊怎么行。本次复现漏洞是基于php环境的国产八哥BageCMS系统,漏洞编号CVE-2018-19560。

系统任然放在phpstudy里就行,安装这种东西,照着百度,跳过。我们进入八哥系统的后台,Burpsuite抓包,任意找一个POST传输方式的数据,然后发送到repeater里面重放,这里可以看到我删除了原本存在的Referer和Origin字段,记住,cookie字段无需删除,重放数据依然成功,这就说明极有可能存在CSRF漏洞。

1e9d3a9948e5770043aeea796cd2c2aa.png

好了,那么我们现在进入到有利用价值的后台修改密码页面,原本我的账户密码admin和passwd,现在我们修改密码为root,抓包,这里数据包不需要发送。

40505e688506f6ab4316b301f76e8df5.png

我们发送到repeater模块,我们删除Origin和Referer字段,我们发现表单数据响应依然成功,这里我们就可把它认作是一个CSRF漏洞了,通过这个漏洞达到可以更改用户账户密码的目的。

这里我们再直接展示下漏洞的利用,在刚repeater字段请求包鼠标右键有个集成工具Engagement tools里有个形成CSRF的POC,这里我们可以看下POC,它是将原本的POST数据包的数据以input标签方式的表单请求。密码值为root,类型为hidden隐藏属性也就是不展示,只有一个按钮,我们点击下面的Copy HTML按钮,将我们的POC复制放入a.txt文件里,更改后缀名为.html。

980fd33f4e4bc602666f9e1a6067391d.png

这里我们得到的.html文件实际上就是攻击者利用这个漏洞伪造的链接,也是用来引诱用户去点击这个伪造链接,用户在登录后台的情况下,我们用同个浏览器去打开这个HTML网页文件,点击按钮,这个就是我们伪造的URL链接,当然实际黑客不可能搞这么明显引诱用户去点击,人又不是傻子,肯定是经过精心构造让人去点的,这里只是演示,这里我们点击按钮后,页面展示修改成功字样。

09d9744c033edfc449be14c82a210c15.png
e902265d5d59607c1efaee0072815cb4.png

之后,我们验证用原密码passwd登录不进去,root才能登录进去,这就是因为你无意中点了这个按钮(明明就是有意的!),表单值属性都设未隐藏的,你的密码也是因为这个按钮更改,从而达到了黑客利用你自己的cookie去修改他想要的密码目的,这就是CSRF,即跨站请求伪造漏洞。

为什么网站要对Referer字段进行校验,这是为了防止你无意点击恶意链接从而做出更改敏感权限操作,为什么添加token字段,因为Referer有时也可能伪造,但是token字段你缺伪造不出来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值